package Ġcom . vi ol abs . apollo . service Ċ Ċ import Ġcom . vi ol abs . apollo . KS po ck Ċ import Ġcom . vi ol abs . apollo . domain . Node Entity Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġreactor . test . Step Verifier Ċ Ċ abstract Ġclass ĠStandard Service IntegrationTest < T Ġ: ĠNode Entity , ĠS Ġ: ĠDefault Service < T >> Ġ: ĠK Spo ck () Ġ{ ĊĠ Ġprivate Ġvar Ġ_ service : ĠS ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġ_ focused Item : ĠT ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġdefault Saved Items : ĠSet < T > Ġ= Ġset Of () ĊĠ Ġprivate Ġval Ġservice : ĠS Ġby Ġlazy Ġ{ Ġthis ._ service !! Ġ} ĊĠ Ġprivate Ġval Ġfocused Item : ĠT Ġby Ġlazy Ġ{ Ġthis ._ focused Item !! Ġ} ĊĊĠ Ġprotected Ġfun Ġinitialize Test ( ĊĠĠĠ Ġservice : ĠS , ĊĠĠĠ Ġfocused Item : ĠT , ĊĠĠĠ Ġdefault Saved Items : ĠSet < T > Ġ= Ġset Of (), ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġthis ._ service Ġ= Ġservice ĊĠĠĠ Ġthis . default Saved Items Ġ= Ġdefault Saved Items ĊĠĠĠ Ġthis ._ focused Item Ġ= Ġfocused Item ĊĠ Ġ} ĊĊĠ Ġ@ After Each ĊĠ Ġfun Ġteardown () Ġ{ ĊĠĠĠ Ġservice . delete All () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` findById Ġworks `() Ġ= Ġtest Mono < T > Ġ{ ĊĠĠĠ Ġval Ġexpected : ĠT Ġ= ĊĠĠĠĠĠ Ġservice ĊĠĠĠĠĠĠĠ Ġ. save All ( default Saved Items ) ĊĠĠĠĠĠĠĠ Ġ. block Last () !! ĊĊĠĠĠ Ġwhenever Ġ{ Ġservice . findById ( expected . id !! ) Ġ} ĊĊĠĠĠ Ġthen Ġ{ Ġit . check Steps ( 1 , Ġset Of ( expected )) Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` save All Ġand ĠfindAll Ġworks `() Ġ= Ġtest Flux < T > Ġ{ ĊĠĠĠ Ġgiven Ġ{ ĊĠĠĠĠĠ Ġservice ĊĠĠĠĠĠĠĠ Ġ. save All ( default Saved Items ) ĊĠĠĠĠĠĠĠ Ġ. block Last () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwhenever Ġ{ Ġservice . findAll () Ġ} ĊĊĠĠĠ Ġthen Ġ{ Ġit . check Steps ( default Saved Items . size , Ġdefault Saved Items ) Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` save Ġworks `() Ġ= Ġtest Mono < T > Ġ{ ĊĠĠĠ Ġwhenever Ġ{ Ġservice . save ( focused Item ) Ġ} ĊĊĠĠĠ Ġthen Ġ{ Ġit . check Steps ( 1 , Ġset Of ( focused Item )) Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` exists ById Ġdoes Ġnot Ġfind Ġexisting `() Ġ= Ġtest Mono < Boolean > Ġ{ ĊĠĠĠ Ġwhenever Ġ{ Ġservice . exists ById ( 1 0 0 0 L ) Ġ} ĊĊĠĠĠ Ġthen Ġ{ Ġit . expect Next ( false ) Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` exists ById Ġfinds Ġexisting `() Ġ= Ġtest Mono < Boolean > Ġ{ ĊĠĠĠ Ġval Ġid Ġ= Ġsave For Tests () ĊĊĠĠĠ Ġwhenever Ġ{ Ġservice . exists ById ( id ) Ġ} ĊĊĠĠĠ Ġthen Ġ{ Ġit . expect Next ( true ) Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` delete ById Ġdoes Ġnot Ġdelete Ġif Ġit Ġdoes Ġnot Ġexist `() Ġ= Ġtest Mono < Boolean > Ġ{ ĊĠĠĠ Ġwhenever Ġ{ Ġservice . delete ById ( 1 L ) Ġ} ĊĊĠĠĠ Ġthen Ġ{ Ġit . expect Next ( false ) Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` delete ById Ġworks `() Ġ= Ġtest Mono < Boolean > Ġ{ ĊĠĠĠ Ġval Ġid : ĠLong Ġ= Ġsave For Tests () ĊĊĠĠĠ Ġwhenever Ġ{ Ġservice . delete ById ( id ) Ġ} ĊĊĠĠĠ Ġthen Ġ{ Ġit . expect Next ( true ) Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsave For Tests (): ĠLong Ġ= ĊĠĠĠ Ġservice ĊĠĠĠĠĠ Ġ. save ( focused Item ) ĊĠĠĠĠĠ Ġ. block () ĊĠĠĠĠĠ Ġ? . id ĊĠĠĠĠĠ Ġ?: Ġ 0 ĊĊĠ Ġprivate Ġfun ĠStep Verifier . Step < T >. check Steps ( ĊĠĠĠ Ġtimes : ĠInt Ġ= Ġ 1 , ĊĠĠĠ Ġexpected Items : ĠSet < T > ĊĠ Ġ): ĠStep Verifier . Step < T > Ġ= Ġalso Ġ{ ĊĠĠĠ Ġ( 0 Ġuntil Ġtimes ). forEach Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠ Ġthis . expect Next Matches Ġ{ Ġit Ġin Ġexpected Items Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }