package Ġl uc asc amp os . labs . movies Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġl uc asc amp os . labs . movies . models . Discover Response Ċ import Ġl uc asc amp os . labs . movies . models . Movie Ċ 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 Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . mockito . Mockito . verify Ċ import Ġorg . mockito . Mockito . never Ċ import Ġorg . mockito . junit . Mockito JUnit Runner Ċ Ċ @ RunWith ( Mockito JUnit Runner :: class ) Ċ class ĠMovie ViewModel Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠMovie ViewModel ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġapi : ĠMovie Api ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠMovie ViewModel ( api ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Success Request _ when Fetch Movies _ then Movies IsNotNull () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġcreate Successful Response () ĊĠĠĠĠĠĠĠ Ġ` when `( api . fetch Movies ()). thenReturn ( Call Mock . success ( response )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ ĠviewModel . fetch Movies () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals ( response , ĠviewModel . movies . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Fail Request _ when Fetch Movies _ then Error IsNotNull () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġerror Response Ġ= ĠThrowable () ĊĠĠĠĠĠĠĠ Ġ` when `( api . fetch Movies ()). thenReturn ( Call Mock . error ( error Response )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ ĠviewModel . fetch Movies () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertEquals ( error Response , ĠviewModel . default Error . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgiven Movies NotNull _ when Fetch Movies _ then Not Fetch Movies () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ ĠviewModel . movies . value Ġ= Ġcreate Successful Response () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ ĠviewModel . fetch Movies () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ Ġverify ( api , Ġnever ()). fetch Movies () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Successful Response () Ġ= ĠDis cover Response ( listOf ( Movie ( title Ġ= Ġ" H arry ĠPot ter ", Ġposter Ġ= Ġ" "))) Ċ Ċ } Ċ