@@ -131,6 +131,126 @@ def testReportSectionLayout(self):
131
131
r .setBody (body )
132
132
self .assertEqual (r .body (), body )
133
133
134
+ def testIteration (self ):
135
+ p = QgsProject ()
136
+ r = QgsReport ()
137
+
138
+ # empty report
139
+ self .assertTrue (r .beginRender ())
140
+ self .assertFalse (r .next ())
141
+
142
+ # add a header
143
+ r .setHeaderEnabled (True )
144
+ report_header = QgsLayout (p )
145
+ r .setHeader (report_header )
146
+
147
+ self .assertTrue (r .beginRender ())
148
+ self .assertTrue (r .next ())
149
+ self .assertEqual (r .layout (), report_header )
150
+ self .assertFalse (r .next ())
151
+
152
+ # add a footer
153
+ r .setFooterEnabled (True )
154
+ report_footer = QgsLayout (p )
155
+ r .setFooter (report_footer )
156
+
157
+ self .assertTrue (r .beginRender ())
158
+ self .assertTrue (r .next ())
159
+ self .assertEqual (r .layout (), report_header )
160
+ self .assertTrue (r .next ())
161
+ self .assertEqual (r .layout (), report_footer )
162
+ self .assertFalse (r .next ())
163
+
164
+ # add a child
165
+ child1 = QgsReportSectionLayout ()
166
+ child1_body = QgsLayout (p )
167
+ child1 .setBody (child1_body )
168
+ r .appendChild (child1 )
169
+ self .assertTrue (r .beginRender ())
170
+ self .assertTrue (r .next ())
171
+ self .assertEqual (r .layout (), report_header )
172
+ self .assertTrue (r .next ())
173
+ self .assertEqual (r .layout (), child1_body )
174
+ self .assertTrue (r .next ())
175
+ self .assertEqual (r .layout (), report_footer )
176
+ self .assertFalse (r .next ())
177
+
178
+ # header and footer on child
179
+ child1_header = QgsLayout (p )
180
+ child1 .setHeader (child1_header )
181
+ child1 .setHeaderEnabled (True )
182
+ child1_footer = QgsLayout (p )
183
+ child1 .setFooter (child1_footer )
184
+ child1 .setFooterEnabled (True )
185
+ self .assertTrue (r .beginRender ())
186
+ self .assertTrue (r .next ())
187
+ self .assertEqual (r .layout (), report_header )
188
+ self .assertTrue (r .next ())
189
+ self .assertEqual (r .layout (), child1_header )
190
+ self .assertTrue (r .next ())
191
+ self .assertEqual (r .layout (), child1_body )
192
+ self .assertTrue (r .next ())
193
+ self .assertEqual (r .layout (), child1_footer )
194
+ self .assertTrue (r .next ())
195
+ self .assertEqual (r .layout (), report_footer )
196
+ self .assertFalse (r .next ())
197
+
198
+ # add another child
199
+ child2 = QgsReportSectionLayout ()
200
+ child2_header = QgsLayout (p )
201
+ child2 .setHeader (child2_header )
202
+ child2 .setHeaderEnabled (True )
203
+ child2_footer = QgsLayout (p )
204
+ child2 .setFooter (child2_footer )
205
+ child2 .setFooterEnabled (True )
206
+ r .appendChild (child2 )
207
+ self .assertTrue (r .beginRender ())
208
+ self .assertTrue (r .next ())
209
+ self .assertEqual (r .layout (), report_header )
210
+ self .assertTrue (r .next ())
211
+ self .assertEqual (r .layout (), child1_header )
212
+ self .assertTrue (r .next ())
213
+ self .assertEqual (r .layout (), child1_body )
214
+ self .assertTrue (r .next ())
215
+ self .assertEqual (r .layout (), child1_footer )
216
+ self .assertTrue (r .next ())
217
+ self .assertEqual (r .layout (), child2_header )
218
+ self .assertTrue (r .next ())
219
+ self .assertEqual (r .layout (), child2_footer )
220
+ self .assertTrue (r .next ())
221
+ self .assertEqual (r .layout (), report_footer )
222
+ self .assertFalse (r .next ())
223
+
224
+ # add a child to child2
225
+ child2a = QgsReportSectionLayout ()
226
+ child2a_header = QgsLayout (p )
227
+ child2a .setHeader (child2a_header )
228
+ child2a .setHeaderEnabled (True )
229
+ child2a_footer = QgsLayout (p )
230
+ child2a .setFooter (child2a_footer )
231
+ child2a .setFooterEnabled (True )
232
+ child2 .appendChild (child2a )
233
+ self .assertTrue (r .beginRender ())
234
+ self .assertTrue (r .next ())
235
+ self .assertEqual (r .layout (), report_header )
236
+ self .assertTrue (r .next ())
237
+ self .assertEqual (r .layout (), child1_header )
238
+ self .assertTrue (r .next ())
239
+ self .assertEqual (r .layout (), child1_body )
240
+ self .assertTrue (r .next ())
241
+ self .assertEqual (r .layout (), child1_footer )
242
+ self .assertTrue (r .next ())
243
+ self .assertEqual (r .layout (), child2_header )
244
+ self .assertTrue (r .next ())
245
+ self .assertEqual (r .layout (), child2a_header )
246
+ self .assertTrue (r .next ())
247
+ self .assertEqual (r .layout (), child2a_footer )
248
+ self .assertTrue (r .next ())
249
+ self .assertEqual (r .layout (), child2_footer )
250
+ self .assertTrue (r .next ())
251
+ self .assertEqual (r .layout (), report_footer )
252
+ self .assertFalse (r .next ())
253
+
134
254
135
255
if __name__ == '__main__' :
136
256
unittest .main ()
0 commit comments