package Ġde . t uc he mn itz . se . exercise . persist Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . contains Only Ċ import Ġassert k . assertions . does Not Contain Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġassert k . assertions . isNull Ċ import Ġcom . mongodb . client . model . Filters Ċ import Ġde . t uc he mn itz . se . exercise . DATABASE Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . Gender Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . UserData Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . Vision Imp a ired Ċ import Ġde . t uc he mn itz . se . exercise . persist . data . collections . UserData Collection Ċ import Ġorg . bson . conversions . B son Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Tag Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . lit ote . km ongo .` in ` Ċ import Ġorg . lit ote . km ongo . eq Ċ import Ġt orn ad of x . Controller Ċ Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ METHOD ) Ċ @ Tag ( DATABASE ) Ċ class ĠUser Data Collection Test Ġ: ĠController () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcollection : ĠUser Data Collection Ġby Ġinject () ĊĊĠĠĠ Ġ@ Suppress (" Spell Checking Inspection ") ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġconfigs Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġ" Test user ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġ" Kotlin ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġ 4 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgender Ġ= ĠGender . Div erse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvision Imp a ired Ġ= ĠVision Imp a ired . Un selected , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġ" another User ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġ" Java ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġ 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgender Ġ= ĠGender . Female , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvision Imp a ired Ġ= ĠVision Imp a ired . No , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġ" Santa ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġ" Cl aus ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġ 6 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgender Ġ= ĠGender . Male , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvision Imp a ired Ġ= ĠVision Imp a ired . Yes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġclean Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġcollection . delete Many () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` all Ġconfigs Ġshould Ġbe Ġsaved Ġproperly Ġat Ġonce `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcollection . save Many ( configs ) ĊĠĠĠĠĠĠĠ ĠassertThat ( collection . find ( UserData ::_ id Ġ` in ` Ġconfigs . map ( UserData ::_ id ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Only (* configs . to Typed Array ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` every Ġconfig Ġshould Ġbe Ġsaved Ġproperly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . save One ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( collection . findOne ById ( it ._ id )). isEqualTo ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` every Ġconfig Ġshould Ġbe Ġdeleted Ġproperly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . delete One ( UserData ::_ id Ġeq Ġit ._ id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( collection . find ( UserData ::_ id Ġeq Ġit ._ id )). does Not Contain ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` findOne ById Ġshould Ġwork Ġproperly Ġfor Ġeach Ġid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcollection . save Many ( configs ) ĊĠĠĠĠĠĠĠ Ġconfigs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( collection . findOne ById ( it ._ id )). isEqualTo ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` configs Ġshould Ġbe Ġdeleted Ġproperly Ġat Ġonce `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġ"_ id " Ġ` in ` Ġconfigs ĊĠĠĠĠĠĠĠ Ġcollection . delete Many ( ids ) ĊĊĠĠĠĠĠĠĠ Ġconfigs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . delete One ( UserData ::_ id Ġeq Ġit ._ id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( collection . findOne ById ( it ._ id )). isNull () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġin fix Ġfun ĠString .` in `( collection : ĠCollection < Any >): ĠB son Ġ= ĊĠĠĠĠĠĠĠ ĠFilters .` in `( this , Ġcollection ) Ċ } Ċ