package Ġcom . wt m ber lin . works Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġcom . wt m ber lin . data . ApiService Ċ import Ġcom . wt m ber lin . data . W tm Event Dao Ċ import Ġcom . wt m ber lin . default W tm Event Ċ import Ġcom . wt m ber lin . mock Ċ import Ġcom . wt m ber lin . notifications . Notifications Ċ import Ġcom . wt m ber lin . work . Refresh Events Worker Ċ import Ġio . reactivex . Flow able Ċ import Ġio . reactivex . Single Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . mockito . Mockito . verify Ċ import Ġorg . th reet en . bp . Z onedDateTime Ċ Ċ class ĠRefresh Events Job Test Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= Ġmock < Context >() ĊĠĠĠ Ġval Ġparams Ġ= Ġmock < Worker Parameters >() ĊĠĠĠ Ġval Ġapi Service Ġ= Ġmock < ApiService >() ĊĠĠĠ Ġval Ġevent Dao Ġ= Ġmock < W tm Event Dao >() ĊĠĠĠ Ġval Ġnotifications Ġ= Ġmock < Notifications >() ĊĊĠĠĠ Ġval Ġworker Ġ= ĠRefresh Events Worker ( context , Ġparams , Ġapi Service , Ġevent Dao , Ġnotifications ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` re places Ġold Ġevents Ġin Ġdatabase Ġwith Ġnew Ġevents Ġfrom Ġapi `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent In Database Ġ= Ġdefault W tm Event ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Fun Ġwith ĠJava " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġevent From Network Ġ= Ġdefault W tm Event ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Fun Ġwith ĠKotlin " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ` when `( event Dao . getAll ()). thenReturn ( Flow able . just ( listOf ( event In Database ))) ĊĠĠĠĠĠĠĠ Ġ` when `( api Service . events ()). thenReturn ( Single . just ( listOf ( event From Network ))) ĊĊĠĠĠĠĠĠĠ Ġworker . do Work () ĊĊĠĠĠĠĠĠĠ Ġverify ( event Dao ). replaceAll ( listOf ( event From Network )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` not ifies Ġabout Ġsingle Ġnew Ġupcoming Ġevent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Event From Network Ġ= Ġdefault W tm Event ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Fun Ġwith ĠKotlin ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Start Ġ= Ġtomorrow () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ` when `( event Dao . getAll ()). thenReturn ( Flow able . just ( listOf ())) ĊĠĠĠĠĠĠĠ Ġ` when `( api Service . events ()). thenReturn ( Single . just ( listOf ( new Event From Network ))) ĊĊĠĠĠĠĠĠĠ Ġworker . do Work () ĊĊĠĠĠĠĠĠĠ Ġverify ( notifications ). show New Up coming Event Notification ( new Event From Network ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` not ifies Ġabout Ġmultiple Ġnew Ġupcoming Ġevents `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Events From Network Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault W tm Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Fun Ġwith ĠKotlin ĠPart Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Start Ġ= Ġtomorrow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault W tm Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Fun Ġwith ĠKotlin ĠPart Ġ 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Start Ġ= Ġtomorrow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault W tm Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Fun Ġwith ĠKotlin ĠPart Ġ 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Start Ġ= Ġtomorrow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ` when `( event Dao . getAll ()). thenReturn ( Flow able . just ( listOf ())) ĊĠĠĠĠĠĠĠ Ġ` when `( api Service . events ()). thenReturn ( Single . just ( new Events From Network )) ĊĊĠĠĠĠĠĠĠ Ġworker . do Work () ĊĊĠĠĠĠĠĠĠ Ġverify ( notifications ). show New Up coming Event Notification ( new Events From Network [ 0 ]) ĊĠĠĠĠĠĠĠ Ġverify ( notifications ). show New Up coming Event Notification ( new Events From Network [ 1 ]) ĊĠĠĠĠĠĠĠ Ġverify ( notifications ). show New Up coming Event Notification ( new Events From Network [ 2 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` not ifies Ġonly Ġabout Ġupcoming Ġevents Ġthat Ġwere Ġnot Ġin Ġdatabase Ġalready `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent In Database Ġ= Ġdefault W tm Event ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Fun Ġwith ĠKotlin ĠPart Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Start Ġ= Ġtomorrow () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Event From Network Ġ= Ġdefault W tm Event ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Fun Ġwith ĠKotlin ĠPart Ġ 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Start Ġ= Ġtomorrow () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ` when `( event Dao . getAll ()). thenReturn ( Flow able . just ( listOf ( event In Database ))) ĊĠĠĠĠĠĠĠ Ġ` when `( api Service . events ()). thenReturn ( Single . just ( listOf ( event In Database , Ġnew Event From Network ))) ĊĊĠĠĠĠĠĠĠ Ġworker . do Work () ĊĊĠĠĠĠĠĠĠ Ġverify ( notifications ). show New Up coming Event Notification ( new Event From Network ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtomorrow () Ġ: ĠZ onedDateTime Ġ= ĠZ onedDateTime . now (). plus Days ( 1 ) Ċ }