// ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation . ĠAll Ġrights Ġreserved . Ċ // ĠLicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ċ package Ġcom . azure . android . communication . ui . presentation . fragment . setup . components Ċ Ċ import Ġcom . azure . android . communication . ui . helper . Main Coroutine Rule Ċ import Ġcom . azure . android . communication . ui . presentation . fragment . common . aud i ode vic elist . Audio Device List ViewModel Ċ import Ġcom . azure . android . communication . ui . redux . App Store Ċ import Ġcom . azure . android . communication . ui . redux . action . Local Participant Action Ċ import Ġcom . azure . android . communication . ui . redux . action . Permission Action Ċ import Ġcom . azure . android . communication . ui . redux . state . Redux State Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . junit . Mockito JUnit Runner Ċ import Ġorg . mockito . kotlin . any Ċ import Ġorg . mockito . kotlin . arg That Ċ import Ġorg . mockito . kotlin . do Answer Ċ import Ġorg . mockito . kotlin . mock Ċ import Ġorg . mockito . kotlin . times Ċ import Ġorg . mockito . kotlin . verify Ċ Ċ @ RunWith ( Mockito JUnit Runner :: class ) Ċ internal Ġclass ĠSetup Control Bar ViewModel UnitTest Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġmain Coroutine Rule Ġ= ĠMain Coroutine Rule () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsetup Control Bar ViewModel _ request Audio Permission _ then _ dispatch Audio Permission Requested () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġmock App Store Ġ= Ġmock < App Store < Redux State >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġdispatch ( any ()) Ġ} Ġdo Answer Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Audio Device List ViewModel Ġ= Ġmock < Audio Device List ViewModel >() ĊĠĠĠĠĠĠĠ Ġval Ġsetup Control Bar ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetup Control Bar ViewModel ( mock App Store :: dispatch , Ġmock Audio Device List ViewModel ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsetup Control Bar ViewModel . request Audio Permission () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( mock App Store , Ġtimes ( 1 )). dispatch ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg That Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġis ĠPermission Action . Audio Permission Requested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsetup Control Bar ViewModel _ turn Camera On _ then _ dispatch Camera Preview On Requested () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġmock App Store Ġ= Ġmock < App Store < Redux State >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġdispatch ( any ()) Ġ} Ġdo Answer Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Audio Device List ViewModel Ġ= Ġmock < Audio Device List ViewModel >() ĊĠĠĠĠĠĠĠ Ġval Ġsetup Control Bar ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetup Control Bar ViewModel ( mock App Store :: dispatch , Ġmock Audio Device List ViewModel ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsetup Control Bar ViewModel . turn Camera On () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( mock App Store , Ġtimes ( 1 )). dispatch ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg That Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġis ĠLocal Participant Action . Camera Preview On Requested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsetup Control Bar ViewModel _ turn Camera Off _ then _ dispatch Camera Preview Off Triggered () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġmock App Store Ġ= Ġmock < App Store < Redux State >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġdispatch ( any ()) Ġ} Ġdo Answer Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Audio Device List ViewModel Ġ= Ġmock < Audio Device List ViewModel >() ĊĠĠĠĠĠĠĠ Ġval Ġsetup Control Bar ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetup Control Bar ViewModel ( mock App Store :: dispatch , Ġmock Audio Device List ViewModel ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsetup Control Bar ViewModel . turn Camera Off () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( mock App Store , Ġtimes ( 1 )). dispatch ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg That Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġis ĠLocal Participant Action . Camera Preview Off Triggered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsetup Control Bar ViewModel _ turn Mic On _ then _ dispatch Mic Preview On Triggered () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġmock App Store Ġ= Ġmock < App Store < Redux State >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġdispatch ( any ()) Ġ} Ġdo Answer Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Audio Device List ViewModel Ġ= Ġmock < Audio Device List ViewModel >() ĊĠĠĠĠĠĠĠ Ġval Ġsetup Control Bar ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetup Control Bar ViewModel ( mock App Store :: dispatch , Ġmock Audio Device List ViewModel ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsetup Control Bar ViewModel . turn Mic On () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( mock App Store , Ġtimes ( 1 )). dispatch ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg That Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġis ĠLocal Participant Action . Mic Preview On Triggered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsetup Control Bar ViewModel _ turn Mic Off _ then _ dispatch Mic Preview Off Triggered () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġmock App Store Ġ= Ġmock < App Store < Redux State >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġdispatch ( any ()) Ġ} Ġdo Answer Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmock Audio Device List ViewModel Ġ= Ġmock < Audio Device List ViewModel >() ĊĠĠĠĠĠĠĠ Ġval Ġsetup Control Bar ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetup Control Bar ViewModel ( mock App Store :: dispatch , Ġmock Audio Device List ViewModel ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsetup Control Bar ViewModel . turn Mic Off () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( mock App Store , Ġtimes ( 1 )). dispatch ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg That Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġis ĠLocal Participant Action . Mic Preview Off Triggered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ