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 . Environment Ċ import Ġcom . kick starter . mock . services . Mock A pol lo Client Ċ 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 Ġ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 ) ĊĠĠĠĠĠĠĠ Ġthis . ko ala Test . assert Value ( Ġ" View ed ĠChange ĠPassword ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ 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 ") ĊĠĠĠĠĠĠĠ Ġthis . ko ala Test . assert Values ( Ġ" View ed ĠChange ĠPassword ", Ġ" Changed ĠPassword ") ĊĠĠĠ Ġ} Ċ } Ċ