package Ġio . github . lord ray den mk . super hero es app . super hero es . super her ode t ails Ċ Ċ import Ġapp . cash . tur bine . test Ċ import Ġio . github . lord ray den mk . super hero es app . App Module Ċ import Ġio . github . lord ray den mk . super hero es app . R Ċ import Ġio . github . lord ray den mk . super hero es app . common . Error Text Res Ċ import Ġio . github . lord ray den mk . super hero es app . common . Placeholder String Ċ import Ġio . github . lord ray den mk . super hero es app . common . Test ViewModel Ċ import Ġio . github . lord ray den mk . super hero es app . common . presentation . ViewModel Algebra Ċ import Ġio . github . lord ray den mk . super hero es app . super hero es . data . Resource List Ċ import Ġio . github . lord ray den mk . super hero es app . super hero es . data . Super hero Dto Ċ import Ġio . github . lord ray den mk . super hero es app . super hero es . data . Super hero es Service Ċ import Ġio . github . lord ray den mk . super hero es app . super hero es . data . Thumbnail Dto Ċ import Ġio . github . lord ray den mk . super hero es app . super hero es . test Super hero Service Ċ import Ġio . kot est . core . spec . style . Fun Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . empty Flow Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url Ċ import Ġjava . io . IOException Ċ Ċ class ĠSuper hero Details Kt Test Ġ: ĠFun Spec ({ ĊĊĠĠĠ Ġfun Ġsuper hero Dto ( ĊĠĠĠĠĠĠĠ Ġid : ĠLong , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġthumbnail Path : ĠString , ĊĠĠĠĠĠĠĠ Ġthumbnail Ext : ĠString , ĊĠĠĠĠĠĠĠ Ġcom ics : ĠInt Ġ= Ġ 4 , ĊĠĠĠĠĠĠĠ Ġstories : ĠInt Ġ= Ġ 6 , ĊĠĠĠĠĠĠĠ Ġevents : ĠInt Ġ= Ġ 8 , ĊĠĠĠĠĠĠĠ Ġseries : ĠInt Ġ= Ġ 2 ĊĠĠĠ Ġ): ĠSuper hero Dto Ġ= ĊĠĠĠĠĠĠĠ ĠSuper hero Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThumb nail Dto ( thumbnail Path , Ġthumbnail Ext ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource List ( com ics ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource List ( stories ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource List ( events ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource List ( series ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġmodule ( ĊĠĠĠĠĠĠĠ Ġservice : ĠSuper hero es Service , ĊĠĠĠĠĠĠĠ ĠviewModel Algebra : ĠViewModel Algebra < Super hero Details ViewState , ĠSuper hero Details Effect > ĊĠĠĠ Ġ) Ġ= Ġobject Ġ: ĠSuper hero Details Module , ĠApp Module Ġby ĠApp Module . create ( service ), ĊĠĠĠĠĠĠĠ ĠViewModel Algebra < Super hero Details ViewState , ĠSuper hero Details Effect > Ġby ĠviewModel Algebra Ġ{} ĊĊĊĠĠĠ Ġtest (" First Load Ġ- Ġservice Ġwith Ġsuccess Ġ- ĠSuper hero ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġh ulk Dto Ġ= Ġsuper hero Dto ( 4 2 , Ġ" H ulk ", Ġ" https :// h ulk ", Ġ" jpg ", Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġtest Super hero Service ( listOf ( h ulk Dto )) ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠTest ViewModel < Super hero Details ViewState , ĠSuper hero Details Effect >() ĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= Ġmodule ( service , ĠviewModel ) ĊĊĠĠĠĠĠĠĠ Ġwith ( module ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram ( 4 2 , Ġempty Flow ()). collect () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh ulk Ġ= ĠSuper hero Details View Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" H ulk ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// h ulk . jpg ". to Http Url (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom ics Ġ= ĠPlace holder String ( R . string . super hero _ details _ com ics , Ġ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstories Ġ= ĠPlace holder String ( R . string . super hero _ details _ stories , Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents Ġ= ĠPlace holder String ( R . string . super hero _ details _ events , Ġ 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseries Ġ= ĠPlace holder String ( R . string . super hero _ details _ series , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . view State . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Item () ĠshouldBe ĠLoading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Item () ĠshouldBe ĠContent ( h ulk , Ġ" Mar vel Ġro cks !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" First Load Ġ- Ġservice Ġwith Ġerror Ġ- ĠProblem ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠIOException (" Bang ") ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġtest Super hero Service ( error ) ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠTest ViewModel < Super hero Details ViewState , ĠSuper hero Details Effect >() ĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= Ġmodule ( service , ĠviewModel ) ĊĊĠĠĠĠĠĠĠ Ġwith ( module ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram ( 4 2 , Ġempty Flow ()). collect () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Problem Ġ= ĠProblem ( Error Text Res ( R . string . error _ recover able _ network )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . view State . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Item () ĠshouldBe ĠLoading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Item () ĠshouldBe Ġexpected Problem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" Action ĠUp Ġ- ĠNavigate Up ĠEffect ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠTest ViewModel < Super hero Details ViewState , ĠSuper hero Details Effect >() ĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= Ġmodule ( test Super hero Service ( emptyList ()), ĠviewModel ) ĊĊĠĠĠĠĠĠĠ Ġwith ( module ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram ( 4 2 , Ġflow Of ( Up )). collect () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . effects . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Item () ĠshouldBe ĠNavigate Up ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ