package Ġcom . wis nu . k urn i awan . comp o set od olist . features . login . ui Ċ Ċ import Ġapp . cash . tur bine . test Ċ import Ġcom . wis nu . k urn i awan . comp o set od olist . Base ViewModel Test Ċ import Ġcom . wis nu . k urn i awan . comp o set od olist . features . login . data . I Login Environment Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġkotlinx . coroutines . test . run Test Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ import Ġkotlin . time . Experimental Time Ċ Ċ @ Experimental Time Ċ @ Experimental Cor outines Api Ċ class ĠLogin ViewModel Test Ġ: ĠBase ViewModel Test () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogin Environment Ġ= Ġobject Ġ: ĠI Login Environment Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlogin ( email : ĠString , Ġpassword : ĠString ): ĠFlow < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġflow Ġ{ Ġemit ( Any ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġlogin ViewModel : ĠLogin ViewModel Ġ= ĠLogin ViewModel ( login Environment ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupdate UserName () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Change Email (" q we ")) ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Change Email (" q we 2 ")) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" q we 2 ", Ġlogin ViewModel . state . value . email ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupdate Password () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Change Password (" 1 2 3 ")) ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Change Password (" 1 2 3 4 ")) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 1 2 3 4 ", Ġlogin ViewModel . state . value . password ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlogin Valid Email () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Change Email (" q we @ gmail . com ")) ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Change Password (" 1 2 3 4 ")) ĊĊĠĠĠĠĠĠĠ Ġlogin ViewModel . effect . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Click Login ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertFalse ( login ViewModel . state . value . show Email Invalid Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Login Effect . Navigate To Dashboard , Ġawait Item ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel And Consume Remaining Events () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlogin Invalid Email () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Change Email (" q we gmail . com ")) ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Change Password (" 1 2 3 4 ")) ĊĊĠĠĠĠĠĠĠ Ġlogin ViewModel . effect . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin ViewModel . dispatch ( Login Action . Click Login ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertTrue ( login ViewModel . state . value . show Email Invalid Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect No Events () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcancel And Consume Remaining Events () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ