package Ġes . v og h dev . ch uck nor ris j okes . ui . presenter Ċ Ċ import Ġcom . n ha ar man . mockito _ kotlin . any Ċ 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 . wh enever Ċ import Ġes . v og h dev . ch uck nor ris j okes . any Category Ċ import Ġes . v og h dev . ch uck nor ris j okes . app . Res Locator Ċ import Ġes . v og h dev . ch uck nor ris j okes . model . Jo ke Ċ import Ġes . v og h dev . ch uck nor ris j okes . repository . Ch uck Nor ris Repository Ċ import Ġkotlinx . coroutines . experimental . run Blocking Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Argument Matchers . any String Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito Annotations Ċ Ċ class ĠJo ke By Keyword Presenter Test () Ġ{ ĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġmock Res Locator : ĠRes Locator ĊĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġmock Navigator : ĠJo ke By Keyword Presenter . Navigator ĊĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġmock View : ĠJo ke By Keyword Presenter . M VP View ĊĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġmock Ch uck Nor ris Repository Ġ: ĠCh uck Nor ris Repository ĊĊĠĠĠ Ġlateinit Ġvar Ġpresenter Ġ: ĠJo ke By Keyword Presenter ĊĊĊĠĠĠ Ġval Ġexample Jo ke Ġ= ĠJo ke ( id Ġ= Ġ" abc ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Url Ġ= Ġ" http :// ch uck . image . url ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" http :// example . url ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" We Ġhave Ġour Ġfear s , Ġfear Ġhas Ġits ĠCh uck ĠNor ris ' es ") ĊĊĠĠĠ Ġval Ġanother Jo ke Ġ= ĠJo ke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" Gd EH 6 4 Ak S 9 q EQ C mq Mw M 2 Rg ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Url Ġ= Ġ" https :// assets . ch uck nor ris . host / img / avatar / ch uck - nor ris . png ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" http :// api . ch uck nor ris . io / j okes / Gd EH 6 4 Ak S 9 q EQ C mq Mw M 2 Rg ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" Ch uck ĠNor ris Ġknows Ġhow Ġto Ġsay Ġsou ff le Ġin Ġthe ĠFrench Ġlanguage ." ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito Annotations . init Mocks ( this ) ĊĊĠĠĠĠĠĠĠ Ġpresenter Ġ= Ġcreate Mock ed Presenter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Display Error If Search Button Is Clicked And Text IsEmpty (){ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġpresenter . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Button Search Clicked ("") } ĊĠĠĠĠĠĠĠ Ġverify ( mock View ). show Error (" Please Ġenter Ġkeyword ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Request A Jo ke By Keyword If Text Is NotEmpty (){ ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Ch uck Nor ris Repository . getRandom Jo ke By Keyword ( any String ())). thenReturn ( Pair ( listOf ( example Jo ke , another Jo ke ), Ġnull )) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġpresenter . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Button Search Clicked (" B ru ce ĠLee ")} ĊĠĠĠĠĠĠĠ Ġverify ( mock Ch uck Nor ris Repository ). getRandom Jo ke By Keyword (" br uce Ġle e ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Show The J okes Text When The Api Return A Jo ke By Keyword (){ ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Ch uck Nor ris Repository . getRandom Jo ke By Keyword ( any String ())). thenReturn ( Pair ( listOf ( example Jo ke , another Jo ke ), Ġnull )) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġpresenter . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Button Search Clicked (" B ru ce ĠLee ")} ĊĠĠĠĠĠĠĠ Ġverify ( mock View ). show Jo ke Text (" We Ġhave Ġour Ġfear s , Ġfear Ġhas Ġits ĠCh uck ĠNor ris ' es ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Show The J okes Image When AR andom Jo ke By Keyword Is Received Ġ() Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Ch uck Nor ris Repository . getRandom Jo ke By Keyword ( any String ())). thenReturn ( Pair ( listOf ( example Jo ke , another Jo ke ), Ġnull )) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġpresenter . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Button Search Clicked (" B ru ce ĠLee ")} ĊĠĠĠĠĠĠĠ Ġverify ( mock View , Ġtimes ( 1 )). show Jo ke Image (" http :// ch uck . image . url ") ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġprivate Ġfun Ġcreate Mock ed Presenter (): ĠJo ke By Keyword Presenter Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpresenter Ġ= ĠJo ke By Keyword Presenter ( mock Res Locator , Ġmock Ch uck Nor ris Repository ) ĊĠĠĠĠĠĠĠ Ġpresenter . view Ġ= Ġmock View ĊĠĠĠĠĠĠĠ Ġpresenter . navigator Ġ= Ġmock Navigator ĊĠĠĠĠĠĠĠ Ġreturn Ġpresenter ĊĠĠĠ Ġ} Ċ } Ċ