ReportRendererTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 233
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 2
dl 0
loc 233
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 17 1
A testSimple() 0 52 1
B testOnelevel() 0 57 1
B testMultilevel() 0 96 1
1
<?php
2
3
class ReportRendererTest extends \PHPUnit_Framework_TestCase
4
{
5
6
    private $rendererRepository;
7
    private $logger;
8
9
    protected function setUp()
10
    {
11
        $this->rendererRepository = new \PHPExcelReport\Report\RendererRepository([
12
            //  'LEVEL1' => \PHPExcelReport\Report\Renderer\RendererInterface::ORIENTATION_HORIZONTAL
13
        ]);
14
        $this->rendererRepository->add(
15
            \PHPExcelReport\Report\Renderer\RendererInterface::ORIENTATION_VERTICAL,
16
            new \PHPExcelReport\Report\Renderer\VerticalRenderer()
17
        );
18
        $this->rendererRepository->add(
19
            \PHPExcelReport\Report\Renderer\RendererInterface::ORIENTATION_HORIZONTAL,
20
            new \PHPExcelReport\Report\Renderer\HorizontalRenderer()
21
        );
22
23
        $this->logger = new \Monolog\Logger('rendertest');
24
        $this->logger->pushHandler(new \Monolog\Handler\StreamHandler('php://stdout', \Monolog\Logger::DEBUG));
25
    }
26
27
    public function testSimple()
28
    {
29
        $data = [
30
            'HEADER' => [
31
                'HEADER_CAPTION' => 'I am Header'
32
            ],
33
            'ROOT' => [
34
                'ROOT_CAPTION' => 'I am Root'
35
            ],
36
            'FOOTER' => [
37
                'FOOTER_CAPTION' => 'I am Footer'
38
            ]
39
        ];
40
41
        $namedRanges = [
42
            'HEADER' => Array(
43
                0 => Array(
44
                    0 => 'HEADER {{HEADER_CAPTION}}',
45
                ),
46
            ),
47
            'ROOT' => Array(
48
                1 => Array(
49
                    0 => 'ROOT {{ROOT_CAPTION}}',
50
                ),
51
            ),
52
            'FOOTER' => Array(
53
                2 => Array(
54
                    0 => 'FOOTER {{FOOTER_CAPTION}}',
55
                ),
56
            ),
57
        ];
58
59
        $renderer = new \PHPExcelReport\Report\ReportRenderer(
60
            $this->rendererRepository,
61
            new \PHPExcelReport\Report\Compiler\ReportDataCompiler($this->logger),
62
            $namedRanges,
63
            $this->logger);
64
65
        $canvas = $renderer->render($data);
66
67
        $this->assertEquals([
68
            0 => [
69
                0 => 'HEADER I am Header'
70
            ],
71
            1 => [
72
                0 => 'ROOT I am Root'
73
            ],
74
            2 => [
75
                0 => 'FOOTER I am Footer'
76
            ]
77
        ], $canvas->getArrayCopy());
78
    }
79
80
    public function testOnelevel()
81
    {
82
        $data = [
83
            'ROOT' => [
84
                'ROOT_CAPTION' => 'TEXT',
85
                'LEVEL1' => [
86
                    [
87
                        'LEVEL1_CAPTION' => 'I am Level 1'
88
                    ]
89
                ]
90
            ]
91
        ];
92
93
        $namedRanges = [
94
            'ROOT' => Array(
95
                0 => Array(
96
                    0 => 'ROOT',
97
                    1 => '{{ROOT_CAPTION}}',
98
                ),
99
                1 => Array(
100
                    0 => 'LEVEL1',
101
                    1 => '{{LEVEL1_CAPTION}}',
102
                ),
103
                2 => Array(
104
                    0 => 'ROOT_FOOTER',
105
                )
106
            ),
107
            'LEVEL1' => Array(
108
                1 => Array(
109
                    0 => 'LEVEL1',
110
                    1 => '{{LEVEL1_CAPTION}}',
111
                )
112
            )
113
        ];
114
115
        $renderer = new \PHPExcelReport\Report\ReportRenderer(
116
            $this->rendererRepository,
117
            new \PHPExcelReport\Report\Compiler\ReportDataCompiler($this->logger),
118
            $namedRanges,
119
            $this->logger);
120
121
        $canvas = $renderer->render($data);
122
123
        $this->assertEquals([
124
            0 => [
125
                0 => 'ROOT',
126
                1 => 'TEXT'
127
            ],
128
            1 => [
129
                0 => 'LEVEL1',
130
                1 => 'I am Level 1'
131
            ],
132
            2 => [
133
                0 => 'ROOT_FOOTER'
134
            ]
135
        ], $canvas->getArrayCopy());
136
    }
137
138
    public function testMultilevel()
139
    {
140
        $data = [
141
            'ROOT' => [
142
                'ROOT_CAPTION' => 'TEXT',
143
                'LEVEL1' => [
144
                    [
145
                        'LEVEL1_CAPTION' => '1',
146
                        'LEVEL2' => [
147
                            [
148
                                'LEVEL2_CAPTION' => '1.1'
149
                            ]
150
                        ]
151
                    ],
152
                    [
153
                        'LEVEL1_CAPTION' => '2',
154
                        'LEVEL2' => [
155
                            [
156
                                'LEVEL2_CAPTION' => '2.1'
157
                            ]
158
                        ]
159
                    ]
160
                ]
161
            ]
162
        ];
163
164
        $namedRanges = [
165
            'ROOT' => Array(
166
                0 => Array(
167
                    0 => 'ROOT',
168
                    1 => '{{ROOT_CAPTION}}',
169
                ),
170
                1 => Array(
171
                    0 => 'LEVEL1',
172
                    1 => '{{LEVEL1_CAPTION}}',
173
                ),
174
                2 => Array(
175
                    0 => 'LEVEL2-R',
176
                    1 => '{{LEVEL2_CAPTION}}',
177
                ),
178
                3 => Array(
179
                    0 => 'ROOT_FOOTER',
180
                )
181
            ),
182
            'LEVEL1' => Array(
183
                1 => Array(
184
                    0 => 'LEVEL1',
185
                    1 => '{{LEVEL1_CAPTION}}',
186
                ),
187
                2 => Array(
188
                    0 => 'LEVEL2-1',
189
                    1 => '{{LEVEL2_CAPTION}}',
190
                )
191
            ),
192
            'LEVEL2' => Array(
193
                2 => Array(
194
                    0 => 'LEVEL2',
195
                    1 => '{{LEVEL2_CAPTION}}',
196
                )
197
            )
198
        ];
199
200
        $renderer = new \PHPExcelReport\Report\ReportRenderer(
201
            $this->rendererRepository,
202
            new \PHPExcelReport\Report\Compiler\ReportDataCompiler($this->logger),
203
            $namedRanges,
204
            $this->logger);
205
206
        $canvas = $renderer->render($data);
207
208
        $this->assertEquals([
209
            0 => [
210
                0 => 'ROOT',
211
                1 => 'TEXT'
212
            ],
213
            1 => [
214
                0 => 'LEVEL1',
215
                1 => '1'
216
            ],
217
            2 => [
218
                0 => 'LEVEL2',
219
                1 => '1.1'
220
            ],
221
            3 => [
222
                0 => 'LEVEL1',
223
                1 => '2'
224
            ],
225
            4 => [
226
                0 => 'LEVEL2',
227
                1 => '2.1'
228
            ],
229
            5 => [
230
                0 => 'ROOT_FOOTER'
231
            ]
232
        ], $canvas->getArrayCopy());
233
    }
234
235
}
236