Completed
Pull Request — master (#19)
by John
05:56 queued 03:42
created

testGetFieldRendererGraphicPrimitive()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 26
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\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);
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)
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