package Ġfi . ri ista . common . group H unting . ui . group Observation . modify Ċ Ċ import Ġfi . ri ista . common . group H unting . Group H unting Context Ċ import Ġfi . ri ista . common . group H unting . Group H unting Observation Operation Response Ċ import Ġfi . ri ista . common . group H unting . Mock Group H unting Data Ċ import Ġfi . ri ista . common . group H unting . dto . Group H unting Observation Update DTO Ċ import Ġfi . ri ista . common . group H unting . model . Group H unting Observation Target Ċ import Ġfi . ri ista . common . group H unting . ui . Group Observation Field Ċ import Ġfi . ri ista . common . helpers .* Ċ import Ġfi . ri ista . common . model .* Ċ import Ġfi . ri ista . common . network . Backend API Ċ import Ġfi . ri ista . common . network . Backend API Mock Ċ import Ġfi . ri ista . common . resources . String Provider Ċ import Ġfi . ri ista . common . ui . controller . ViewModel Load Status Ċ import Ġfi . ri ista . common . userInfo . CurrentUser Context Provider Factory Ċ import Ġkotlin . test .* Ċ Ċ class ĠEdit Group Observation Controller Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestData Init ially Not Loaded () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= ĠEdit Group Observation Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup H unting Context Ġ= Ġget Group H unting Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobservation Target Ġ= Ġget Observation Target (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Provider Ġ= ĠgetString Provider () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertSame ( ViewModel Load Status . Not Loaded , Ġcontroller . viewModel Load Status . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestData Can Be Loaded () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= ĠEdit Group Observation Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup H unting Context Ġ= Ġget Group H unting Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobservation Target Ġ= Ġget Observation Target (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Provider Ġ= ĠgetString Provider () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcontroller . load ViewModel () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( controller . viewModel Load Status . value Ġis ĠViewModel Load Status . Loaded ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( controller . get Loaded ViewModel (). observation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest M oose C ant Be Accepted Without H unting Day Id () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= ĠEdit Group Observation Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup H unting Context Ġ= Ġget Group H unting Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobservation Target Ġ= Ġget Observation Target (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Provider Ġ= ĠgetString Provider () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcontroller . load ViewModel () ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġcontroller . accept Observation () ĊĠĠĠĠĠĠĠ ĠassertTrue ( response Ġis ĠGroup H unting Observation Operation Response . Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest M oose Can Be Accepted () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbackend API Ġ= ĠBackend API Mock () ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= ĠEdit Group Observation Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup H unting Context Ġ= Ġget Group H unting Context ( backend API ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobservation Target Ġ= Ġget Observation Target (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Provider Ġ= ĠgetString Provider () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcontroller . load ViewModel () ĊĊĠĠĠĠĠĠĠ Ġcontroller . h unting Day EventDispatcher . dispatch H unting Day Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGroup Observation Field . H UNT ING _ DAY _ AND _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock Group H unting Data . First H unting Day Id ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġcontroller . accept Observation () ĊĠĠĠĠĠĠĠ ĠassertTrue ( response Ġis ĠGroup H unting Observation Operation Response . Success ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Pro duced Fields Match Data () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= ĠEdit Group Observation Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup H unting Context Ġ= Ġget Group H unting Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobservation Target Ġ= Ġget Observation Target (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Provider Ġ= ĠgetString Provider () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcontroller . load ViewModel () ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= Ġcontroller . get Loaded ViewModel () ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= ĠviewModel . fields ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 4 , Ġfields . size ) ĊĠĠĠĠĠĠĠ Ġvar Ġexpected Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfields . getLocation Field ( expected Index ++, ĠGroup Observation Field . LOCATION ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠE TR MS Geo Location ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġ 6 7 8 9 5 6 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġ 3 3 0 2 2 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠBackend Enum . create ( Geo Location Source . MAN UAL ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccuracy Ġ= ĠĠ 1 . 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalt itude Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalt itude Accuracy Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( location , Ġit . location ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . get Species Code Field ( expected Index ++, ĠGroup Observation Field . SPECI ES _ CODE ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Species Codes . MO OSE _ ID , Ġit . species Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . get H unting Day And Time Field ( expected Index ++, ĠGroup Observation Field . H UNT ING _ DAY _ AND _ TIME ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( LocalDateTime ( 2 0 1 5 , Ġ 9 , Ġ 1 0 , Ġ 1 3 , Ġ 0 , Ġ 0 ), Ġit . date And Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" h unting _ day _ and _ time ", Ġit . settings . label ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getString Field ( expected Index ++, ĠGroup Observation Field . OB SERV ATION _ TYPE ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" n ako ", Ġit . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" observation _ type ", Ġit . settings . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( it . settings . single Line ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getString List Field ( expected Index ++, ĠGroup Observation Field . ACT OR ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getInt Field ( expected Index ++, ĠGroup Observation Field . ACT OR _ H UN TER _ NUMBER ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getLabel Field ( expected Index ++, ĠGroup Observation Field . HEAD LINE _ SPEC IM EN _ DETAILS ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" spec imen _ details ", Ġit . text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getInt Field ( expected Index ++, ĠGroup Observation Field . MO OSE LIKE _ M ALE _ AMOUNT ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" male _ amount ", Ġit . settings . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getInt Field ( expected Index ++, ĠGroup Observation Field . MO OSE LIKE _ F EM ALE _ AMOUNT ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" female _ amount ", Ġit . settings . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getInt Field ( expected Index ++, ĠGroup Observation Field . MO OSE LIKE _ F EM ALE _ 1 CAL F _ AMOUNT ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġit . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" female _ 1 cal f _ amount ", Ġit . settings . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getInt Field ( expected Index ++, ĠGroup Observation Field . MO OSE LIKE _ F EM ALE _ 2 CAL F _ AMOUNT ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġit . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" female _ 2 cal f _ amount ", Ġit . settings . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getInt Field ( expected Index ++, ĠGroup Observation Field . MO OSE LIKE _ F EM ALE _ 3 CAL F _ AMOUNT ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġit . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" female _ 3 cal f _ amount ", Ġit . settings . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getInt Field ( expected Index ++, ĠGroup Observation Field . MO OSE LIKE _ CAL F _ AMOUNT ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġit . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" cal f _ amount ", Ġit . settings . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfields . getInt Field ( expected Index ++, ĠGroup Observation Field . MO OSE LIKE _ UNKNOWN _ SPEC IM EN _ AMOUNT ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġit . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" unknown _ spec imen _ amount ", Ġit . settings . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . settings . readOnly ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Accept ing Observation S aves It With Latest Spec Version () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbackend API Mock Ġ= ĠBackend API Mock () ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= ĠEdit Group Observation Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup H unting Context Ġ= Ġget Group H unting Context ( backend Api Ġ= Ġbackend API Mock ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobservation Target Ġ= Ġget Observation Target (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Provider Ġ= ĠgetString Provider () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcontroller . load ViewModel () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcontroller . get Loaded ViewModel OrNull ()?. observation ?. observation Spec Version ) ĊĊĠĠĠĠĠĠĠ Ġcontroller . h unting Day EventDispatcher . dispatch H unting Day Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGroup Observation Field . H UNT ING _ DAY _ AND _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock Group H unting Data . First H unting Day Id ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġcontroller . accept Observation () ĊĠĠĠĠĠĠĠ ĠassertTrue ( response Ġis ĠGroup H unting Observation Operation Response . Success ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Parameter Ġ= Ġbackend API Mock . call Parameter ( Backend API Mock :: update Group H unting Observation . name ) ĊĠĠĠĠĠĠĠ Ġval Ġdto Ġ= Ġcall Parameter Ġas ĠGroup H unting Observation Update DTO ĊĠĠĠĠĠĠĠ ĠassertEquals ( Constants . OB SERV ATION _ SPEC _ VERSION , Ġdto . observation Spec Version ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Group H unting Context ( backend Api : ĠBackend API Ġ= ĠBackend API Mock ()): ĠGroup H unting Context Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Context Provider Ġ= ĠCurrent User Context Provider Factory . create Mock ed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup H unting Enabled ForAll Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackend API Ġ= Ġbackend Api , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Context Provider . user Context . group H unting Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Observation Target ( observation Id : ĠLong Ġ= ĠMock Group H unting Data . First Observation Id ): ĠGroup H unting Observation Target Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGroup H unting Observation Target ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclub Id Ġ= ĠMock Group H unting Data . First Club Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh unting GroupId Ġ= Ġ 3 4 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobservation Id Ġ= Ġobservation Id , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetString Provider (): ĠString Provider Ġ= ĠTest String Provider . INSTANCE Ċ } Ċ Ċ private Ġfun ĠEdit Group Observation Controller . get Loaded ViewModel (): ĠModify Group Observation ViewModel Ġ{ ĊĠĠĠ Ġreturn Ġ( viewModel Load Status . value Ġas ĠViewModel Load Status . Loaded ). viewModel Ċ } Ċ