/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠOn a ĠSystems , ĠInc Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . smart register . fhir core . quest . ui . patient . details Ċ Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġcom . google . android . fhir . Fhir Engine Ċ import Ġdagger . h ilt . android . testing . Bind Value Ċ import Ġdagger . h ilt . android . testing . H ilt Android Rule Ċ import Ġdagger . h ilt . android . testing . H ilt Android Test Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . spy k Ċ import Ġjavax . inject . Inject Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . hl 7 . fhir . r 4 . model . Condition Ċ import Ġorg . hl 7 . fhir . r 4 . model . Library Ċ import Ġorg . hl 7 . fhir . r 4 . model . Patient Ċ import Ġorg . hl 7 . fhir . r 4 . model . Questionnaire Ċ import Ġorg . hl 7 . fhir . r 4 . model . Questionnaire Response Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . smart register . fhir core . engine . cql . Library Evaluator Ċ import Ġorg . smart register . fhir core . engine . data . local . Default Repository Ċ import Ġorg . smart register . fhir core . engine . ui . question naire . Questionnaire Config Ċ import Ġorg . smart register . fhir core . quest . R Ċ import Ġorg . smart register . fhir core . quest . app . f akes . F aker Ċ import Ġorg . smart register . fhir core . quest . data . patient . Patient Repository Ċ import Ġorg . smart register . fhir core . quest . ro bo lectric . Ro bo lectric Test Ċ import Ġorg . smart register . fhir core . quest . ui . patient . register . Patient Item Mapper Ċ Ċ @ H ilt Android Test Ċ class ĠQuest Patient Detail ViewModel Test Ġ: ĠRo bo lectric Test () Ġ{ ĊĊĠ Ġ@ get : Rule ( order Ġ= Ġ 0 ) Ġval Ġh ilt Rule Ġ= ĠH ilt Android Rule ( this ) ĊĊĠ Ġ@ Inject Ġlateinit Ġvar Ġpatient Item Mapper : ĠPatient Item Mapper ĊĊĠ Ġ@ Bind Value Ġval Ġpatient Repository : ĠPatient Repository Ġ= Ġmock k () ĊĠ Ġ@ Bind Value Ġval Ġdefault Repository : ĠDefault Repository Ġ= Ġmock k () ĊĠ Ġ@ Bind Value Ġval Ġlibrary Evaluator : ĠLibrary Evaluator Ġ= Ġspy k () ĊĊĠ Ġprivate Ġval Ġpatient Id Ġ= Ġ" 5 5 8 3 1 4 5 " ĊĊĠ Ġprivate Ġlateinit Ġvar Ġquest Patient Detail ViewModel : ĠQuest Patient Detail ViewModel ĊĊĠ Ġ@ Before ĊĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠ Ġh ilt Rule . inject () ĊĠĠĠ ĠFaker . init Patient Repository Mocks ( patient Repository ) ĊĠĠĠ Ġquest Patient Detail ViewModel Ġ= ĊĠĠĠĠĠ ĠQuest Patient Detail ViewModel ( ĊĠĠĠĠĠĠĠ Ġpatient Repository Ġ= Ġpatient Repository , ĊĠĠĠĠĠĠĠ Ġdefault Repository Ġ= Ġdefault Repository , ĊĠĠĠĠĠĠĠ Ġpatient Item Mapper Ġ= Ġpatient Item Mapper , ĊĠĠĠĠĠĠĠ Ġlibrary Evaluator Ġ= Ġlibrary Evaluator ĊĠĠĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun ĠtestGet Demo graphics Should Fetch Patient () Ġ{ ĊĠĠĠ Ġquest Patient Detail ViewModel . get Demo graphics ( patient Id ) ĊĠĠĠ Ġval Ġpatient Ġ= Ġquest Patient Detail ViewModel . patient Item . value ĊĠĠĠ ĠAssert . assertNotNull ( patient ) ĊĠĠĠ ĠAssert . assertEquals ( patient Id , Ġpatient !!. id ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest On MenuItem ClickListener () Ġ{ ĊĠĠĠ Ġquest Patient Detail ViewModel . on MenuItem ClickListener ( R . string . test _ results ) ĊĠĠĠ ĠAssert . assertNotNull ( quest Patient Detail ViewModel . on MenuItem Clicked . value ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest On Back Pressed () Ġ{ ĊĠĠĠ Ġquest Patient Detail ViewModel . on Back Pressed ( true ) ĊĠĠĠ ĠAssert . assertNotNull ( quest Patient Detail ViewModel . on Back Press Clicked . value ) ĊĠĠĠ ĠAssert . assertTrue ( quest Patient Detail ViewModel . on Back Press Clicked . value !! ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest On Form ItemClickListener () Ġ{ ĊĠĠĠ Ġval Ġquestion naire Config Ġ= Ġmock k < Questionnaire Config >() ĊĠĠĠ Ġquest Patient Detail ViewModel . on Form ItemClickListener ( question naire Config ) ĊĠĠĠ ĠAssert . assertNotNull ( quest Patient Detail ViewModel . on Form Item Clicked . value ) ĊĠĠĠ ĠAssert . assertEquals ( question naire Config , Ġquest Patient Detail ViewModel . on Form Item Clicked . value !! ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest On TestResult ItemClickListener () Ġ{ ĊĠĠĠ Ġval Ġquestion naire Response Ġ= Ġmock k < Questionnaire Response >() ĊĠĠĠ Ġquest Patient Detail ViewModel . on TestResult ItemClickListener ( question naire Response ) ĊĠĠĠ ĠAssert . assertNotNull ( quest Patient Detail ViewModel . on Form TestResult Clicked . value ) ĊĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠ Ġquestion naire Response , ĊĠĠĠĠĠ Ġquest Patient Detail ViewModel . on Form TestResult Clicked . value !! ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun ĠtestGet All Forms () Ġ{ ĊĠĠĠ Ġquest Patient Detail ViewModel . getAll Forms ( Application Provider . getApplicationContext ()) ĊĠĠĠ ĠAssert . assertNotNull ( quest Patient Detail ViewModel . question naire Configs . value ) ĊĠĠĠ ĠAssert . assertEquals ( 2 , Ġquest Patient Detail ViewModel . question naire Configs . value !!. size ) ĊĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠ Ġ" 1 2 3 4 5 ", ĊĠĠĠĠĠ Ġquest Patient Detail ViewModel . question naire Configs . value !!. first (). identifier ĊĠĠĠ Ġ) ĊĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠ Ġ" 6 7 8 9 0 ", ĊĠĠĠĠĠ Ġquest Patient Detail ViewModel . question naire Configs . value !!. last (). identifier ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun ĠtestGet All Data For () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠ Ġval Ġfhir Engine Mock Ġ= Ġmock k < Fhir Engine >() ĊĠĠĠ Ġco Every Ġ{ Ġpatient Repository . fhir Engine Ġ} Ġreturns Ġfhir Engine Mock ĊĠĠĠ Ġco Every Ġ{ Ġfhir Engine Mock . load ( Patient :: class . java , Ġ" 1 1 1 1 ") Ġ} Ġreturns ĊĠĠĠĠĠ ĠPatient (). apply Ġ{ Ġid Ġ= Ġ" 1 1 1 1 " Ġ} ĊĊĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠ Ġhint ( Condition :: class ) ĊĠĠĠĠĠ Ġfhir Engine Mock . search < Condition >( any ()) ĊĠĠĠ Ġ} Ġreturns ĠlistOf ( Condition (). apply Ġ{ Ġid Ġ= Ġ" c 1 " Ġ}) ĊĊĠĠĠ Ġval Ġresult Ġ= Ġquest Patient Detail ViewModel . getAll Data For (" 1 1 1 1 ") ĊĊĠĠĠ ĠAssert . assertNotNull ( result . first ()) ĊĠĠĠ ĠAssert . assertEquals (" 1 1 1 1 ", Ġresult [ 0 ]. id ) ĊĠĠĠ ĠAssert . assertEquals (" c 1 ", Ġresult [ 1 ]. id ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Run C ql For () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠ Ġval Ġfhir Engine Mock Ġ= Ġmock k < Fhir Engine >() ĊĠĠĠ Ġco Every Ġ{ Ġpatient Repository . fhir Engine Ġ} Ġreturns Ġfhir Engine Mock ĊĠĠĠ Ġco Every Ġ{ Ġfhir Engine Mock . load ( Library :: class . java , Ġany ()) Ġ} Ġreturns ĠLibrary () ĊĊĠĠĠ Ġco Every Ġ{ Ġfhir Engine Mock . load ( Patient :: class . java , Ġ" 1 1 1 1 ") Ġ} Ġreturns ĊĠĠĠĠĠ ĠPatient (). apply Ġ{ Ġid Ġ= Ġ" 1 1 1 1 " Ġ} ĊĊĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠ Ġhint ( Condition :: class ) ĊĠĠĠĠĠ Ġfhir Engine Mock . search < Condition >( any ()) ĊĠĠĠ Ġ} Ġreturns ĠlistOf ( Condition (). apply Ġ{ Ġid Ġ= Ġ" c 1 " Ġ}) ĊĊĠĠĠ Ġco Every Ġ{ Ġlibrary Evaluator . run C ql Library ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġreturns ĠlistOf (" 1 ", Ġ" 2 ") ĊĊĠĠĠ Ġquest Patient Detail ViewModel . run C ql For (" 1 1 1 1 ", ĠApplication Provider . getApplicationContext ()) ĊĊĠĠĠ Ġco Verify Ġ{ Ġlibrary Evaluator . run C ql Library ( any (), Ġany (), Ġany (), Ġany ()) Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Fetch Result NonNull Name Should Return Name Value () Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠ Ġquest Patient Detail ViewModel . fetch Result Item Label ( ĊĠĠĠĠĠĠĠ Ġtest Result Ġ= ĊĠĠĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuestion naire Response (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuestion naire (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Sample Ġname " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Sample Ġtitle " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠ ĠAssert . assertEquals (" Sample Ġname ", Ġresult ) ĊĠĠĠ ĠAssert . assertNot Equals (" Sample Ġtitle ", Ġresult ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Fetch Result Null Name Should Return Title Value () Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠ Ġquest Patient Detail ViewModel . fetch Result Item Label ( ĊĠĠĠĠĠĠĠ Ġtest Result Ġ= ĊĠĠĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuestion naire Response (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuestion naire (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Sample Ġtitle " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠ ĠAssert . assertEquals (" Sample Ġtitle ", Ġresult ) ĊĠĠĠ ĠAssert . assertNot Equals (" Sample Ġname ", Ġresult ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Fetch Result Null Name Title Should Return Null () Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠ Ġquest Patient Detail ViewModel . fetch Result Item Label ( ĊĠĠĠĠĠĠĠ Ġtest Result Ġ= ĊĠĠĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuestion naire Response (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuestion naire (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠ ĠAssert . assertNull ( result ) ĊĠ Ġ} Ċ } Ċ