package Ġcom . converter . currency . ui . view Ċ Ċ import Ġcom . converter . currency . model . Currency Ċ import Ġcom . converter . currency . testdata . Currency TestData Ċ import Ġcom . converter . currency . ui . Currency Rates UseCase Ċ import Ġcom . converter . currency . ui . Currency Rates ViewModel Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Inject Mocks Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito Annotations Ċ import Ġorg . mockito . junit . Mockito JUnit Runner Ċ Ċ @ RunWith ( Mockito JUnit Runner :: class ) Ċ class ĠCurrency Rates Fragment Test Ġ{ ĊĊĠĠĠ Ġ// Ġregion Ġconstants Ġ---------------------------------------------------------------------------- ĊĠĠĠ Ġprivate Ġval ĠPRODUCT _ DETAILS : ĠArrayList < Currency > Ġ= ĠCurrency TestData . getC urrency () ĊĠĠĠ Ġ// Ġend region Ġconstants Ġ------------------------------------------------------------------------- ĊĊĠĠĠ Ġ// Ġend region Ġconstants Ġ------------------------------------------------------------------------- ĊĊĠĠĠ Ġ@ Inject Mocks ĊĠĠĠ Ġlateinit Ġvar ĠS UT : ĠCurrency Rates Fragment ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġm Product ListView : ĠCurrency Rates View ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġm Product List ViewModel : ĠCurrency Rates ViewModel ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġm Currency Rates UseCase : ĠCurrency Rates UseCase ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Mockito Annotations . init Mocks ( this ) ĊĠĠĠĠĠĠĠ Ġ// S UT Ġ= ĠCurrency Rates Fragment () ĊĠĠĠĠĠĠĠ Ġ// m Product List ViewModel Ġ= ĠCurrency Rates ViewModel ( m Currency Rates UseCase ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠonStart _ progress Indication Shown () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ ĠS UT . onStart () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠMockito . verify ( m Product ListView ). show Progress Indication () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠonStart _ register _ listener _ before _ service _ call () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ ĠS UT . onStart () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠMockito . verify ( m Product ListView ). register Listener ( S UT ) ĊĠĠĠĠĠĠĠ Ġ// Mockito . verify ( m Product List ViewModel ). register Listener ( S UT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġon Stop _ unregister _ listener _ after _ service _ call () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ ĠS UT . on Stop () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠMockito . verify ( m Product ListView ). unregister Listener ( S UT ) ĊĠĠĠĠĠĠ Ġ// ĠMockito . verify ( m Product List ViewModel ). unregister Listener ( S UT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġon Service _ fail _ progress Indication Hide () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ ĠS UT . on Fetch Currency Fail And Notify () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠMockito . verify ( m Product ListView ). hide Progress Indication () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġon Service _ successful Response _ product Bound To View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ ĠS UT . on Fetch Currency Su cess And Notify ( PRODUCT _ DETAILS ) ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠMockito . verify ( m Product ListView ). hide Progress Indication () ĊĠĠĠĠĠĠĠ ĠMockito . verify ( m Product ListView ). update Items ( PRODUCT _ DETAILS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġon Service _ fail Response _ error Bound To View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ ĠS UT . on Fetch Currency Fail And Notify () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠĠ ĠMockito . verify ( m Product ListView ). set ServerError () ĊĠĠĠ Ġ} Ċ }