/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 , Ġ 2 0 2 2 ĠZ UP ĠIT ĠSER V IC OS ĠEM ĠT EC NO LOG IA ĠE ĠIN OV AC AO ĠSA Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġbr . com . z up . be agle . android . context Ċ Ċ import Ġandroid . view . View Ċ import Ġbr . com . z up . be agle . android . Base Test Ċ import Ġbr . com . z up . be agle . android . components . layout . Container Ċ import Ġbr . com . z up . be agle . android . view . view model . Screen Context ViewModel Ċ import Ġio . mock k . Runs Ċ import Ġio . mock k . clear Mocks Ċ import Ġio . mock k . every Ċ import Ġio . mock k . just Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . slot Ċ import Ġio . mock k . verify Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠContext Component Handler Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġview Ġ= Ġmock k < View >( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġ= Ġmock k < Screen Context ViewModel >( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġcomponent Ġ= Ġmock k < Container >() ĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= Ġmock k < Context Data >() ĊĊĠĠĠ Ġprivate Ġval Ġcontext Component Handler Ġ= ĠContext Component Handler () ĊĊĠĠĠ Ġ@ Before All ĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġroot View . get ViewModel Store Owner () Ġ} Ġreturns Ġroot View . activity ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcomponent . context Ġ} Ġreturns Ġcontext ĊĠĠĠĠĠĠĠ Ġprepare ViewModel Mock ( viewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Mocks ( viewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` G IV EN Ġa Ġcontext Ġcomponent ĠWHEN Ġhandle Component Ġis Ġcalled ĠTHEN Ġshould Ġcall Ġadd Context `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġcontext Component Handler . handle Component ( view , ĠviewModel , Ġcomponent ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠviewModel . add Context ( view , Ġcontext ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` G IV EN Ġa Ġview Ġwith Ġcontext ĠWHEN Ġon View Attached To Window Ġis Ġcalled ĠTHEN Ġshould Ġcall Ġlink Binding To Context And Evaluate The m `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġlistener Slot Ġ= Ġslot < View . On Attach State ChangeListener >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġview . add On Attach State ChangeListener ( capture ( listener Slot )) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġcontext Component Handler . handle Component ( view , ĠviewModel , Ġcomponent ) ĊĠĠĠĠĠĠĠ Ġlistener Slot . captured . on View Attached To Window ( view ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠviewModel . link Binding To Context And Evaluate The m ( view ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ