package Ġorg . simple . clin ic . edit patient Ċ Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . never Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġio . reactivex . Observable Ċ import Ġjunit params . JUnit Params Runner Ċ import Ġjunit params . Parameters Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . simple . clin ic . TestData Ċ import Ġorg . simple . clin ic . edit patient . Edit Patient State . NOT _ SA V ING _ PAT IENT Ċ import Ġorg . simple . clin ic . new entry . country . Bang l ade sh Input Fields Provider Ċ import Ġorg . simple . clin ic . new entry . country . Input Fields Factory Ċ import Ġorg . simple . clin ic . patient . Age Ċ import Ġorg . simple . clin ic . patient . Patient Ċ import Ġorg . simple . clin ic . patient . Patient Address Ċ import Ġorg . simple . clin ic . patient . Patient PhoneNumber Ċ import Ġorg . simple . clin ic . patient . Patient Repository Ċ import Ġorg . simple . clin ic . registration . phone . Length Based Number Validator Ċ import Ġorg . simple . clin ic . util . Rx Errors Rule Ċ import Ġorg . simple . clin ic . util . Test User Clock Ċ import Ġorg . simple . clin ic . util . Test Utc Clock Ċ import Ġorg . simple . clin ic . util . scheduler . Tr amp oline Schedulers Provider Ċ import Ġorg . simple . clin ic . util . to Optional Ċ import Ġorg . simple . clin ic . uuid . Fake Uuid Generator Ċ import Ġorg . simple . clin ic . widgets . age and date of birth . User Input Age Validator Ċ import Ġorg . simple . clin ic . widgets . age and date of birth . User Input Date Validator Ċ import Ġorg . simple . mob ius . migration . Mob ius TestFixture Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . util . Locale Ċ import Ġjava . util . UUID Ċ Ċ @ RunWith ( JUnit Params Runner :: class ) Ċ class ĠEdit Patient Screen Created Test Ġ{ ĊĊĠ Ġ@ get : Rule ĊĠ Ġval Ġrx Errors Rule Ġ= ĠRx Errors Rule () ĊĊĠ Ġprivate Ġval Ġui : ĠEdit Patient Ui Ġ= Ġmock () ĊĠ Ġprivate Ġval Ġut c Clock : ĠTest Utc Clock Ġ= ĠTest Utc Clock () ĊĠ Ġprivate Ġval Ġuser Clock : ĠTest User Clock Ġ= ĠTest User Clock () ĊĠ Ġprivate Ġval Ġdate OfBirth Format Ġ= ĠDateTime Formatter . of Pattern (" dd / MM / yyyy ", ĠLocale . EN GL ISH ) ĊĠ Ġprivate Ġval Ġpatient Repository Ġ= Ġmock < Patient Repository >() ĊĠ Ġprivate Ġval Ġcountry Ġ= ĠTest Data . country () ĊĠ Ġprivate Ġval Ġuser Ġ= ĠTest Data . logged In User () ĊĊĠ Ġprivate Ġval Ġinput Fields Factory Ġ= ĠInput Fields Factory ( Bang l ade sh Input Fields Provider ( ĊĠĠĠĠĠ ĠdateTime Formatter Ġ= Ġdate OfBirth Format , ĊĠĠĠĠĠ Ġtoday Ġ= ĠLocalDate . now ( user Clock ) ĊĠ Ġ)) ĊĊĠ Ġ@ Test ĊĠ Ġ@ Parameters ( method Ġ= Ġ" params Ġfor Ġpref illing Ġfields Ġon Ġscreen Ġcreated ") ĊĠ Ġfun Ġ` when Ġscreen Ġis Ġcreated Ġthen Ġthe Ġexisting Ġpatient Ġdata Ġmust Ġbe Ġpref illed `( patient Form Test Params : ĠPatient Form Test Params ) Ġ{ ĊĠĠĠ Ġval Ġ( patient , Ġaddress , ĠphoneNumber ) Ġ= Ġpatient Form Test Params ĊĊĠĠĠ Ġwhenever ( patient Repository . bang l ade sh National Id For Patient ( patient . uuid )) Ġdo Return ĠObservable . never () ĊĊĠĠĠ Ġval Ġpatient Profile Ġ= ĠTest Data . patient Profile ( patient Uuid Ġ= Ġpatient . uuid , Ġgenerate Business Id Ġ= Ġtrue ) ĊĠĠĠ Ġwhenever ( patient Repository . patient Profile ( patient . uuid )) Ġdo Return ĠObservable . just ( patient Profile . to Optional ()) ĊĊĠĠĠ Ġscreen Created ( patient , Ġaddress , ĠphoneNumber ) ĊĊĠĠĠ Ġverify ( ui ). display Bp Pass ports ( patient Profile . business Ids . map Ġ{ Ġit . identifier . display Value () Ġ}) ĊĊĠĠĠ Ġif Ġ( patient Form Test Params . should Set Col ony Or V illage ) Ġ{ ĊĠĠĠĠĠ Ġverify ( ui ). set Col ony Or V illage ( address . col ony Or V illage !! ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġverify ( ui , Ġnever ()). set Col ony Or V illage ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġverify ( ui ). set District ( address . district ) ĊĠĠĠ Ġverify ( ui ). setState ( address . state ) ĊĠĠĠ Ġverify ( ui ). set Gender ( patient . gender ) ĊĠĠĠ Ġverify ( ui ). set Patient Name ( patient . fullName ) ĊĊĠĠĠ Ġif Ġ( patient Form Test Params . should Set PhoneNumber ) Ġ{ ĊĠĠĠĠĠ Ġverify ( ui ). set Patient PhoneNumber ( phoneNumber !!. number ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġverify ( ui , Ġnever ()). set Patient PhoneNumber ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( patient Form Test Params . should Set Age ) Ġ{ ĊĠĠĠĠĠ Ġverify ( ui ). set Patient Age ( any ()) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġverify ( ui , Ġnever ()). set Patient Age ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( patient Form Test Params . should Set Date OfBirth ) Ġ{ ĊĠĠĠĠĠ Ġverify ( ui ). set Patient Date OfBirth ( patient . date OfBirth !! ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġverify ( ui , Ġnever ()). set Patient Date OfBirth ( any ()) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Suppress (" Unused ") ĊĠ Ġprivate Ġfun Ġ` params Ġfor Ġpref illing Ġfields Ġon Ġscreen Ġcreated ` (): ĠList < Patient Form Test Params > Ġ{ ĊĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġpatient FormData With Age ( col ony Or V illage Ġ= Ġ" Col ony ", ĠphoneNumber Ġ= Ġ" 1 1 1 1 1 1 1 1 1 1 "), ĊĠĠĠĠĠĠĠ Ġpatient FormData With Age ( col ony Or V illage Ġ= Ġnull , ĠphoneNumber Ġ= Ġ" 1 1 1 1 1 1 1 1 1 1 "), ĊĠĠĠĠĠĠĠ Ġpatient FormData With Age ( col ony Or V illage Ġ= Ġ"", ĠphoneNumber Ġ= Ġ" 1 1 1 1 1 1 1 1 1 1 "), ĊĠĠĠĠĠĠĠ Ġpatient FormData With Age ( col ony Or V illage Ġ= Ġ" Col ony ", ĠphoneNumber Ġ= Ġnull ), ĊĠĠĠĠĠĠĠ Ġpatient FormData With Date OfBirth ( col ony Or V illage Ġ= Ġ" Col ony ", ĠphoneNumber Ġ= Ġnull , Ġdate OfBirth Ġ= ĠLocalDate . parse (" 1 9 9 5 - 1 1 - 2 8 ")) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġpatient FormData With Age ( ĊĠĠĠĠĠ Ġcol ony Or V illage : ĠString ?, ĊĠĠĠĠĠ ĠphoneNumber : ĠString ? ĊĠ Ġ): ĠPatient Form Test Params Ġ{ ĊĠĠĠ Ġval Ġpatient To Return Ġ= ĠTest Data . patient ( ĊĠĠĠĠĠĠĠ Ġage Ġ= ĠAge ( 2 3 , ĠInstant . now ( utc Clock )), ĊĠĠĠĠĠĠĠ Ġdate OfBirth Ġ= Ġnull ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġaddress To Return Ġ= ĠTest Data . patient Address ( uuid Ġ= Ġpatient To Return . address Uuid , Ġcol ony Or V illage Ġ= Ġcol ony Or V illage ) ĊĠĠĠ Ġval ĠphoneNumber To Return Ġ= ĠphoneNumber ?. let Ġ{ ĠTest Data . patient PhoneNumber ( patient Uuid Ġ= Ġpatient To Return . uuid , Ġnumber Ġ= Ġit ) Ġ} ĊĊĠĠĠ Ġreturn ĠPatient Form Test Params ( ĊĠĠĠĠĠĠĠ Ġpatient To Return , ĊĠĠĠĠĠĠĠ Ġaddress To Return , ĊĠĠĠĠĠĠĠ ĠphoneNumber To Return ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġpatient FormData With Date OfBirth ( ĊĠĠĠĠĠ Ġcol ony Or V illage : ĠString ?, ĊĠĠĠĠĠ ĠphoneNumber : ĠString ?, ĊĠĠĠĠĠ Ġdate OfBirth : ĠLocalDate ĊĠ Ġ): ĠPatient Form Test Params Ġ{ ĊĠĠĠ Ġval Ġpatient To Return Ġ= ĠTest Data . patient ( date OfBirth Ġ= Ġdate OfBirth , Ġage Ġ= Ġnull ) ĊĠĠĠ Ġval Ġaddress To Return Ġ= ĠTest Data . patient Address ( uuid Ġ= Ġpatient To Return . address Uuid , Ġcol ony Or V illage Ġ= Ġcol ony Or V illage ) ĊĠĠĠ Ġval ĠphoneNumber To Return Ġ= ĠphoneNumber ?. let Ġ{ ĠTest Data . patient PhoneNumber ( patient Uuid Ġ= Ġpatient To Return . uuid , Ġnumber Ġ= Ġit ) Ġ} ĊĊĠĠĠ Ġreturn ĠPatient Form Test Params ( ĊĠĠĠĠĠĠĠ Ġpatient To Return , ĊĠĠĠĠĠĠĠ Ġaddress To Return , ĊĠĠĠĠĠĠĠ ĠphoneNumber To Return ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġdata Ġclass ĠPatient Form Test Params ( ĊĠĠĠĠĠ Ġval Ġpatient : ĠPatient , ĊĠĠĠĠĠ Ġval Ġaddress : ĠPatient Address , ĊĠĠĠĠĠ Ġval ĠphoneNumber : ĠPatient PhoneNumber ? ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġshould Set Col ony Or V illage : ĠBoolean ĊĠĠĠĠĠ Ġget () Ġ= Ġaddress . col ony Or V illage . isNull Or Blank (). not () ĊĊĠĠĠ Ġval Ġshould Set PhoneNumber : ĠBoolean ĊĠĠĠĠĠ Ġget () Ġ= ĠphoneNumber Ġ!= Ġnull ĊĊĠĠĠ Ġval Ġshould Set Age : ĠBoolean ĊĠĠĠĠĠ Ġget () Ġ= Ġpatient . age Ġ!= Ġnull ĊĊĠĠĠ Ġval Ġshould Set Date OfBirth : ĠBoolean ĊĠĠĠĠĠ Ġget () Ġ= Ġpatient . date OfBirth Ġ!= Ġnull ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġscreen Created ( patient : ĠPatient , Ġaddress : ĠPatient Address , ĠphoneNumber : ĠPatient PhoneNumber ?) Ġ{ ĊĠĠĠ Ġval Ġedit Patient Effect Handler Ġ= ĠEdit Patient Effect Handler ( ĊĠĠĠĠĠĠĠ Ġuser Clock Ġ= ĠTest User Clock (), ĊĠĠĠĠĠĠĠ Ġpatient Repository Ġ= Ġpatient Repository , ĊĠĠĠĠĠĠĠ Ġut c Clock Ġ= Ġut c Clock , ĊĠĠĠĠĠĠĠ Ġs chedulers Provider Ġ= ĠTr amp oline Schedulers Provider (), ĊĠĠĠĠĠĠĠ Ġcountry Ġ= Ġcountry , ĊĠĠĠĠĠĠĠ Ġuuid Generator Ġ= ĠFake Uuid Generator . fixed ( UUID . fromString (" 4 a 0 8 c 5 2 c - e bef - 4 4 a 2 - 9 de 4 - 0 2 9 1 6 e 7 0 3 a 4 7 ")), ĊĠĠĠĠĠĠĠ ĠcurrentUser Ġ= Ġdagger . Lazy Ġ{ Ġuser Ġ}, ĊĠĠĠĠĠĠĠ Ġinput Fields Factory Ġ= Ġinput Fields Factory , ĊĠĠĠĠĠĠĠ Ġdate OfBirth Formatter Ġ= Ġdate OfBirth Format , ĊĠĠĠĠĠĠĠ Ġui Ġ= Ġui ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġnumber Validator Ġ= ĠLength Based Number Validator ( ĊĠĠĠĠĠĠĠ Ġminimum Required Length Mobile Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠ Ġmaximum Allowed Length Mobile Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠ Ġminimum Required Length Land lines Or Mobile Ġ= Ġ 6 , ĊĠĠĠĠĠĠĠ Ġmaximum Allowed Length Land lines Or Mobile Ġ= Ġ 1 2 ĊĠĠĠ Ġ) ĊĠĠĠ ĠMob ius TestFixture < Edit Patient Model , ĠEdit Patient Event , ĠEdit Patient Effect >( ĊĠĠĠĠĠĠĠ Ġevents Ġ= ĠObservable . never < Edit Patient Event >(), ĊĠĠĠĠĠĠĠ Ġdefault Model Ġ= ĠEdit Patient Model . from ( patient , Ġaddress , ĠphoneNumber , Ġdate OfBirth Format , Ġnull , ĠNOT _ SA V ING _ PAT IENT ), ĊĠĠĠĠĠĠĠ Ġinit Ġ= ĠEdit Patient Init ( patient , Ġaddress , ĠphoneNumber , Ġnull ), ĊĠĠĠĠĠĠĠ Ġupdate Ġ= ĠEdit Patient Update ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Validator Ġ= Ġnumber Validator , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo b Validator Ġ= ĠUser Input Date Validator ( user Clock , Ġdate OfBirth Format ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġage Validator Ġ= ĠUser Input Age Validator ( user Clock , Ġdate OfBirth Format ) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġeffect Handler Ġ= Ġedit Patient Effect Handler . build (), ĊĠĠĠĠĠĠĠ Ġmodel Update Listener Ġ= Ġ{ Ġ/* Ġnothing Ġhere Ġ*/ Ġ} ĊĠĠĠ Ġ). start () ĊĠ Ġ} Ċ } Ċ