package Ġcom . was isto . github user finder . domain . use cases Ċ Ċ import Ġcom . was isto . github user finder . domain . No Op Logger Ċ import Ġcom . was isto . github user finder . domain . interfaces . Github DataSource Ċ import Ġcom . was isto . github user finder . domain . interfaces . Search History DataSource Ċ import Ġcom . was isto . github user finder . domain . models . Search History Item Ċ import Ġcom . was isto . github user finder . domain . models . Search Users Result Ċ import Ġio . mock k .* Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ import Ġorg . junit . Assert .* Ċ Ċ class ĠSearch Users UseCase Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch Users UseCase : ĠSearch Users UseCase ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgithub DataSource : ĠGithub DataSource ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch History DataSource : ĠSearch History DataSource ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this , Ġrelax Unit Fun Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġsearch Users UseCase Ġ= ĠSearch Users UseCase ( github DataSource , Ġsearch History DataSource , ĠNo Op Logger ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Invoke () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" john " ĊĠĠĠĠĠĠĠ Ġval Ġsearch Result Ġ= ĠSearch Users Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Count Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Users Result . Item (" john smith "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Users Result . Item (" john doe ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġgithub DataSource . search Users ( query ) Ġ}. returns ( search Result ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( search Result , Ġsearch Users UseCase ( query )) ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġsearch History DataSource . add ( Search History Item ( query Ġ= Ġquery )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Invoke _ add Search History Item Throws Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" john " ĊĠĠĠĠĠĠĠ Ġval Ġsearch Result Ġ= ĠSearch Users Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Count Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Users Result . Item (" john smith "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Users Result . Item (" john doe ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġgithub DataSource . search Users ( query ) Ġ}. returns ( search Result ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch History Item Slot Ġ= Ġslot < Search History Item >() ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġsearch History DataSource . add ( capture ( search History Item Slot )) Ġ}. throws ( Exception ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( search Result , Ġsearch Users UseCase ( query )) ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġsearch History DataSource . add ( Search History Item ( query Ġ= Ġquery )) Ġ} ĊĠĠĠ Ġ} Ċ }