package Ġnet . pl shark . user error . server . role . impl Ċ Ċ import Ġkotlinx . coroutines . flow . toList Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġnet . pl shark . user error . role . Group Create Ċ import Ġnet . pl shark . user error . server . testutil . Db Test Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assertNotNull Ċ import Ġorg . junit . jupiter . api . Assertions . assertNull Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . r 2 dbc . core . Database Client Ċ Ċ @ Db Test Ċ class ĠGroups Repository Impl Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepo : ĠGroups Repository Impl ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup ( db Client : ĠDatabase Client ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepo Ġ= ĠGroups Repository Impl ( db Client ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` inser ting Ġa Ġgroup Ġreturns Ġthe Ġinserted Ġgroup Ġwith Ġthe ĠID Ġset `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġrepo . insert ( Group Create (" test - group ")) ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( group . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" test - group ", Ġgroup . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġretrieve Ġa Ġpreviously Ġinserted Ġgroup Ġby ĠID `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġrepo . insert ( Group Create (" group ")) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( group , Ġrepo . findById ( group . id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` retrie ving Ġa Ġgroup Ġby ĠID Ġwhen Ġno Ġgroup Ġmatches Ġreturns Ġempty `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNull ( repo . findById ( 1 0 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġretrieve Ġa Ġpreviously Ġinserted Ġgroup Ġby Ġname `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġrepo . insert ( Group Create (" group ")) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( group , Ġrepo . find ByName (" group ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` retrie ving Ġa Ġgroup Ġby Ġname Ġwhen Ġno Ġgroup Ġmatches Ġreturns Ġempty `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNull ( repo . find ByName (" name ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġdelete Ġa Ġpreviously Ġinserted Ġgroup Ġby ĠID `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġrepo . insert ( Group Create (" group ")) ĊĠĠĠĠĠĠĠ Ġrepo . delete ById ( group . id ) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( repo . find ByName (" name ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` no Ġexception Ġis Ġthrown Ġwhen Ġattempting Ġto Ġdelete Ġa Ġgroup Ġthat Ġdoes Ġnot Ġexist `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġrepo . delete ById ( 2 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Groups Ġshould Ġreturn Ġall Ġresults Ġwhen Ġthere Ġare Ġless Ġthan Ġmax Ġresults `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġrepo . insert ( Group Create (" group 1 ")) ĊĠĠĠĠĠĠĠ Ġrepo . insert ( Group Create (" group 2 ")) ĊĠĠĠĠĠĠĠ Ġrepo . insert ( Group Create (" group 3 ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġone Ġgroup Ġis Ġinserted Ġby Ġthe Ġmigration Ġscripts ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġrepo . get Groups ( 5 0 , Ġ 0 ). toList (). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Groups Ġshould Ġreturn Ġup Ġto Ġmax Ġresults Ġwhen Ġthere Ġare Ġmore Ġresults `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġrepo . insert ( Group Create (" group 1 ")) ĊĠĠĠĠĠĠĠ Ġrepo . insert ( Group Create (" group 2 ")) ĊĠĠĠĠĠĠĠ Ġrepo . insert ( Group Create (" group 3 ")) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġrepo . get Groups ( 2 , Ġ 0 ). toList (). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Groups Ġshould Ġstart Ġat Ġthe Ġcorrect Ġoffset `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġrepo . insert ( Group Create (" group 1 ")) ĊĠĠĠĠĠĠĠ Ġrepo . insert ( Group Create (" group 2 ")) ĊĠĠĠĠĠĠĠ Ġrepo . insert ( Group Create (" group 3 ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġrepo . get Groups ( 2 , Ġ 2 ). toList () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġlist . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" group 2 ", Ġlist [ 0 ]. name ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" group 3 ", Ġlist [ 1 ]. name ) ĊĠĠĠ Ġ} Ċ } Ċ