package Ġcom . invent iv . g ast rop ays dk . repository Ċ Ċ import Ġcom . google . common . truth . Truth Ċ import Ġcom . invent iv . g ast rop ays dk . api . G astro Pay Service Ċ import Ġcom . invent iv . g ast rop ays dk . data . Resource Ċ import Ġcom . invent iv . g ast rop ays dk . data . response . Amount Model Ċ import Ġcom . invent iv . g ast rop ays dk . data . response . Last Transactions Response Ċ import Ġcom . invent iv . g ast rop ays dk . data . response . Transaction Summary Response Ċ import Ġcom . invent iv . g ast rop ays dk . data . response . Wallet Response Ċ import Ġcom . invent iv . g ast rop ays dk . utils . Api Util Ċ import Ġcom . invent iv . g ast rop ays dk . utils . loading False Expected Ċ import Ġcom . invent iv . g ast rop ays dk . utils . loading True Expected Ċ import Ġkotlinx . coroutines . flow . collect Indexed Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . kotlin . mock Ċ import Ġorg . mockito . kotlin . wh enever Ċ Ċ class ĠWallet Repository Imp Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġservice : ĠG astro Pay Service Ġ= Ġmock () ĊĊĠĠĠ Ġprivate Ġval Ġrepository Ġ= ĠWallet Repository Imp ( service ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` wallet Ġrepository Ġsuccess Ġtest `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠWallet Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 2 3 4 5 6 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġwhenever ( service . get Wallet ()). thenReturn ( expected ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġrepository . wallet (). collect Indexed Ġ{ Ġindex , Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading True Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( response Ġis ĠResource . Success ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġresponse Ġas ĠResource . Success ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( success . data ). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading False Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` wallet Ġrepository Ġerror Ġtest `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠApi Util . dummy HttpException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠWallet Response :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ 4 0 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġwhenever ( service . get Wallet ()). then Throw ( expected ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġrepository . wallet (). collect Indexed Ġ{ Ġindex , Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading True Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( response Ġis ĠResource . Error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġresponse Ġas ĠResource . Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( error . api Error . code ). isEqualTo ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading False Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` getLast Transactions Ġrepository Ġsuccess Ġtest `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLast Transactions Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmerchant Name Ġ= Ġ" merchant Name ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= ĠAmount Model ( 1 . 0 , Ġ"", Ġ"", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwallet Transaction Type Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Date Ġ= Ġ 1 6 2 7 5 6 0 4 5 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvoice Number Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġwhenever ( service . getLast Transactions (" 1 ", Ġ" 1 ")). thenReturn ( expected ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġrepository . last Transactions (" 1 ", Ġ" 1 "). collect Indexed Ġ{ Ġindex , Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading True Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( response Ġis ĠResource . Success ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġresponse Ġas ĠResource . Success ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( success . data ). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading False Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` getLast Transactions Ġrepository Ġerror Ġtest `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠApi Util . dummy HttpException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠLast Transactions Response :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ 4 0 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġwhenever ( service . getLast Transactions (" 1 ", Ġ" 1 ")). then Throw ( expected ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġrepository . last Transactions (" 1 ", Ġ" 1 "). collect Indexed Ġ{ Ġindex , Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading True Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( response Ġis ĠResource . Error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġresponse Ġas ĠResource . Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( error . api Error . code ). isEqualTo ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading False Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` getTransaction Summary Ġrepository Ġsuccess Ġtest `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠTransaction Summary Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAmount Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġwhenever ( service . getTransaction Summary ()). thenReturn ( expected ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġrepository . transaction Summary (). collect Indexed Ġ{ Ġindex , Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading True Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( response Ġis ĠResource . Success ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġresponse Ġas ĠResource . Success ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( success . data ). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading False Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` transaction Summary Ġrepository Ġerror Ġtest `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠApi Util . dummy HttpException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠTransaction Summary Response :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ 4 0 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġwhenever ( service . getTransaction Summary ()). then Throw ( expected ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġrepository . transaction Summary (). collect Indexed Ġ{ Ġindex , Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading True Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( response Ġis ĠResource . Error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġresponse Ġas ĠResource . Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( error . api Error . code ). isEqualTo ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . loading False Expected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }