package Ġcom . v ish nu . test application Ċ Ċ import Ġcom . n ha ar man . mockito _ kotlin . any Ċ import Ġcom . n ha ar man . mockito _ kotlin . given Ċ import Ġcom . v ish nu . test application . base . Android UnitTest Ċ import Ġcom . v ish nu . test application . base . get Or Await Value Ċ import Ġcom . v ish nu . test application . data .* Ċ import Ġcom . v ish nu . test application . data . mapper . Pay ees Mapper Ċ import Ġcom . v ish nu . test application . data . source . Mobile Bank ing Repository Ċ import Ġcom . v ish nu . test application . data . source . mock . getMock Response Ċ import Ġcom . v ish nu . test application . di . repository Module Ċ import Ġcom . v ish nu . test application . di . transfer Module Ċ import Ġcom . v ish nu . test application . domain .* Ċ import Ġcom . v ish nu . test application . ui . home . Transfer ViewModel Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Test Ċ import Ġorg . k oin . core . component . inject Ċ import Ġorg . k oin . core . context . load K oin Modules Ċ import Ġorg . k oin . test . mock . declare Mock Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠTransactions ViewModel Test Ġ: ĠAndroid UnitTest () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Pay ees UseCase () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġload K oin Modules ( listOf ( repository Module , Ġtransfer Module )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmock Ġ= Ġdeclare Mock < Mobile Bank ing Repository >() ĊĠĠĠĠĠĠĠ Ġgiven ( mock . get Pay ees ( any ())). will Answer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremote Response Ġ= Ġcontext . getMock Response (" mocks / pay ees . json ", ĠPay ees :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmock Response Ġ= ĠPay ees Mapper . map ( remote Response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( mock Response ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġuse Case : ĠGet Pay ees UseCase Ġby Ġinject () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġuse Case . invoke () ĊĠĠĠĠĠĠĠ ĠassertEquals (" J ason ", Ġresult . data ?. first OrNull ()?. account Holder Name . or Empty ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" 8 0 1 3 - 7 7 7 - 3 2 3 2 ", Ġresult . data ?. first OrNull ()?. account No . or Empty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Transfer UseCase () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġload K oin Modules ( listOf ( repository Module , Ġtransfer Module )) ĊĠĠĠĠĠĠĠ Ġval Ġmock Ġ= Ġdeclare Mock < Mobile Bank ing Repository >() ĊĠĠĠĠĠĠĠ Ġgiven ( mock . transfer ( any ())). will Answer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġit . arguments [ 0 ] Ġas ĠTransfer Request ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransfer Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠData ( request . amount , Ġrequest . date , Ġrequest . description , Ġ" 1 2 3 4 5 ", Ġrequest . recipient Account No ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġ" Success " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġuse Case : ĠTransfer Amount UseCase Ġby Ġinject () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠTransfer Request ( 1 , Ġ" 3 0 ĠOct ", Ġ" test Ġsend ", Ġ" 8 0 1 3 7 7 7 3 2 3 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġuse Case . invoke ( request ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" test Ġsend ", Ġresult . data ?. response ?. description . or Empty ()) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Transfer ViewModel LiveData () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġload K oin Modules ( listOf ( repository Module , Ġtransfer Module )) ĊĠĠĠĠĠĠĠ Ġval Ġmock Invalidate UseCase Ġ= Ġdeclare Mock < Invalidate Session UseCase >() ĊĠĠĠĠĠĠĠ Ġval Ġmock Ġ= Ġdeclare Mock < Mobile Bank ing Repository >() ĊĠĠĠĠĠĠĠ Ġgiven ( mock . transfer ( any ())). will Answer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġit . arguments [ 0 ] Ġas ĠTransfer Request ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransfer Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠData ( request . amount , Ġrequest . date , Ġrequest . description , Ġ" 1 2 3 4 5 ", Ġrequest . recipient Account No ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġ" Success " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen Ġno Ġdata Ġis Ġset ĊĠĠĠĠĠĠĠ Ġval ĠviewModel : ĠTransfer ViewModel Ġby Ġinject () ĊĠĠĠĠĠĠĠ ĠviewModel . setUp Valid ations () ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġthe Ġdata ĊĠĠĠĠĠĠĠ ĠviewModel . transfer Pay ee . value Ġ= ĠPay ee (" 1 ", Ġ" J ason ", Ġ" 8 0 1 3 7 7 7 3 2 3 2 ") ĊĠĠĠĠĠĠĠ ĠviewModel . transfer Date . value Ġ= Ġ" 3 0 ĠOct " ĊĠĠĠĠĠĠĠ ĠviewModel . transfer Comments . value Ġ= Ġ" test Ġsend " ĊĠĠĠĠĠĠĠ ĠviewModel . transfer Amount . value Ġ= Ġ" 1 " ĊĊĠĠĠĠĠĠĠ Ġval Ġis Submit Enabled Ġ= ĠviewModel . is Submit Button Enabled . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġis Submit Enabled Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcall Ġapi ĊĠĠĠĠĠĠĠ ĠviewModel . transfer Amount () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠviewModel . transfer Success . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertEquals ( result . peek Content (), Ġ" Tr as action ĠReference ĠNumber Ġ 1 2 3 4 5 Ġis ĠSuccess . Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Account Number Ġ: Ġ 8 0 1 3 7 7 7 3 2 3 2 Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Date ĠĠĠĠĠĠĠĠĠ Ġ: Ġ 3 0 ĠOct Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Description ĠĠ Ġ: Ġtest Ġsend Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Amount ĠĠĠĠĠĠĠ Ġ: Ġ 1 ") ĊĠĠĠ Ġ} ĊĊĊ Ċ }