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

FieldRendererFactoryTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 10

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 10
dl 0
loc 56
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetFieldRenderer() 0 8 1
A dataProviderGetFieldRenderer() 0 8 1
B testGetFieldRendererGraphicPrimitive() 0 27 1
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