Completed
Branch master (4d68bf)
by John
02:46
created

FieldParserBarcodeTest::getXmlField()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 31

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 31
nc 1
nop 0
dl 0
loc 4
rs 9.424
c 0
b 0
f 0
1
<?php
2
3
namespace Graze\CiffRenderer\Test\Parser\FieldParser;
4
5
use Mockery as m;
6
use Graze\CiffRenderer\Test\AbstractFieldParserTest;
7
use Graze\CiffRenderer\BarcodeGenerator\BarcodeGeneratorFactory;
8
use Graze\CiffRenderer\BarcodeGenerator\BarcodeGeneratorInterface;
9
use Graze\CiffRenderer\Parser\FieldParser\FieldParserBarcode;
10
use \SimpleXMLElement;
11
12
class FieldParserBarcodeTest extends AbstractFieldParserTest
13
{
14
    /**
15
     * @var BarcodeGeneratorFactory
16
     */
17
    private $barcodeGeneratorFactory;
18
19
    public function setUp()
20
    {
21
        $this->barcodeGeneratorFactory = m::mock(BarcodeGeneratorFactory::class);
22
23
        parent::setUp();
24
    }
25
26
    /**
27
     * @return SimpleXMLElement
28
     */
29
    private function getXmlField()
30
    {
31
        return new SimpleXMLElement(
32
            '<Field Name="i am field name">
33
                <FldType>Barcode</FldType>
34
                <CLSID>{7A4AA4CF-F5CD-11D4-8DAE-0050DAFE8A9F}</CLSID>
35
                <Inverse>1</Inverse>
36
                <X>4200</X>
37
                <Y>250</Y>
38
                <W>3775</W>
39
                <H>450</H>
40
                <Ln>1</Ln>
41
                <CalcData><![CDATA[0501234567890]]></CalcData>
42
                <Data>
43
                    <Object>
44
                        <DataType>5</DataType>
45
                        <Default><![CDATA[30]]></Default>
46
                        <SrcField SrcFieldName="merge_field_name"/>
47
                    </Object>
48
                </Data>
49
                <Barcode>
50
                    <BcH>450</BcH>
51
                    <HR>
52
                        <HRFont>
53
                            <Family>DontCare</Family>
54
                            <Pitch>33</Pitch>
55
                        </HRFont>
56
                    </HR>
57
                    <CheckDigit>1</CheckDigit>
58
                    <EAN13/>
59
                </Barcode>
60
                <Orientation>90</Orientation>
61
            </Field>'
62
        );
63
    }
64
65
    /**
66
     * @return FieldParserBarcode
67
     */
68
    protected function getParser()
69
    {
70
        if (!$this->parser) {
71
            $this->parser = new FieldParserBarcode(
72
                $this->barcodeGeneratorFactory,
73
                $this->fieldParserRegistry,
74
                $this->xmlHeader,
75
                $this->getXmlField(),
76
                $this->scale
77
            );
78
        }
79
80
        return $this->parser;
81
    }
82
83
    public function testGetFontSize()
84
    {
85
        $size = 33;
86
        $this->assertEquals($size, $this->parser->getFontSize());
87
    }
88
89
    public function testGetOrientation()
90
    {
91
        $orientation = 90;
92
        $this->assertEquals($orientation, $this->parser->getOrientation());
93
    }
94
95
    public function testGetText()
96
    {
97
        $mergedText = 'i am erged text';
98
        $barcodeText = 'i am barcode text';
99
100
        $barcodeGenerator = m::mock(BarcodeGeneratorInterface::class)
101
            ->shouldReceive('generate')
102
            ->with($mergedText)
103
            ->andReturn($barcodeText)
104
            ->once()
105
            ->getMock();
106
107
        $this->barcodeGeneratorFactory
108
            ->shouldReceive('getGenerator')
109
            ->andReturn($barcodeGenerator)
110
            ->once()
111
            ->getMock();
112
113
        // barcode is a merge field so text will be fetched from other parsers, mock them
114
        $parserMergeField = m::mock(FieldParserInterface::class)
115
            ->shouldReceive('getText')
116
            ->withNoArgs()
117
            ->andReturn($mergedText)
118
            ->once()
119
            ->getMock();
120
121
        $this->fieldParserRegistry
122
            ->shouldReceive('getParser')
123
            ->with('merge_field_name')
124
            ->andReturn($parserMergeField)
125
            ->once()
126
            ->getMock();
127
128
        $this->assertEquals($barcodeText, $this->parser->getText());
129
    }
130
131
    public function testGetIsInverse()
132
    {
133
        $isInverse = true;
134
        $this->assertEquals($isInverse, $this->parser->getIsInverse());
135
    }
136
}
137