Completed
Push — master ( 1f4ad9...320f5c )
by John
03:15
created

testGetFieldRendererGraphicPrimitive()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 18
nc 1
nop 0
dl 0
loc 25
rs 9.6666
c 0
b 0
f 0
1
<?php
2
3
namespace Graze\CiffRenderer\Test\Unit\Renderer\FieldRenderer;
4
5
use Mockery as m;
6
use Graze\CiffRenderer\Renderer\FieldRenderer\GraphicPrimitive\GraphicPrimitiveFactory;
7
use Graze\CiffRenderer\Parser\FieldParserRegistry;
8
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererFactory;
9
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererInterface;
10
use Graze\CiffRenderer\Parser\FieldParser\FieldParserInterface;
11
use Graze\CiffRenderer\Parser\FieldParser\FieldParserFixedText;
12
use Graze\CiffRenderer\Parser\FieldParser\FieldParserBarcode;
13
use Graze\CiffRenderer\Parser\FieldParser\FieldParserStaticGraphic;
14
use Graze\CiffRenderer\Parser\FieldParser\FieldParserGraphicPrimitive;
15
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererFixedText;
16
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererBarcode;
17
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererStaticGraphic;
18
use Graze\CiffRenderer\Renderer\FieldRenderer\GraphicPrimitive\GraphicPrimitiveInterface;
0 ignored issues
show
Bug introduced by
The type Graze\CiffRenderer\Rende...aphicPrimitiveInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
19
20
class FieldRendererFactoryTest extends \PHPUnit_Framework_TestCase
21
{
22
    /**
23
     * @dataProvider dataProviderGetFieldRenderer
24
     * @param FieldParserInterface $parser
25
     * @param string $rendererExpected
26
     */
27
    public function testGetFieldRenderer(FieldParserInterface $parser, $rendererExpected)
28
    {
29
        $graphicPrimitiveFactory = m::mock(GraphicPrimitiveFactory::class);
30
        $fieldRendererFactory = new FieldRendererFactory($graphicPrimitiveFactory);
0 ignored issues
show
Bug introduced by
$graphicPrimitiveFactory of type Mockery\MockInterface is incompatible with the type Graze\CiffRenderer\Rende...GraphicPrimitiveFactory expected by parameter $graphicPrimitiveFactory of Graze\CiffRenderer\Rende...rFactory::__construct(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

30
        $fieldRendererFactory = new FieldRendererFactory(/** @scrutinizer ignore-type */ $graphicPrimitiveFactory);
Loading history...
31
32
        $rendererActual = $fieldRendererFactory->getFieldRenderer($parser);
33
        $this->assertInstanceOf($rendererExpected, $rendererActual);
34
    }
35
36
    /**
37
     * @return array
38
     */
39
    public function dataProviderGetFieldRenderer()
40
    {
41
        return [
42
            [new FieldParserBarcode(), FieldRendererBarcode::class],
43
            [new FieldParserStaticGraphic(), FieldRendererStaticGraphic::class],
44
            [new FieldParserFixedText(), FieldRendererFixedText::class]
45
        ];
46
    }
47
48
    public function testGetFieldRendererGraphicPrimitive()
49
    {
50
        $rendererExpected = m::mock(FieldRendererInterface::class);
51
        $shape = 'i am shape';
52
        $graphicPrimitiveFactory = m::mock(GraphicPrimitiveFactory::class)
53
            ->shouldReceive('getFieldRenderer')
0 ignored issues
show
Unused Code introduced by
The call to Mockery\MockInterface::shouldReceive() has too many arguments starting with 'getFieldRenderer'. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

53
            ->/** @scrutinizer ignore-call */ shouldReceive('getFieldRenderer')

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
54
            ->with($shape)
55
            ->andReturn($rendererExpected)
56
            ->once()
57
            ->getMock();
58
        $fieldRendererFactory = new FieldRendererFactory($graphicPrimitiveFactory);
0 ignored issues
show
Bug introduced by
$graphicPrimitiveFactory of type Mockery\MockInterface is incompatible with the type Graze\CiffRenderer\Rende...GraphicPrimitiveFactory expected by parameter $graphicPrimitiveFactory of Graze\CiffRenderer\Rende...rFactory::__construct(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

58
        $fieldRendererFactory = new FieldRendererFactory(/** @scrutinizer ignore-type */ $graphicPrimitiveFactory);
Loading history...
59
60
        $fieldParserRegistry = m::mock(FieldParserRegistry::class)
61
            ->shouldReceive('addParser')
62
            ->getMock();
63
64
        // have to pass actual parser as matching is done on class name
65
        $xml = sprintf('<xml><Graphic><Primitive><Shape>%s</Shape></Primitive></Graphic></xml>', $shape);
66
        $simpleXmlElement = new \SimpleXMLElement($xml);
67
68
        $parser = new FieldParserGraphicPrimitive();
69
        $parser->parse($fieldParserRegistry, $simpleXmlElement, new \SimpleXmlElement('<xml/>'), 1);
0 ignored issues
show
Bug introduced by
$fieldParserRegistry of type Mockery\MockInterface is incompatible with the type Graze\CiffRenderer\Parser\FieldParserRegistry expected by parameter $fieldParserRegistry of Graze\CiffRenderer\Parse...actFieldParser::parse(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

69
        $parser->parse(/** @scrutinizer ignore-type */ $fieldParserRegistry, $simpleXmlElement, new \SimpleXmlElement('<xml/>'), 1);
Loading history...
70
71
        $rendererActual = $fieldRendererFactory->getFieldRenderer($parser);
72
        $this->assertEquals($rendererExpected, $rendererActual);
73
    }
74
}
75