Completed
Pull Request — master (#18)
by John
05:06 queued 03:09
created

FieldRendererFactoryTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 9

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 9
dl 0
loc 55
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 26 1
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;
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);
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...
30
        $fieldRendererFactory = new FieldRendererFactory($graphicPrimitiveFactory);
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)
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...
53
            ->shouldReceive('getFieldRenderer')
54
            ->with($shape)
55
            ->andReturn($rendererExpected)
56
            ->once()
57
            ->getMock();
58
        $fieldRendererFactory = new FieldRendererFactory($graphicPrimitiveFactory);
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);
70
71
        $rendererActual = $fieldRendererFactory->getFieldRenderer($parser);
72
        $this->assertEquals($rendererExpected, $rendererActual);
73
    }
74
}
75