package Ġl uc asc amp os . labs . core . view model Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġl uc asc amp os . labs . test . service . Call Mock Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠBase ViewModel Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġlateinit Ġvar Ġsut Ġ: ĠBase ViewModel ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġsut Ġ= ĠBase ViewModel Impl () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Request With Success _ When Make Request _ Then ViewState Be Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġmock Success Ġ= ĠCall Mock . success ("") ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġsut . make Request ( mock Success ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals ( ViewState . SUCCESS , Ġsut . view State . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Request WithError _ When Make Request _ Then ViewState Be Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġmock Error Ġ= ĠCall Mock . error < Throwable >( Throwable ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġsut . make Request ( mock Error ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals ( ViewState . ERROR , Ġsut . view State . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Request WithError _ When Make Request _ Then Default Error IsSet () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġthrowable Ġ= ĠThrowable () ĊĠĠĠĠĠĠĠ Ġval Ġmock Error Ġ= ĠCall Mock . error < Throwable >( throwable ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġsut . make Request ( mock Error ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals ( throwable , Ġsut . default Error . value ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠBase ViewModel Impl Ġ: ĠBase ViewModel ()