package Ġnet . k ib ot u . android databases . room Ċ Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Lifecycle Registry Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġnet . k ib ot u . android databases . base . lambda Mock Ċ import Ġnet . k ib ot u . android databases . room . model . Note Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mockito . mock Ċ import Ġorg . mockito . Mockito . verify Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġ[ Jan ĠR abe ]( https :// about . me / jan r abe ). Ċ Ġ*/ Ċ Ċ @ Use Experimental ( Experimental Cor outines Api :: class ) Ċ class ĠNote Room Tests Ġ: ĠBase Room Test () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetAll () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= ĠMutable LiveData < Note >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġobserve Changes ( lifecycle : ĠLifecycle , Ġobserver : Ġ( Note ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . observe ({ Ġlifecycle Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnote Ġ= ĠNote ( UUID . randomUUID (). toString (). hashCode (), Ġ" hal lo Ġworld ") ĊĠĠĠĠĠĠĠ ĠassertThat ( note ). isNotNull () ĊĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġlambda Mock <( Note ) Ġ-> ĠUnit >() ĊĠĠĠĠĠĠĠ Ġval Ġlifecycle Ġ= ĠLifecycle Registry ( mock ( Lifecycle Owner :: class . java )) ĊĠĠĠĠĠĠĠ Ġlifecycle . handle Lifecycle Event ( Lifecycle . Event . ON _ RE SU ME ) ĊĊĠĠĠĠĠĠĠ Ġobserve Changes ( lifecycle , Ġobserver ) ĊĊĠĠĠĠĠĠĠ Ġlive Data . post Value ( note ) ĊĊĠĠĠĠĠĠĠ Ġverify ( observer ). invoke ( note ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( live Data . value ). isEqualTo ( note ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetAll Db () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġlambda Mock <( List < Note >) Ġ-> ĠUnit >() ĊĠĠĠĠĠĠĠ Ġval Ġlifecycle Ġ= ĠLifecycle Registry ( mock ( Lifecycle Owner :: class . java )) ĊĠĠĠĠĠĠĠ Ġlifecycle . handle Lifecycle Event ( Lifecycle . Event . ON _ RE SU ME ) ĊĊĠĠĠĠĠĠĠ Ġcor outines Test Rule . test Dispatcher . run Blocking Test Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Ġ= ĠNote ( UUID . randomUUID (). toString (). hashCode (), Ġ" hal lo Ġworld ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( note ). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Do a . insert ( note ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Ġ= Ġnote Do a . getAll () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġobserve Changes ( lifecycle : ĠLifecycle , Ġobserver : Ġ( List < Note >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall . observe ({ Ġlifecycle Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve Changes ( lifecycle , Ġobserver ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( observer ). invoke ( listOf ( note )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( all . value ). isNotEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }