@@ -260,6 +260,121 @@ class MoreQuestionnaireResponsesTest {
260
260
assertResourceEquals(questionnaireResponse, packedQuestionnaireResponse)
261
261
}
262
262
263
+ @Test
264
+ fun `should pack repeated groups recursively` () {
265
+ val questionnaire =
266
+ Questionnaire ().apply {
267
+ addItem(
268
+ QuestionnaireItemComponent ().apply {
269
+ linkId = " repeated-group"
270
+ type = Questionnaire .QuestionnaireItemType .GROUP
271
+ repeats = true
272
+ addItem(
273
+ QuestionnaireItemComponent ().apply {
274
+ linkId = " nested-repeated-group"
275
+ type = Questionnaire .QuestionnaireItemType .GROUP
276
+ repeats = true
277
+ addItem(
278
+ QuestionnaireItemComponent ().apply {
279
+ linkId = " nested-nested-question"
280
+ type = Questionnaire .QuestionnaireItemType .BOOLEAN
281
+ },
282
+ )
283
+ },
284
+ )
285
+ },
286
+ )
287
+ }
288
+
289
+ val questionnaireResponse =
290
+ QuestionnaireResponse ().apply {
291
+ addItem(
292
+ QuestionnaireResponseItemComponent ().apply {
293
+ linkId = " repeated-group"
294
+ addItem(
295
+ QuestionnaireResponseItemComponent ().apply {
296
+ linkId = " nested-repeated-group"
297
+ addItem(
298
+ QuestionnaireResponseItemComponent ().apply {
299
+ linkId = " nested-nested-question"
300
+ addAnswer(
301
+ QuestionnaireResponseItemAnswerComponent ().apply {
302
+ value = BooleanType (true )
303
+ },
304
+ )
305
+ },
306
+ )
307
+ },
308
+ )
309
+ addItem(
310
+ QuestionnaireResponseItemComponent ().apply {
311
+ linkId = " nested-repeated-group"
312
+ addItem(
313
+ QuestionnaireResponseItemComponent ().apply {
314
+ linkId = " nested-nested-question"
315
+ addAnswer(
316
+ QuestionnaireResponseItemAnswerComponent ().apply {
317
+ value = BooleanType (false )
318
+ },
319
+ )
320
+ },
321
+ )
322
+ },
323
+ )
324
+ },
325
+ )
326
+ }
327
+
328
+ val packedQuestionnaireResponse =
329
+ QuestionnaireResponse ().apply {
330
+ addItem(
331
+ QuestionnaireResponseItemComponent ().apply {
332
+ linkId = " repeated-group"
333
+ addAnswer(
334
+ QuestionnaireResponseItemAnswerComponent ().apply {
335
+ addItem(
336
+ QuestionnaireResponseItemComponent ().apply {
337
+ linkId = " nested-repeated-group"
338
+ addAnswer(
339
+ QuestionnaireResponseItemAnswerComponent ().apply {
340
+ addItem(
341
+ QuestionnaireResponseItemComponent ().apply {
342
+ linkId = " nested-nested-question"
343
+ addAnswer(
344
+ QuestionnaireResponseItemAnswerComponent ().apply {
345
+ value = BooleanType (true )
346
+ },
347
+ )
348
+ },
349
+ )
350
+ },
351
+ )
352
+ addAnswer(
353
+ QuestionnaireResponseItemAnswerComponent ().apply {
354
+ addItem(
355
+ QuestionnaireResponseItemComponent ().apply {
356
+ linkId = " nested-nested-question"
357
+ addAnswer(
358
+ QuestionnaireResponseItemAnswerComponent ().apply {
359
+ value = BooleanType (false )
360
+ },
361
+ )
362
+ },
363
+ )
364
+ },
365
+ )
366
+ },
367
+ )
368
+ },
369
+ )
370
+ },
371
+ )
372
+ }
373
+
374
+ questionnaireResponse.packRepeatedGroups(questionnaire)
375
+ assertResourceEquals(questionnaireResponse, packedQuestionnaireResponse)
376
+ }
377
+
263
378
@Test
264
379
fun `should not modify non-repeated groups while packing repeated groups` () {
265
380
val questionnaire =
0 commit comments