/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġdal ode v Ċ Ġ*/ Ċ package Ġes . lit tled avity . database Ċ Ċ import Ġapp . cash . tur bine . test Ċ import Ġes . lit tled avity . core . providers . Timestamp Provider Ċ import Ġes . lit tled avity . core . service . Image Gallery Service Ċ import Ġes . lit tled avity . data . contacts . Data Contact Ċ import Ġes . lit tled avity . database . chor bo . Database Contact Ċ import Ġes . lit tled avity . database . chor bo . Database Image Ċ import Ġes . lit tled avity . database . chor bo . data stores . Contact Mapper Ċ import Ġes . lit tled avity . database . chor bo . data stores . Contacts Database DataStore Ċ import Ġes . lit tled avity . database . chor bo . data stores . Save Contact Factory Ċ import Ġes . lit tled avity . database . chor bo . data stores . map To Database Contacts Ċ import Ġes . lit tled avity . database . chor bo . entities . Contact Ċ import Ġes . lit tled avity . database . chor bo . entities . Creation Date Ċ import Ġes . lit tled avity . database . chor bo . entities . Creation Date Category Ċ import Ġes . lit tled avity . database . chor bo . entities . Image Ċ import Ġes . lit tled avity . database . chor bo . entities . Info Ċ import Ġes . lit tled avity . database . chor bo . tables . Contact Dao Ċ import Ġes . lit tled avity . test Utils . DATA _ CONTACT Ċ import Ġes . lit tled avity . test Utils . DATA _ CONTACT S Ċ import Ġes . lit tled avity . test Utils . DATA _ CONTACT S _ IMAGE _ CREATED Ċ import Ġes . lit tled avity . test Utils . DATA _ CONTACT _ IMAGE _ CREATED Ċ import Ġes . lit tled avity . test Utils . DATA _ P AG INATION Ċ import Ġes . lit tled avity . test Utils . Fake Dispatcher Provider Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠCh or bo Database DataStore Test Ġ{ ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontact Dao : ĠContact Dao ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontact Mapper : ĠContact Mapper ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdata Store : ĠContact s Database DataStore ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtimestamp Provider : ĠTimestamp Provider ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġimage Gallery Service : ĠImage Gallery Service ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĊĠĠĠĠĠĠĠ Ġcontact Mapper Ġ= ĠContact Mapper ( timestamp Provider , Ġimage Gallery Service ) ĊĊĠĠĠĠĠĠĠ Ġdata Store Ġ= ĠContact s Database DataStore ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Dao Ġ= Ġcontact Dao , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Mapper Ġ= Ġcontact Mapper , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher Provider Ġ= ĠFake Dispatcher Provider (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Contact Factory Ġ= ĠFake Save Contact Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Gallery Service Ġ= Ġimage Gallery Service ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsearches Ch or bos Successfully () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġimage Gallery Service . create Media File ( any (), Ġany ()) Ġ} Ġreturns Ġ" test " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġtimestamp Provider . get Unix Timestamp ( any ()) Ġ} Ġreturns Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġdb Contacts Ġ= Ġcontact Mapper . map To Database Contacts ( DATA _ CONTACT S ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontact Dao . search Contacts ( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġdb Contacts ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata Store . search Contacts ("", ĠDATA _ P AG INATION ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( DATA _ CONTACT S _ IMAGE _ CREATED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Ch or bos Successfully () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġimage Gallery Service . create Media File ( any (), Ġany ()) Ġ} Ġreturns Ġ" test " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġtimestamp Provider . get Unix Timestamp ( any ()) Ġ} Ġreturns Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġdb Contacts Ġ= Ġcontact Mapper . map To Database Contacts ( DATA _ CONTACT S ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontact Dao . get Ch or bos () Ġ} Ġreturns Ġdb Contacts ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata Store . get Contacts () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( DATA _ CONTACT S _ IMAGE _ CREATED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Ch or bo ById Successfully () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġimage Gallery Service . create Media File ( any (), Ġany ()) Ġ} Ġreturns Ġ" test " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġtimestamp Provider . get Unix Timestamp ( any ()) Ġ} Ġreturns Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġdb Contact Ġ= Ġcontact Mapper . map To Database Contact ( DATA _ CONTACT ) ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontact Dao . get Ch or bo ( any ()) Ġ} Ġreturns Ġdb Contact ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata Store . get Contact ( DATA _ CONTACT . id ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( DATA _ CONTACT _ IMAGE _ CREATED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinsert Contact Ob serve () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġimage Gallery Service . create Media File ( any (), Ġany ()) Ġ} Ġreturns Ġ" test " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġtimestamp Provider . get Unix Timestamp ( any ()) Ġ} Ġreturns Ġ 1 L ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontact Dao . insert Ch or bo ( any ()) Ġ} Ġreturns Ġ 1 L ĊĠĠĠĠĠĠĠ Ġdata Store . insert Contact ( DATA _ CONTACT ). test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( await Item ()). isEqualTo ( DATA _ CONTACT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel And Consume Remaining Events () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġremove Contact Successfully () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġimage Gallery Service . create Media File ( any (), Ġany ()) Ġ} Ġreturns Ġ" test " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġtimestamp Provider . get Unix Timestamp ( any ()) Ġ} Ġreturns Ġ 1 L ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontact Dao . get Ch or bo ( any ()) Ġ} Ġreturns Ġdatabase Contact ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontact Dao . delete Ch or bo ById ( any ()) Ġ} Ġreturns ĠUnit ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata Store . remove Contact ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isNotNull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinsert Contacts Successfully () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġimage Gallery Service . create Media File ( any (), Ġany ()) Ġ} Ġreturns Ġ" test " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġtimestamp Provider . get Unix Timestamp ( any ()) Ġ} Ġreturns Ġ 1 L ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontact Dao . insert Ch or bos ( any ()) Ġ} Ġreturns ĠUnit ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata Store . insert Contacts ( DATA _ CONTACT S ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isNotNull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġobserve Contacts Successfully () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġimage Gallery Service . create Media File ( any (), Ġany ()) Ġ} Ġreturns Ġ" test " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġtimestamp Provider . get Unix Timestamp ( any ()) Ġ} Ġreturns Ġ 1 L ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontact Dao . observe Contacts ( any (), Ġany ()) Ġ} Ġreturns Ġflow Of ( database Contacts ) ĊĠĠĠĠĠĠĠ Ġval Ġdb Contacts Ġ= Ġdatabase Contacts . map ( contact Mapper :: map To Data Contact ) ĊĠĠĠĠĠĠĠ Ġdata Store . observe Contacts ( DATA _ P AG INATION ). test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( await Item ()). isEqualTo ( db Contacts ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel And Consume Remaining Events () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Contact Successfully () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġimage Gallery Service . create Media File ( any (), Ġany ()) Ġ} Ġreturns Ġ" test " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġtimestamp Provider . get Unix Timestamp ( any ()) Ġ} Ġreturns Ġ 1 L ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontact Dao . get Ch or bo ( any ()) Ġ} Ġreturns Ġdatabase Contact ĊĠĠĠĠĠĠĠ Ġval Ġdata Contact Ġ= Ġcontact Mapper . map To Data Contact ( database Contact ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata Store . get Contact ( database Contact . id ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( data Contact ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠFake Save Contact Factory Ġ: ĠSave Contact Factory Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Contact ( contact : ĠData Contact ) Ġ= ĠContact ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= ĠImage (" 1 2 3 ", Ġ 1 0 0 , Ġ 1 0 0 , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphone Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Timestamp Ġ= Ġ 5 0 0 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġart works Ġ= ĠlistOf ( Image (" 1 2 3 ", Ġ 1 0 0 , Ġ 1 0 0 , Ġfalse )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Date Ġ= ĠCreation Date ( 1 L , Ġ 2 0 2 1 , ĠCreation Date Category . YYYY _ MMMM _ DD ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinst agram Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrating Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreenshots Ġ= ĠlistOf ( Image (" 1 2 3 ", Ġ 1 0 0 , Ġ 1 0 0 , Ġfalse )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo List Ġ= ĠlistOf ( Info (" test ", Ġ" description ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Contacts Ġ= ĠlistOf ( ĊĊĠĠĠĠĠĠĠ Ġdatabase Contact . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Contact 1 ", ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġdatabase Contact . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Contact 2 ", ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġdatabase Contact . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Contact 3 ", ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġdatabase Contact . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Contact 4 ", ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġdatabase Contact . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Contact 5 ", ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġval Ġdatabase Contact Ġ= ĠDatabase Contact ( ĊĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠ Ġname Ġ= Ġ" Contact 1 ", ĊĠĠĠ Ġphone Ġ= Ġ" 1 2 3 4 5 1 2 3 ", ĊĠĠĠ Ġimage Ġ= ĠDatabase Image (" test ", Ġ 1 , Ġ 1 , Ġtrue ), ĊĠĠĠ Ġart works Ġ= ĠlistOf ( Image (" 1 2 3 ", Ġ 1 0 0 , Ġ 1 0 0 , Ġfalse )), ĊĠĠĠ Ġscreenshots Ġ= ĠlistOf ( Image (" 1 2 3 ", Ġ 1 0 0 , Ġ 1 0 0 , Ġfalse )), ĊĠĠĠ Ġcreation Date Ġ= ĠCreation Date ( 1 L , Ġ 1 , ĠCreation Date Category . YYYY _ MMMM _ DD ), ĊĠĠĠ Ġage Ġ= Ġ" 1 8 ", ĊĠĠĠ Ġcountry Ġ= Ġ" E span a ", ĊĠĠĠ Ġrating Ġ= Ġ" 1 0 / 1 0 ", ĊĠĠĠ Ġinst agram Ġ= Ġ"@ L itt led avity ", ĊĠĠĠ Ġinfo List Ġ= ĠlistOf ( Info (" test ", Ġ" description ")), ĊĠĠĠ Ġcreate Timestamp Ġ= Ġ 1 0 0 0 L Ċ Ċ ) Ċ