package Ġcom . g ary mc g ow an . post ap ocal yp se . view . post details . mvp Ċ Ċ import Ġcom . g ary mc g ow an . post ap ocal yp se . core . Scheduler Provider Ċ import Ġcom . g ary mc g ow an . post ap ocal yp se . model . Comment Ċ import Ġcom . g ary mc g ow an . post ap ocal yp se . model . Post Ċ import Ġcom . g ary mc g ow an . post ap ocal yp se . model . User Ċ import Ġcom . g ary mc g ow an . post ap ocal yp se . network . Network Repository Ċ import Ġcom . g ary mc g ow an . post ap ocal yp se . utils . Test Scheduler Provider Ċ import Ġcom . n ha ar man . mockito _ kotlin . given Ċ import Ġcom . n ha ar man . mockito _ kotlin . times Ċ import Ġcom . n ha ar man . mockito _ kotlin . verify Ċ import Ġcom . n ha ar man . mockito _ kotlin . verify No More Interactions Ċ import Ġio . reactivex . Single Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Inject Mocks Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Spy Ċ import Ġorg . mockito . junit . Mockito JUnit Ċ Ċ class ĠPost Details Presenter Test Ġ{ ĊĊĠĠĠ Ġ// R ULES ĊĠĠĠ Ġ@ get : Rule Ġval Ġmock ito Rule Ġ= ĠMockito JUnit . rule () ĊĊĠĠĠ Ġ// MOCK S ĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġnetwork : ĠNetwork Repository ĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġview : ĠPost Details Contract . View ĊĠĠĠ Ġ@ Spy Ġprivate Ġval Ġscheduler : ĠScheduler Provider Ġ= ĠTest Scheduler Provider () ĊĊĠĠĠ Ġ@ Inject Mocks Ġlateinit Ġvar Ġpresenter : ĠPost Details Presenter ĊĊĠĠĠ Ġ// HELPER ĠV als ĊĠĠĠ Ġprivate Ġval Ġpost Ġ= ĠPost ( 1 , Ġ 2 , Ġ" title ", Ġ" body ") ĊĠĠĠ Ġprivate Ġval Ġuser Ġ= ĠUser ( 2 , Ġ" web ", Ġnull , Ġ" phone ", Ġ" name ") ĊĠĠĠ Ġprivate Ġval Ġcomment Ġ= ĠComment ( 2 , Ġ 1 , Ġ" name ", Ġ" body ", Ġ" email ") ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( network ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Given Ġuser Ġl ands Ġon Ġscreen , Ġcomments Ġare Ġrequested `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġgiven ( network . get Comments ()). willReturn ( Single . just ( listOf ( comment ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpresenter . take View ( view ) ĊĠĠĠĠĠĠĠ Ġpresenter . take Post And User ( post , Ġuser ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 1 )). show Comments Loading () ĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 1 )). show Comments Loading () ĊĠĠĠĠĠĠĠ Ġverify ( network , Ġtimes ( 1 )). get Comments () ĊĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 1 )). display Comments ( listOf ( comment )) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Given Ġuser Ġref res hes Ġlist , Ġcomments Ġare Ġrequested `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġ` Given Ġuser Ġl ands Ġon Ġscreen , Ġcomments Ġare Ġrequested `() ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpresenter . on Refresh Comments () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 2 )). show Comments Loading () ĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 2 )). show Comments Loading () ĊĠĠĠĠĠĠĠ Ġverify ( network , Ġtimes ( 2 )). get Comments () ĊĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 2 )). display Comments ( listOf ( comment )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Given Ġuser Ġnavig ates Ġaway , Ġview Ġis Ġdisposed Ġof `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġ` Given Ġuser Ġl ands Ġon Ġscreen , Ġcomments Ġare Ġrequested `() ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpresenter . drop View () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 1 )). show Comments Loading () ĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 1 )). show Comments Loading () ĊĠĠĠĠĠĠĠ Ġverify ( network , Ġtimes ( 1 )). get Comments () ĊĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 1 )). display Comments ( listOf ( comment )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// region ĠErrors ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Given Ġnetwork Ġerror Ġwhen Ġscreen Ġloads , Ġerror Ġmessage Ġis Ġdisplayed `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġgiven ( network . get Comments ()). willReturn ( Single . error ( Throwable (" Something Ġwent Ġwrong "))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpresenter . take View ( view ) ĊĠĠĠĠĠĠĠ Ġpresenter . take Post And User ( post , Ġuser ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 1 )). show Comments Loading () ĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 1 )). hide Comments Loading () ĊĠĠĠĠĠĠĠ Ġverify ( network , Ġtimes ( 1 )). get Comments () ĊĠĠĠĠĠĠĠ Ġverify ( view , Ġtimes ( 1 )). display Error For Comments () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion Ċ }