@@ -19,6 +19,7 @@ package com.google.android.fhir.datacapture
19
19
import android.os.Build
20
20
import android.widget.FrameLayout
21
21
import androidx.test.core.app.ApplicationProvider
22
+ import com.google.android.fhir.datacapture.extensions.EXTENSION_DIALOG_URL_ANDROID_FHIR
22
23
import com.google.android.fhir.datacapture.extensions.EXTENSION_ITEM_CONTROL_SYSTEM
23
24
import com.google.android.fhir.datacapture.extensions.EXTENSION_ITEM_CONTROL_SYSTEM_ANDROID_FHIR
24
25
import com.google.android.fhir.datacapture.extensions.EXTENSION_ITEM_CONTROL_URL
@@ -496,6 +497,82 @@ class QuestionnaireEditAdapterTest {
496
497
.isEqualTo(QuestionnaireViewHolderType .DROP_DOWN .value)
497
498
}
498
499
500
+ @Test
501
+ fun `getItemViewType() with radio button and dialog extension should return dialog select view holder type` () {
502
+ val questionnaireEditAdapter = QuestionnaireEditAdapter ()
503
+ val questionnaireItem =
504
+ Questionnaire .QuestionnaireItemComponent ().setType(Questionnaire .QuestionnaireItemType .CHOICE )
505
+ questionnaireItem.apply {
506
+ addExtension(
507
+ Extension ()
508
+ .setUrl(EXTENSION_ITEM_CONTROL_URL )
509
+ .setValue(
510
+ CodeableConcept ()
511
+ .addCoding(
512
+ Coding ()
513
+ .setCode(ItemControlTypes .RADIO_BUTTON .extensionCode)
514
+ .setDisplay(" Radio Button" )
515
+ .setSystem(EXTENSION_ITEM_CONTROL_SYSTEM ),
516
+ ),
517
+ ),
518
+ )
519
+ addExtension(Extension ().setUrl(EXTENSION_DIALOG_URL_ANDROID_FHIR ))
520
+ }
521
+ questionnaireEditAdapter.submitList(
522
+ listOf (
523
+ QuestionnaireAdapterItem .Question (
524
+ QuestionnaireViewItem (
525
+ questionnaireItem,
526
+ QuestionnaireResponse .QuestionnaireResponseItemComponent (),
527
+ validationResult = NotValidated ,
528
+ answersChangedCallback = { _, _, _, _ -> },
529
+ ),
530
+ ),
531
+ ),
532
+ )
533
+
534
+ assertThat(questionnaireEditAdapter.getItemViewType(0 ))
535
+ .isEqualTo(QuestionnaireViewHolderType .DIALOG_SELECT .value)
536
+ }
537
+
538
+ @Test
539
+ fun `getItemViewType() with check box and dialog extension should return dialog select view holder type` () {
540
+ val questionnaireEditAdapter = QuestionnaireEditAdapter ()
541
+ val questionnaireItem =
542
+ Questionnaire .QuestionnaireItemComponent ().setType(Questionnaire .QuestionnaireItemType .CHOICE )
543
+ questionnaireItem.apply {
544
+ addExtension(
545
+ Extension ()
546
+ .setUrl(EXTENSION_ITEM_CONTROL_URL )
547
+ .setValue(
548
+ CodeableConcept ()
549
+ .addCoding(
550
+ Coding ()
551
+ .setCode(ItemControlTypes .CHECK_BOX .extensionCode)
552
+ .setDisplay(" Check Box" )
553
+ .setSystem(EXTENSION_ITEM_CONTROL_SYSTEM ),
554
+ ),
555
+ ),
556
+ )
557
+ addExtension(Extension ().setUrl(EXTENSION_DIALOG_URL_ANDROID_FHIR ))
558
+ }
559
+ questionnaireEditAdapter.submitList(
560
+ listOf (
561
+ QuestionnaireAdapterItem .Question (
562
+ QuestionnaireViewItem (
563
+ questionnaireItem,
564
+ QuestionnaireResponse .QuestionnaireResponseItemComponent (),
565
+ validationResult = NotValidated ,
566
+ answersChangedCallback = { _, _, _, _ -> },
567
+ ),
568
+ ),
569
+ ),
570
+ )
571
+
572
+ assertThat(questionnaireEditAdapter.getItemViewType(0 ))
573
+ .isEqualTo(QuestionnaireViewHolderType .DIALOG_SELECT .value)
574
+ }
575
+
499
576
// TODO: test errors thrown for unsupported types
500
577
501
578
@Test
0 commit comments