@@ -114,4 +114,96 @@ public function testInsertTotals()
114
114
115
115
$ this ->assertSame ($ page , $ actual );
116
116
}
117
+
118
+ /**
119
+ * Test for the multiline text will be correctly wrapped between multiple pages
120
+ *
121
+ * @return void
122
+ * @throws \ReflectionException
123
+ */
124
+ public function testDrawLineBlocks ()
125
+ {
126
+ // Setup constructor dependencies
127
+ $ paymentData = $ this ->createMock (Data::class);
128
+ $ string = $ this ->createMock (StringUtils::class);
129
+ $ scopeConfig = $ this ->getMockForAbstractClass (ScopeConfigInterface::class);
130
+ $ filesystem = $ this ->createMock (Filesystem::class);
131
+ $ pdfConfig = $ this ->createMock (Config::class);
132
+ $ pdfTotalFactory = $ this ->createMock (Factory::class);
133
+ $ pdfItemsFactory = $ this ->createMock (ItemsFactory::class);
134
+ $ localeMock = $ this ->getMockForAbstractClass (TimezoneInterface::class);
135
+ $ translate = $ this ->getMockForAbstractClass (StateInterface::class);
136
+ $ addressRenderer = $ this ->createMock (Renderer::class);
137
+
138
+ $ abstractPdfMock = $ this ->getMockForAbstractClass (
139
+ AbstractPdf::class,
140
+ [
141
+ $ paymentData ,
142
+ $ string ,
143
+ $ scopeConfig ,
144
+ $ filesystem ,
145
+ $ pdfConfig ,
146
+ $ pdfTotalFactory ,
147
+ $ pdfItemsFactory ,
148
+ $ localeMock ,
149
+ $ translate ,
150
+ $ addressRenderer
151
+ ],
152
+ '' ,
153
+ true ,
154
+ false ,
155
+ true ,
156
+ ['_setFontRegular ' , '_getPdf ' ]
157
+ );
158
+
159
+ $ page = $ this ->createMock (\Zend_Pdf_Page::class);
160
+ $ zendFont = $ this ->createMock (\Zend_Pdf_Font::class);
161
+ $ zendPdf = $ this ->createMock (\Zend_Pdf::class);
162
+
163
+ // Make sure that the newPage will be called 3 times to correctly break 200 lines into pages
164
+ $ zendPdf ->expects ($ this ->exactly (3 ))->method ('newPage ' )->willReturn ($ page );
165
+
166
+ $ abstractPdfMock ->expects ($ this ->once ())->method ('_setFontRegular ' )->willReturn ($ zendFont );
167
+ $ abstractPdfMock ->expects ($ this ->any ())->method ('_getPdf ' )->willReturn ($ zendPdf );
168
+
169
+ $ reflectionMethod = new \ReflectionMethod (AbstractPdf::class, 'drawLineBlocks ' );
170
+
171
+ $ drawBlockLineData = $ this ->generateMultilineDrawBlock (200 );
172
+ $ pageSettings = [
173
+ 'table_header ' => true
174
+ ];
175
+
176
+ $ reflectionMethod ->invoke ($ abstractPdfMock , $ page , $ drawBlockLineData , $ pageSettings );
177
+ }
178
+
179
+ /**
180
+ * Generate the array for multiline block
181
+ *
182
+ * @param int $numberOfLines
183
+ * @return array[]
184
+ */
185
+ private function generateMultilineDrawBlock (int $ numberOfLines ): array
186
+ {
187
+ $ lines = [];
188
+ for ($ x = 0 ; $ x < $ numberOfLines ; $ x ++) {
189
+ $ lines [] = $ x ;
190
+ }
191
+
192
+ $ block = [
193
+ [
194
+ 'lines ' =>
195
+ [
196
+ [
197
+ [
198
+ 'text ' => $ lines ,
199
+ 'feed ' => 40
200
+ ]
201
+ ]
202
+ ],
203
+ 'shift ' => 5
204
+ ]
205
+ ];
206
+
207
+ return $ block ;
208
+ }
117
209
}
0 commit comments