package Ġorg . oss ia ust ria . lib . domain . database Ċ Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . take Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . hamcrest . Core Matchers Ċ import Ġorg . hamcrest . Matcher Assert Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . oss ia ust ria . lib . domain . database . entities . Album Entity Ċ import Ġorg . oss ia ust ria . lib . domain . database . entities . Album Share Entity Ċ import Ġorg . oss ia ust ria . lib . domain . database . entities . Album Share Entity WithData Ċ import Ġorg . oss ia ust ria . lib . domain . database . entities . to Album Share Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġjava . util .* Ċ import Ġjava . util . UUID . randomUUID Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ internal Ġclass ĠAlbum Share Dao Test Ġ: ĊĠĠĠ ĠSend able Dao Test < Album Share Entity , ĠAlbum Share Entity WithData , ĠAlbum Share Dao >() Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġalbum Dao : ĠAlbum Dao ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġdao Ġ= Ġdb . album Share Dao () ĊĠĠĠĠĠĠĠ Ġalbum Dao Ġ= Ġdb . album Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` mapping Ġshould Ġcontain Ġalbum Ġand Ġowner `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao . insert ( create Entity ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠfindAll Ġ= Ġrun Blocking Ġ{ Ġdao . findAll (). take ( 1 ). first () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= ĠfindAll [ 0 ]. to Album Share () ĊĠĠĠĠĠĠĠ ĠMatcher Assert . assertThat ( subject . album , ĠCore Matchers . not ( Core Matchers . null Value ())) ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao . delete All () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Entity ( id : ĠUUID ): ĠAlbum Share Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalbum Id Ġ= Ġrandom UUID () ĊĠĠĠĠĠĠĠ Ġval Ġperson Id Ġ= Ġrandom UUID () ĊĠĠĠĠĠĠĠ Ġval Ġalbum Entity Ġ= ĠAlbum Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Id Ġ= Ġalbum Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġowner Id Ġ= Ġperson Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" album " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġalbum Dao . insert ( album Entity ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAlbum Share Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠDate (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend At Ġ= ĠDate (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrieved At Ġ= ĠDate (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender Id Ġ= Ġperson Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Id Ġ= Ġperson Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Id Ġ= Ġalbum Id , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperm ute Entity ( entity : ĠAlbum Share Entity ): ĠAlbum Share Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġentity . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠDate (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend At Ġ= ĠDate (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrieved At Ġ= ĠDate ( System . currentTimeMillis ()+ counter ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Equal ( wrapper : ĠAlbum Share Entity WithData , Ġentity : ĠAlbum Share Entity ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMatcher Assert . assertThat ( wrapper . album Share , ĠCore Matchers . equalTo ( entity )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Same Id ( wrapper : ĠAlbum Share Entity WithData , Ġentity : ĠAlbum Share Entity ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMatcher Assert . assertThat ( wrapper . album Share . id , ĠCore Matchers . equalTo ( entity . id )) ĊĠĠĠ Ġ} Ċ }