package Ġio . github . w ulkan owy . data . repositories Ċ Ċ import Ġio . github . w ulkan owy . data . db . dao . Mobile Device Dao Ċ import Ġio . github . w ulkan owy . data . map pers . map To Entities Ċ import Ġio . github . w ulkan owy . get Se mester Entity Ċ import Ġio . github . w ulkan owy . get Student Entity Ċ import Ġio . github . w ulkan owy . sdk . Sdk Ċ import Ġio . github . w ulkan owy . sdk . pojo . Device Ċ import Ġio . github . w ulkan owy . utils . Auto Refresh Helper Ċ import Ġio . github . w ulkan owy . utils . to First Result Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . Runs Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . impl . annotations . Spy K Ċ import Ġio . mock k . just Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjava . time . LocalDateTime . of Ċ Ċ class ĠMobile Device Repository Test Ġ{ ĊĊĠĠĠ Ġ@ Spy K ĊĠĠĠ Ġprivate Ġvar Ġsdk Ġ= ĠS dk () ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmobile Device Db : ĠMobile Device Dao ĊĊĠĠĠ Ġ@ Mock K ( relax Unit Fun Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrefresh Helper : ĠAuto Refresh Helper ĊĊĠĠĠ Ġprivate Ġval Ġse mester Ġ= Ġget Se mester Entity () ĊĊĠĠĠ Ġprivate Ġval Ġstudent Ġ= Ġget Student Entity () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmobile Device Repository : ĠMobile Device Repository ĊĊĠĠĠ Ġprivate Ġval Ġremote List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġget Device Po jo ( 1 ), ĊĠĠĠĠĠĠĠ Ġget Device Po jo ( 2 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġinit Test () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrefresh Helper . is ShouldBe Ref reshed ( any ()) Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġmobile Device Repository Ġ= ĠMobile Device Repository ( mobile Device Db , Ġsdk , Ġrefresh Helper ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` force Ġrefresh Ġwithout Ġdifference `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġprepare ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsdk . get Registered Devices () Ġ} Ġreturns Ġremote List ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmobile Device Db . load All ( student . student Id ) Ġ} Ġreturns Many ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( remote List . map To Entities ( semester )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( remote List . map To Entities ( semester )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmobile Device Db . insert All ( any ()) Ġ} Ġreturns ĠlistOf ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmobile Device Db . delete All ( any ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġ// Ġexecute ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġrun Blocking Ġ{ Ġmobile Device Repository . get Devices ( student , Ġse mester , Ġtrue ). to First Result () Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( null , Ġres . error ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġres . data ?. size ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġsdk . get Registered Devices () Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġmobile Device Db . load All ( 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġmobile Device Db . insert All ( match Ġ{ Ġit . isEmpty () Ġ}) Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġmobile Device Db . delete All ( match Ġ{ Ġit . isEmpty () Ġ}) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` force Ġrefresh Ġwith Ġmore Ġitems Ġin Ġremote `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġprepare ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsdk . get Registered Devices () Ġ} Ġreturns Ġremote List ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmobile Device Db . load All ( 1 ) Ġ} Ġreturns Many ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( remote List . drop Last ( 1 ). map To Entities ( semester )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( remote List . map To Entities ( semester )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmobile Device Db . insert All ( any ()) Ġ} Ġreturns ĠlistOf ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmobile Device Db . delete All ( any ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġ// Ġexecute ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġrun Blocking Ġ{ Ġmobile Device Repository . get Devices ( student , Ġse mester , Ġtrue ). to First Result () Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( null , Ġres . error ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġres . data ?. size ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġsdk . get Registered Devices () Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġmobile Device Db . load All ( 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmobile Device Db . insert All ( match Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . size Ġ== Ġ 1 Ġ&& Ġit [ 0 ] Ġ== Ġremote List . map To Entities ( semester )[ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġmobile Device Db . delete All ( match Ġ{ Ġit . isEmpty () Ġ}) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` force Ġrefresh Ġwith Ġmore Ġitems Ġin Ġlocal `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġprepare ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġsdk . get Registered Devices () Ġ} Ġreturns Ġremote List . drop Last ( 1 ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmobile Device Db . load All ( 1 ) Ġ} Ġreturns Many ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( remote List . map To Entities ( semester )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( remote List . drop Last ( 1 ). map To Entities ( semester )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmobile Device Db . insert All ( any ()) Ġ} Ġreturns ĠlistOf ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġmobile Device Db . delete All ( any ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġ// Ġexecute ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġrun Blocking Ġ{ Ġmobile Device Repository . get Devices ( student , Ġse mester , Ġtrue ). to First Result () Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( null , Ġres . error ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġres . data ?. size ) ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġsdk . get Registered Devices () Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġmobile Device Db . load All ( 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġmobile Device Db . insert All ( match Ġ{ Ġit . isEmpty () Ġ}) Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmobile Device Db . delete All ( match Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . size Ġ== Ġ 1 Ġ&& Ġit [ 0 ] Ġ== Ġremote List . map To Entities ( semester )[ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Device Po jo ( day : ĠInt ) Ġ= ĠDevice ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ"", ĊĠĠĠĠĠĠĠ ĠdeviceId Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġcreate Date Ġ= Ġof ( 2 0 1 9 , Ġ 5 , Ġday , Ġ 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠ Ġmodification Date Ġ= Ġof ( 2 0 1 9 , Ġ 5 , Ġday , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ) Ċ } Ċ