package Ġcom . rs dose v . ri me mploy ees lu as . domain Ċ Ċ import Ġcom . rs dose v . ri me mploy ees lu as . Test Coroutine Context Provider Ċ import Ġcom . rs dose v . domain . model . Result Ċ import Ġcom . rs dose v . domain . model . Result . Success Ċ import Ġcom . rs dose v . domain . repository . Lu as Forecast ing Repository Ċ import Ġcom . rs dose v . domain . inter actors . Get Lu as Forecast ing Interactor Ċ import Ġcom . rs dose v . domain . model . Forecast Ċ import Ġcom . rs dose v . domain . model . Forecast . Companion . dummy Forecast 1 Ċ import Ġcom . rs dose v . domain . model . Forecast . Companion . dummy Forecast 2 Ċ import Ġcom . rs dose v . domain . model . Tr am Stop Ċ import Ġcom . rs dose v . domain . model . Tr am Stop . MAR Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Order Ċ import Ġio . mock k . mock k Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġkotlinx . coroutines . flow . toList Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Test Ċ Ċ internal Ġclass ĠGet Lu as Forecast ing UseCase Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġrepository Ġ= Ġmock k < Lu as Forecast ing Repository >() ĊĠĠĠ Ġprivate Ġval Ġinter actor Ġ= ĊĠĠĠĠĠĠĠ ĠGet Lu as Forecast ing Interactor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Coroutine Context Provider () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval ĠERROR _ MSG Ġ= Ġ" error Msg " ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġsuccess Ġwhen Ġgetting Ġtr am Ġstop Ġforecast Ġthen Ġreturn ĠResult ĠSuccess `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġrepository . get Tr am Stop Forecast ( MAR ) Ġ} Ġreturns Ġflow Of ( Success ( dummy Forecast 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġinter actor . get Tr am Stop Forecast ( MAR ). toList (). first () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Verify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Tr am Stop Forecast ( MAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result Ġis ĠSuccess ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (( result Ġas ? ĠSuccess )?. data Ġ== Ġdummy Forecast 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġerror Ġwhen Ġgetting Ġtr am Ġstop Ġforecast Ġthen Ġreturn ĠResult ĠError `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġrepository . get Tr am Stop Forecast ( MAR ) Ġ} Ġreturns Ġflow Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Error . Basic Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg Ġ= ĠERROR _ MSG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġinter actor . get Tr am Stop Forecast ( MAR ). toList (). first () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Verify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Tr am Stop Forecast ( MAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result Ġis ĠResult . Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ERROR _ MSG , Ġ( result Ġas ? ĠResult . Error . Basic Error )?. error Msg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġnetwork Ġerror Ġwhen Ġgetting Ġtr am Ġstop Ġforecast Ġthen Ġreturn ĠResult ĠNetwork Error `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġrepository . get Tr am Stop Forecast ( MAR ) Ġ} Ġreturns Ġflow Of ( Result . Error . Network Error ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġinter actor . get Tr am Stop Forecast ( MAR ). toList (). first () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Verify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Tr am Stop Forecast ( MAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result Ġis ĠResult . Error . Network Error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġother Ġerrors Ġwhen Ġgetting Ġtr am Ġstop Ġforecast Ġthen Ġreturn ĠResult ĠGeneric Error `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġrepository . get Tr am Stop Forecast ( MAR ) Ġ} Ġreturns Ġflow Of ( Result . Error . Api Call Error ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġinter actor . get Tr am Stop Forecast ( MAR ). toList (). first () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Verify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Tr am Stop Forecast ( MAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result Ġis ĠResult . Error . Api Call Error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }