package Ġbr . com . rail an x isto . ch uck facts . data Ċ Ċ import Ġbr . com . rail an x isto . ch uck facts . data . local . DAO . Category Dao Ċ import Ġbr . com . rail an x isto . ch uck facts . data . local . DAO . Term Dao Ċ import Ġbr . com . rail an x isto . ch uck facts . data . local . model . Category Ċ import Ġbr . com . rail an x isto . ch uck facts . data . remote . Ch uck Fact s Service Ċ import Ġbr . com . rail an x isto . ch uck facts . data . remote . repositories . Search Fact s Repository Impl Ċ import Ġio . reactivex . Single Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . k oin . test . Auto Close K oin Test Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito Annotations Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠSearch Fact s Repository Test Ġ: ĠAuto Close K oin Test () Ġ{ ĊĊĠĠĠ Ġval Ġservice Ġby Ġlazy Ġ{ ĠMockito . mock ( Ch uck Fact s Service :: class . java ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġterm Dao Ġby Ġlazy Ġ{ ĠMockito . mock ( Term Dao :: class . java ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġcategory Dao Ġby Ġlazy Ġ{ ĠMockito . mock ( Category Dao :: class . java ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġsearch Fact s Repository Ġby Ġlazy Ġ{ ĠSearch Fact s Repository Impl ( service , Ġcategory Dao , Ġterm Dao ) Ġ} ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito Annotations . init Mocks ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ mock _ service () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSingle . just ( listOf (" dev ", Ġ" food ", Ġ" animal ")) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( service . getC ategories ()). thenReturn ( result ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( service . getC ategories (), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġcategories Ġfrom Ġapi Ġif Ġdatabase Ġis Ġempty `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠSingle . just ( listOf (" food ", Ġ" dev ")) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( service . getC ategories ()). thenReturn ( response ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( category Dao . getC ategories ()). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( listOf ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsearch Fact s Repository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getC ategories () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr . com . rail an x isto . ch uck facts . domain . Category (" food "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr . com . rail an x isto . ch uck facts . domain . Category (" dev ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġcategories Ġfrom Ġdatabase Ġif Ġthey Ġare Ġnot Ġempty `() Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito .` when `( service . getC ategories ()). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( listOf (" animal ", Ġ" science ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( category Dao . getC ategories ()). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( listOf ( Category (" food "), ĠCategory (" dev "))) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsearch Fact s Repository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getC ategories () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr . com . rail an x isto . ch uck facts . domain . Category (" food "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr . com . rail an x isto . ch uck facts . domain . Category (" dev ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }