Completed
Push — refactor-04-parser-tests ( dc4950...bd4663 )
by John
06:06
created

testGetFieldRendererGraphicPrimitive()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 27
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 27
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 19
nc 1
nop 0
1
<?php
2
3
namespace Graze\CiffRenderer\Test\Unit\Renderer\FieldRenderer;
4
5
use Mockery as m;
6
use Graze\CiffRenderer\Test\SimpleXmlElementChainMocker;
7
use Graze\CiffRenderer\Renderer\FieldRenderer\GraphicPrimitive\GraphicPrimitiveFactory;
8
use Graze\CiffRenderer\Parser\FieldParserRegistry;
9
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererFactory;
10
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererInterface;
11
use Graze\CiffRenderer\Parser\FieldParser\FieldParserInterface;
12
use Graze\CiffRenderer\Parser\FieldParser\FieldParserFixedText;
13
use Graze\CiffRenderer\Parser\FieldParser\FieldParserBarcode;
14
use Graze\CiffRenderer\Parser\FieldParser\FieldParserStaticGraphic;
15
use Graze\CiffRenderer\Parser\FieldParser\FieldParserGraphicPrimitive;
16
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererFixedText;
17
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererBarcode;
18
use Graze\CiffRenderer\Renderer\FieldRenderer\FieldRendererStaticGraphic;
19
use Graze\CiffRenderer\Renderer\FieldRenderer\GraphicPrimitive\GraphicPrimitiveInterface;
20
use Graze\CiffRenderer\Test\SimpleXmlElementMock;
21
22
class FieldRendererFactoryTest extends \PHPUnit_Framework_TestCase
23
{
24
    /**
25
     * @dataProvider dataProviderGetFieldRenderer
26
     * @param FieldParserInterface $parser
27
     * @param string $rendererExpected
28
     */
29
    public function testGetFieldRenderer(FieldParserInterface $parser, $rendererExpected)
30
    {
31
        $graphicPrimitiveFactory = m::mock(GraphicPrimitiveFactory::class);
0 ignored issues
show
Comprehensibility Naming introduced by
The variable name $graphicPrimitiveFactory exceeds the maximum configured length of 20.

Very long variable names usually make code harder to read. It is therefore recommended not to make variable names too verbose.

Loading history...
32
        $fieldRendererFactory = new FieldRendererFactory($graphicPrimitiveFactory);
33
34
        $rendererActual = $fieldRendererFactory->getFieldRenderer($parser);
35
        $this->assertInstanceOf($rendererExpected, $rendererActual);
36
    }
37
38
    /**
39
     * @return array
40
     */
41
    public function dataProviderGetFieldRenderer()
42
    {
43
        return [
44
            [new FieldParserBarcode(), FieldRendererBarcode::class],
45
            [new FieldParserStaticGraphic(), FieldRendererStaticGraphic::class],
46
            [new FieldParserFixedText(), FieldRendererFixedText::class]
47
        ];
48
    }
49
50
    public function testGetFieldRendererGraphicPrimitive()
51
    {
52
        $rendererExpected = m::mock(FieldRendererInterface::class);
53
        $shape = 'i am shape';
54
        $graphicPrimitiveFactory = m::mock(GraphicPrimitiveFactory::class)
0 ignored issues
show
Comprehensibility Naming introduced by
The variable name $graphicPrimitiveFactory exceeds the maximum configured length of 20.

Very long variable names usually make code harder to read. It is therefore recommended not to make variable names too verbose.

Loading history...
55
            ->shouldReceive('getFieldRenderer')
56
            ->with($shape)
57
            ->andReturn($rendererExpected)
58
            ->once()
59
            ->getMock();
60
        $fieldRendererFactory = new FieldRendererFactory($graphicPrimitiveFactory);
61
62
        $fieldParserRegistry = m::mock(FieldParserRegistry::class)
63
            ->shouldReceive('addParser')
64
            ->getMock();
65
66
        // have to pass actual parser as matching is done on class name
67
        $parser = new FieldParserGraphicPrimitive();
68
69
        $simpleXmlElement =
70
            SimpleXmlElementChainMocker::addChain(['xmlField', 'Graphic', 'Primitive', 'Shape'], $shape);
71
72
        $parser->parse($fieldParserRegistry, $simpleXmlElement, $simpleXmlElement, 1);
73
74
        $rendererActual = $fieldRendererFactory->getFieldRenderer($parser);
75
        $this->assertEquals($rendererExpected, $rendererActual);
76
    }
77
}
78