package Ġcom . oz an top uz . tv shows . data . datasource Ċ Ċ import Ġcom . google . common . truth . Truth Ċ import Ġcom . oz an top uz . tv shows . Constants Ċ import Ġcom . oz an top uz . tv shows . data . entity .* Ċ import Ġcom . oz an top uz . tv shows . data . mapper . Tv Show Domain Mapper Ċ import Ġcom . oz an top uz . tv shows . data . service . Tv Show Service Ċ import Ġcom . oz an top uz . tv shows . rule . Cor outines Test Rule Ċ import Ġio . mock k .* Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ @ Experimental Cor outines Api Ċ class ĠT v Show Remote DataSource Impl Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġcor outines Test Rule Ġ= ĠCor outines Test Rule () ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġlateinit Ġvar Ġtv Show Service : ĠT v Show Service ĊĊĠĠĠ Ġlateinit Ġvar Ġtv Show Domain Mapper : ĠT v Show Domain Mapper ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Show Remote DataSource : ĠT v Show Remote DataSource ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġtv Show Domain Mapper Ġ= ĠT v Show Domain Mapper () ĊĠĠĠĠĠĠĠ Ġtv Show Remote DataSource Ġ= ĠT v Show Remote DataSource Impl ( tv Show Service , Ġtv Show Domain Mapper ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġun mock k All () ĊĠĠĠĠĠĠĠ Ġclear All Mocks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Tv Shows _ returns _ the _ expected _ data () Ġ{ ĊĠĠĠĠĠĠĠ Ġcor outines Test Rule . test Dispatcher . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Show Service . get Tv Shows ( Constants . PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. co Answers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT v Show Response Raw Factory . get Tv Show Response Raw () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠT v Show Response Ġ= Ġtv Show Remote DataSource . fetch Tv Shows ( Constants . PAGE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( result ). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( result ). isEqualTo ( Tv Show Response Factory . get Tv Show Response ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Verify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġtv Show Service . get Tv Shows ( Constants . PAGE ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Verified ( tv Show Service ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Tv Shows Contract _ returns _ error () Ġ{ ĊĠĠĠĠĠĠĠ Ġcor outines Test Rule . test Dispatcher . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Show Service . get Tv Shows ( Constants . PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. co Answers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT v Show Response Raw ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠT v Show Response Ġ= Ġtv Show Remote DataSource . fetch Tv Shows ( Constants . PAGE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( result ). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( result ). isEqualTo ( Tv Show Response ( null )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Verify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġtv Show Service . get Tv Shows ( Constants . PAGE ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Verified ( tv Show Service ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }