package Ġnet . pl shark . user error . server . role Ċ Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġkotlinx . coroutines . flow . toList Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġnet . pl shark . user error . error . Duplicate Exception Ċ import Ġnet . pl shark . user error . error . NotFoundException Ċ import Ġnet . pl shark . user error . role . Application Ċ import Ġnet . pl shark . user error . role . Application Create Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . springframework . dao . Data Integr ity Violation Exception Ċ Ċ @ Suppress (" Reactive Streams Unused Publisher ") Ċ class ĠApplications Controller Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġapps Repo Ġ= Ġmock k < Applications Repository >() ĊĠĠĠ Ġprivate Ġval Ġcontroller Ġ= ĠApplications Controller ( apps Repo ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Ġshould Ġpass Ġthrough Ġthe Ġresponse Ġfrom Ġthe Ġrepo `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠApplication ( 1 , Ġ" app ") ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapps Repo . findById ( 1 ) Ġ} Ġreturns Ġapp ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( app , Ġcontroller . findById ( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` getting Ġan Ġapplication Ġshould Ġthrow Ġan Ġexception Ġwhen Ġthe Ġapplication Ġdoes Ġnot Ġexist `() Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapps Repo . findById ( 4 5 6 ) Ġ} Ġreturns Ġnull ĊĊĠĠĠĠĠĠĠ ĠassertThrows < NotFoundException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . findById ( 4 5 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` create Ġshould Ġpass Ġthrough Ġthe Ġresponse Ġfrom Ġthe Ġrepo `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠApplication Create (" app ") ĊĠĠĠĠĠĠĠ Ġval Ġinserted Ġ= ĠApplication ( 1 , Ġ" app ") ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapps Repo . insert ( request ) Ġ} Ġreturns Ġinserted ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( inserted , Ġcontroller . create ( request )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` create Ġshould Ġmap Ġthe Ġexception Ġfor Ġa Ġduplicate Ġname Ġto Ġa ĠDuplicate Exception `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠApplication Create (" app ") ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapps Repo . insert ( request ) Ġ} Ġthrows ĠData Integr ity Violation Exception (" test Ġerror ") ĊĊĠĠĠĠĠĠĠ ĠassertThrows < Duplicate Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . create ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` delete Ġshould Ġdelete Ġthe Ġapp `() Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġapps Repo . delete ById ( 1 ) Ġ} Ġco Answers Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġcontroller . delete ( 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġapps Repo . delete ById ( 1 ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` getAll Ġshould Ġreturn Ġa Ġpage Ġof Ġresults `() Ġ= Ġrun Blocking < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp 1 Ġ= ĠApplication ( 1 , Ġ" app 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġapp 2 Ġ= ĠApplication ( 2 , Ġ" app 2 ") ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġapps Repo . getAll ( 1 0 0 , Ġ 0 ) Ġ} Ġreturns Ġflow Of ( app 1 , Ġapp 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( controller . get Applications ( 1 0 0 , Ġ 0 ). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Size ( 2 ). contains ( app 1 , Ġapp 2 ) ĊĠĠĠ Ġ} Ċ } Ċ