package Ġcom . da im ler . mb c ark it . network . service Ċ Ċ import Ġcom . da im ler . mb c ark it . business . model . speed alert . Speed Unit Ċ import Ġcom . da im ler . mb c ark it . network . model . Api Geo Coordinates Ċ import Ġcom . da im ler . mb c ark it . network . model . Api Speed Alert Violation Ċ import Ġcom . da im ler . mb c ark it . utils . Response Task TestCase Ċ import Ġcom . da im ler . mb network kit . networking . Http Error Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . mock k Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . Test Coroutine Scope Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . assertj . core . api . Soft Assertions Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġretrofit 2 . Response Ċ Ċ @ Experimental Cor outines Api Ċ internal Ġclass ĠRet rofit Speed Alert Service Test Ġ: ĠBase Ret rofit Service Test < Ret rofit Speed Alert Service >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġviolations Response Ġ= Ġmock k < Response < List < Api Speed Alert Violation >> >() ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Subject ( scope : ĠCor outine Scope ): ĠRet rofit Speed Alert Service Ġ= ĊĠĠĠĠĠĠĠ ĠRet rofit Speed Alert Service ( vehicle Api , Ġscope ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġvehicle Api . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġfetch Vi olations ( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġviolations Response ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġdelete Violation ( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġno Content Response ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġdelete Vi olations ( any (), Ġany ()) Ġ} Ġreturns Ġno Content Response ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` fetch Vi olations () Ġshould Ġreturn Ġtransformed Ġresult `( soft ly : ĠSoft Assertions , Ġscope : ĠTest Coroutine Scope ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi Coordinates Ġ= ĠApi Geo Coordinates ( 8 0 . 0 , Ġ 8 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġapi Violation Ġ= ĠApi Speed Alert Violation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Coordinates ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcase Ġ= ĠResponse Task TestCase ( vi olations Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . fetch Vi olations ("", Ġ"", ĠSpeed Unit . K MH ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscope . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcase . finish ( listOf ( api Violation )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . error ). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . success ). isNotNull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġviolation Ġ= Ġcase . success ?. first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( violation ). isNotNull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( violation ?. id ). isEqualTo ( api Violation . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( violation ?. time ). isEqualTo ( api Violation . time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( violation ?. speed Alert T reshold ). isEqualTo ( api Violation . speed Alert T reshold ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( violation ?. speed Alert EndTime ). isEqualTo ( api Violation . speed Alert EndTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoordinates Ġ= Ġviolation ?. coordinate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( coordinates ?. latitude ). isEqualTo ( api Coordinates . latitude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( coordinates ?. longitude ). isEqualTo ( api Coordinates . longitude ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` fetch Vi olations () Ġshould Ġreturn Ġtransformed Ġerror `( soft ly : ĠSoft Assertions , Ġscope : ĠTest Coroutine Scope ) Ġ{ ĊĠĠĠĠĠĠĠ Ġviolations Response . mock Error () ĊĠĠĠĠĠĠĠ Ġval Ġcase Ġ= ĠResponse Task TestCase ( vi olations Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . fetch Vi olations ("", Ġ"", ĠSpeed Unit . K MH ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscope . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcase . finish Raw () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . success ). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . error ). isNotNull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . error ?. request Error ). isInstanceOf ( Http Error :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` delete Violation () Ġshould Ġreturn Ġsuccessfully `( soft ly : ĠSoft Assertions , Ġscope : ĠTest Coroutine Scope ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcase Ġ= ĠResponse Task TestCase ( no Content Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . delete Violation ("", Ġ"", Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscope . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcase . finish ( Unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . error ). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . success ). isNotNull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` delete Violation () Ġshould Ġreturn Ġtransformed Ġerror `( soft ly : ĠSoft Assertions , Ġscope : ĠTest Coroutine Scope ) Ġ{ ĊĠĠĠĠĠĠĠ Ġno Content Response . mock Error () ĊĠĠĠĠĠĠĠ Ġval Ġcase Ġ= ĠResponse Task TestCase ( no Content Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . delete Violation ("", Ġ"", Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscope . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcase . finish Raw () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . success ). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . error ). isNotNull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . error ?. request Error ). isInstanceOf ( Http Error :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` delete Vi olations () Ġshould Ġreturn Ġsuccessfully `( soft ly : ĠSoft Assertions , Ġscope : ĠTest Coroutine Scope ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcase Ġ= ĠResponse Task TestCase ( no Content Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . delete Vi olations ("", Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscope . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcase . finish ( Unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . error ). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . success ). isNotNull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` delete Vi olations () Ġshould Ġreturn Ġtransformed Ġerror `( soft ly : ĠSoft Assertions , Ġscope : ĠTest Coroutine Scope ) Ġ{ ĊĠĠĠĠĠĠĠ Ġno Content Response . mock Error () ĊĠĠĠĠĠĠĠ Ġval Ġcase Ġ= ĠResponse Task TestCase ( no Content Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . delete Vi olations ("", Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscope . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcase . finish Raw () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . success ). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . error ). isNotNull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( case . error ?. request Error ). isInstanceOf ( Http Error :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ