package Ġcom . kick starter . view models Ċ Ċ import ĠUpdate User Password Mutation Ċ import Ġcom . kick starter . KS Ro bo lectric TestCase Ċ import Ġcom . kick starter . R Ċ import Ġcom . kick starter . libs . An alytic Events Ċ import Ġcom . kick starter . libs . Environment Ċ import Ġcom . kick starter . libs . Mock CurrentUser Ċ import Ġcom . kick starter . libs . Mock Tracking Client Ċ import Ġcom . kick starter . libs . Tracking Client Type Ċ import Ġcom . kick starter . mock . Mock Current Config Ċ import Ġcom . kick starter . mock . Mock Experiment s Client Type Ċ import Ġcom . kick starter . mock . factories . User Factory Ċ import Ġcom . kick starter . mock . services . Mock A pol lo Client Ċ import Ġcom . kick starter . models . User Ċ import Ġorg . junit . Test Ċ import Ġrx . Observable Ċ import Ġrx . ob servers . Test Subscriber Ċ Ċ class ĠChange Password ViewModel Test Ġ: ĠK S Ro bo lectric TestCase () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvm : ĠChange Password ViewModel . ViewModel ĊĊĠĠĠ Ġprivate Ġval Ġerror Ġ= ĠTest Subscriber < String >() ĊĠĠĠ Ġprivate Ġval Ġpassword Warning Ġ= ĠTest Subscriber < Int >() ĊĠĠĠ Ġprivate Ġval ĠprogressBar Is Visible Ġ= ĠTest Subscriber < Boolean >() ĊĠĠĠ Ġprivate Ġval Ġsave Button IsEnabled Ġ= ĠTest Subscriber < Boolean >() ĊĠĠĠ Ġprivate Ġval Ġsuccess Ġ= ĠTest Subscriber < String >() ĊĠĠĠ Ġprivate Ġval ĠcurrentUser Ġ= ĠTest Subscriber < User ?> () ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Environment ( environment : ĠEnvironment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . vm Ġ= ĠChange Password ViewModel . ViewModel ( environment ) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . error (). subscribe ( this . error ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . password Warning (). subscribe ( this . password Warning ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . progress Bar Is Visible (). subscribe ( this . progress Bar Is Visible ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . save Button IsEnabled (). subscribe ( this . save Button IsEnabled ) ĊĠĠĠĠĠĠĠ Ġthis . vm . outputs . success (). subscribe ( this . success ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Error () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment (). to Builder (). apollo Client ( object Ġ: ĠMock A pol lo Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate User Password ( current Password : ĠString , Ġnew Password : ĠString , Ġconfirm Password : ĠString ): ĠObservable < Update User Password Mutation . Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠObservable . error ( Exception (" O ops ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). build () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . current Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . new Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . change Password Clicked () ĊĠĠĠĠĠĠĠ Ġthis . error . assert Value (" O ops ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Password Warning () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ()) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . new Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . password Warning . assert Value ( null ) ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . new Password (" p ") ĊĠĠĠĠĠĠĠ Ġthis . password Warning . assert Values ( null , ĠR . string . Password _ min _ length _ message ) ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . new Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . password Warning . assert Values ( null , ĠR . string . Password _ min _ length _ message , Ġnull ) ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" p ") ĊĠĠĠĠĠĠĠ Ġthis . password Warning . assert Values ( null , ĠR . string . Password _ min _ length _ message , Ġnull , ĠR . string . Password s _ matching _ message ) ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" pass w ") ĊĠĠĠĠĠĠĠ Ġthis . password Warning . assert Values ( null , ĠR . string . Password _ min _ length _ message , Ġnull , ĠR . string . Password s _ matching _ message ) ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . password Warning . assert Values ( null , ĠR . string . Password _ min _ length _ message , Ġnull , ĠR . string . Password s _ matching _ message , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest ProgressBar Is Visible () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ()) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . current Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . new Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . change Password Clicked () ĊĠĠĠĠĠĠĠ Ġthis . progress Bar Is Visible . assert Values ( true , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Save Button IsEnabled () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ()) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . current Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . new Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . save Button IsEnabled . assert Values ( false , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" pass ") ĊĠĠĠĠĠĠĠ Ġthis . save Button IsEnabled . assert Values ( false , Ġtrue , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" pass wer d ") ĊĠĠĠĠĠĠĠ Ġthis . save Button IsEnabled . assert Values ( false , Ġtrue , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Success () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetUp Environment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment (). to Builder (). apollo Client ( object Ġ: ĠMock A pol lo Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate User Password ( current Password : ĠString , Ġnew Password : ĠString , Ġconfirm Password : ĠString ): ĠObservable < Update User Password Mutation . Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate User Password Mutation . Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate User Password Mutation . Update User Account ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate User Password Mutation . User ("", Ġ" test @ email . com ", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). build () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . current Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . new Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . change Password Clicked () ĊĠĠĠĠĠĠĠ Ġthis . success . assert Value (" test @ email . com ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġuser LoggedIn _ when Change Password Error _ user Not Reset () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ- Ġcreate ĠMock Tracking Ġclient Ġwith Ġuser Ġlogged Ġin ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Factory . user () ĊĠĠĠĠĠĠĠ Ġval Ġtracking Client Ġ= Ġget Mock Client With User ( user ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠMock Ġfailed Ġresponse Ġfrom Ġap ollo ĊĠĠĠĠĠĠĠ Ġval Ġap ollo Client Ġ= Ġobject Ġ: ĠMock A pol lo Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate User Password ( current Password : ĠString , Ġnew Password : ĠString , Ġconfirm Password : ĠString ): ĠObservable < Update User Password Mutation . Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠObservable . error ( Exception (" O ops ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠCreate Ġenvironment Ġwith Ġmocked Ġobjects ĊĠĠĠĠĠĠĠ Ġval Ġenvironment Ġ= Ġenvironment (). to Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apollo Client ( apollo Client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. analytics ( An alytic Events ( listOf ( tracking Client ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . current Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . new Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . change Password Clicked () ĊĠĠĠĠĠĠĠ Ġthis . error . assert Value (" O ops ") ĊĊĠĠĠĠĠĠĠ ĠcurrentUser . assert Value ( user ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġser LoggedIn _ when Change Password Success _ user Reset () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ- Ġcreate ĠMock Tracking Ġclient Ġwith Ġuser Ġlogged Ġin ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Factory . user () ĊĠĠĠĠĠĠĠ Ġval Ġtracking Client Ġ= Ġget Mock Client With User ( user ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠMock Ġsuccess Ġresponse Ġfrom Ġap ollo ĊĠĠĠĠĠĠĠ Ġval Ġap ollo Client Ġ= Ġobject Ġ: ĠMock A pol lo Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate User Password ( current Password : ĠString , Ġnew Password : ĠString , Ġconfirm Password : ĠString ): ĠObservable < Update User Password Mutation . Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate User Password Mutation . Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate User Password Mutation . Update User Account ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate User Password Mutation . User ("", Ġ" test @ email . com ", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠCreate Ġenvironment Ġwith Ġmocked Ġobjects ĊĠĠĠĠĠĠĠ Ġval Ġenvironment Ġ= Ġenvironment (). to Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apollo Client ( apollo Client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. analytics ( An alytic Events ( listOf ( tracking Client ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠsetUp Environment ( environment ) ĊĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . current Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . new Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . confirm Password (" password ") ĊĠĠĠĠĠĠĠ Ġthis . vm . inputs . change Password Clicked () ĊĠĠĠĠĠĠĠ Ġthis . success . assert Value (" test @ email . com ") ĊĊĠĠĠĠĠĠĠ ĠcurrentUser . assert Values ( user , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Mock Client With User ( user : ĠUser ) Ġ= ĠMock Tracking Client ( ĊĠĠĠĠĠĠĠ ĠMock CurrentUser ( user ), ĊĠĠĠĠĠĠĠ ĠMock Current Config (), ĊĠĠĠĠĠĠĠ ĠTracking Client Type . Type . SEGMENT , ĊĠĠĠĠĠĠĠ ĠMock Experiment s Client Type () ĊĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . ident ified User . subscribe ( currentUser ) ĊĠĠĠ Ġ} Ċ } Ċ