package Ġcom . alex zh . im bar ista . remote Ċ Ċ import Ġcom . alex zh . data . model . Session Entity Ċ import Ġcom . alex zh . data . model . User Entity Ċ import Ġcom . alex zh . im bar ista . remote . mapper . Session Remote Mapper Ċ import Ġcom . alex zh . im bar ista . remote . mapper . User Remote Mapper Ċ import Ġcom . alex zh . im bar ista . remote . model . Response Model Ċ import Ġcom . alex zh . im bar ista . remote . model . Session Model Ċ import Ġcom . alex zh . im bar ista . remote . model . User Model Ċ import Ġcom . alex zh . im bar ista . remote . service . C offee Dr inks Service Ċ import Ġcom . alex zh . testdata . base . Random Data . random Email Ċ import Ġcom . alex zh . testdata . base . Random Data . random Long Ċ import Ġcom . alex zh . testdata . base . Random Data . random String Ċ import Ġcom . alex zh . testdata . data . Generate Data TestData . generate Session Entity Ċ import Ġcom . alex zh . testdata . data . Generate Data TestData . generate User Entity Ċ import Ġcom . alex zh . im bar ista . common android testdata . remote . Generate Remote TestData . generate Session Model Ċ import Ġcom . alex zh . im bar ista . remote . mapper . Auth Exception Remote Mapper Ċ import Ġcom . alex zh . im bar ista . remote . mapper . User Already Exist Exception Remote Mapper Ċ import Ġcom . alex zh . im bar ista . remote . model . RefreshToken Model Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . reactivex . Single Ċ import Ġorg . junit . Test Ċ Ċ class ĠUser Remote Repository Impl Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġservice Ġ= Ġmock k < C offee Dr inks Service >() ĊĠĠĠ Ġprivate Ġval Ġuser Mapper Ġ= Ġmock k < User Remote Mapper >() ĊĠĠĠ Ġprivate Ġval Ġsession Mapper Ġ= Ġmock k < Session Remote Mapper >() ĊĠĠĠ Ġprivate Ġval Ġauth Exception Remote Mapper Ġ= Ġmock k < Auth Exception Remote Mapper >() ĊĠĠĠ Ġprivate Ġval Ġuser Auth Exception Remote Mapper Ġ= Ġmock k < User Already Exist Exception Remote Mapper >() ĊĊĠĠĠ Ġprivate Ġval Ġrepository Ġ= ĠUser Remote Repository Impl ( service , Ġuser Mapper , Ġsession Mapper , Ġuser Auth Exception Remote Mapper , Ġauth Exception Remote Mapper ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Account Comp letes Successfully () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Entity Ġ= Ġgenerate User Entity () ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġrandom String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġrandom Email (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Response Ġ= ĠResponse Model ( data Ġ= Ġuser ) ĊĊĠĠĠĠĠĠĠ Ġstub Create User ( user , ĠSingle . just ( expected Response )) ĊĠĠĠĠĠĠĠ Ġstub User Mapper ( expected Response . data , Ġuser Entity ) ĊĊĠĠĠĠĠĠĠ Ġrepository . create Account ( user . name , Ġuser . email , Ġuser . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Account Returns Correct Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Entity Ġ= Ġgenerate User Entity () ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġrandom String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġrandom Email (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Response Ġ= ĠResponse Model ( data Ġ= Ġuser ) ĊĊĠĠĠĠĠĠĠ Ġstub Create User ( user , ĠSingle . just ( expected Response )) ĊĠĠĠĠĠĠĠ Ġstub User Mapper ( expected Response . data , Ġuser Entity ) ĊĊĠĠĠĠĠĠĠ Ġrepository . create Account ( user . name , Ġuser . email , Ġuser . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value ( user Entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlog In Comp letes Successfully () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Entity Ġ= Ġgenerate Session Entity () ĊĠĠĠĠĠĠĠ Ġval Ġsession Model Ġ= Ġgenerate Session Model () ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġrandom Email (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Response Ġ= ĠResponse Model ( data Ġ= Ġsession Model ) ĊĊĠĠĠĠĠĠĠ Ġstub Log In ( user , ĠSingle . just ( expected Response )) ĊĠĠĠĠĠĠĠ Ġstub Session Mapper ( session Model , Ġsession Entity ) ĊĊĠĠĠĠĠĠĠ Ġrepository . log In ( user . email , Ġuser . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlog In Returns Correct Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Entity Ġ= Ġgenerate Session Entity () ĊĠĠĠĠĠĠĠ Ġval Ġsession Model Ġ= Ġgenerate Session Model () ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġrandom Email (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Response Ġ= ĠResponse Model ( data Ġ= Ġsession Model ) ĊĊĠĠĠĠĠĠĠ Ġstub Log In ( user , ĠSingle . just ( expected Response )) ĊĠĠĠĠĠĠĠ Ġstub Session Mapper ( session Model , Ġsession Entity ) ĊĊĠĠĠĠĠĠĠ Ġrepository . log In ( user . email , Ġuser . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value ( session Entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlog Out Comp letes Successfully () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠsessionId Ġ= Ġrandom Long () ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġval Ġsession Entity Ġ= Ġgenerate Session Entity () ĊĠĠĠĠĠĠĠ Ġval Ġsession Model Ġ= Ġgenerate Session Model () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Response Ġ= ĠResponse Model ( data Ġ= Ġsession Model ) ĊĊĠĠĠĠĠĠĠ Ġstub Log Out ( sessionId , ĠaccessToken , ĠSingle . just ( expected Response )) ĊĠĠĠĠĠĠĠ Ġstub Session Mapper ( session Model , Ġsession Entity ) ĊĊĠĠĠĠĠĠĠ Ġrepository . log Out ( sessionId , ĠaccessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlog Out Returns Correct Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠsessionId Ġ= Ġrandom Long () ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġval Ġsession Entity Ġ= Ġgenerate Session Entity () ĊĠĠĠĠĠĠĠ Ġval Ġsession Model Ġ= Ġgenerate Session Model () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Response Ġ= ĠResponse Model ( data Ġ= Ġsession Model ) ĊĊĠĠĠĠĠĠĠ Ġstub Log Out ( sessionId , ĠaccessToken , ĠSingle . just ( expected Response )) ĊĠĠĠĠĠĠĠ Ġstub Session Mapper ( session Model , Ġsession Entity ) ĊĊĠĠĠĠĠĠĠ Ġrepository . log Out ( sessionId , ĠaccessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value ( session Entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrefresh Token Comp letes Successfully () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠsessionId Ġ= Ġrandom Long () ĊĠĠĠĠĠĠĠ Ġval Ġrefresh Token Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġval Ġsession Entity Ġ= Ġgenerate Session Entity () ĊĠĠĠĠĠĠĠ Ġval Ġsession Model Ġ= Ġgenerate Session Model () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Response Ġ= ĠResponse Model ( data Ġ= Ġsession Model ) ĊĊĠĠĠĠĠĠĠ Ġstub RefreshToken ( sessionId , ĠaccessToken , Ġrefresh Token , ĠSingle . just ( expected Response )) ĊĠĠĠĠĠĠĠ Ġstub Session Mapper ( session Model , Ġsession Entity ) ĊĊĠĠĠĠĠĠĠ Ġrepository . refresh Token ( sessionId , ĠaccessToken , Ġrefresh Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrefresh Token Returns Correct Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠsessionId Ġ= Ġrandom Long () ĊĠĠĠĠĠĠĠ Ġval Ġrefresh Token Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġval Ġsession Entity Ġ= Ġgenerate Session Entity () ĊĠĠĠĠĠĠĠ Ġval Ġsession Model Ġ= Ġgenerate Session Model () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Response Ġ= ĠResponse Model ( data Ġ= Ġsession Model ) ĊĊĠĠĠĠĠĠĠ Ġstub RefreshToken ( sessionId , ĠaccessToken , Ġrefresh Token , ĠSingle . just ( expected Response )) ĊĠĠĠĠĠĠĠ Ġstub Session Mapper ( session Model , Ġsession Entity ) ĊĊĠĠĠĠĠĠĠ Ġrepository . refresh Token ( sessionId , ĠaccessToken , Ġrefresh Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value ( session Entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstub Create User ( user : ĠUser Model , Ġresponse : ĠSingle < Response Model < User Model >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġservice . createUser ( user ) Ġ} Ġreturns Ġresponse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstub Log In ( user : ĠUser Model , Ġsession Single : ĠSingle < Response Model < Session Model >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġservice . log In ( user ) Ġ} Ġreturns Ġsession Single ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstub Log Out ( sessionId : ĠLong , ĠaccessToken : ĠString , Ġsession Single : ĠSingle < Response Model < Session Model >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġservice . log Out ( sessionId , ĠaccessToken ) Ġ} Ġreturns Ġsession Single ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstub RefreshToken ( sessionId : ĠLong , ĠaccessToken : ĠString , Ġrefresh Token : ĠString , Ġsingle : ĠSingle < Response Model < Session Model >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġservice . refresh Token ( sessionId , ĠaccessToken , ĠRefresh Token Model ( refresh Token )) Ġ} Ġreturns Ġsingle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstub User Mapper ( user Model : ĠUser Model , Ġuser Entity : ĠUser Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġuser Mapper . map From Model ( user Model ) Ġ} Ġreturns Ġuser Entity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstub Session Mapper ( session Model : ĠSession Model , Ġsession Entity : ĠSession Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġsession Mapper . map From Model ( session Model ) Ġ} Ġreturns Ġsession Entity ĊĠĠĠ Ġ} Ċ }