package Ġmy . company . app . db . repo . user Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . has Same Size As Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġassert k . assertions . isFalse Ċ import Ġassert k . assertions . isNull Ċ import Ġdev . fixtures . InMemory Fixtures Ċ import Ġmy . company . app . db . repo . CRUD Test Ċ import Ġmy . company . app . lib . F aker Ċ import Ġmy . company . app . test . expect False Ċ import Ġmy . company . app . test . expect NotNull Ċ import Ġmy . company . app . test . expect Null Ċ import Ġmy . company . app . test . expect True Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . time . Instant Ċ import Ġjava . util . UUID Ċ Ċ class ĠUser Repository CRUD Test Ġ: ĠCRUD Test () Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġcan Insert () Ġ= Ġquery Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠIn Memory Fixtures . user ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= Ġmocked Time Service . now () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcreated Ġ= Ġrepo . user . insert ( expected . copy (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . id Ġ= Ġexpected . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . createdAt Ġ= ĠInstant . now (). minus Seconds ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠassertThat ( created ). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠ ĠassertThat ( created . changed ()). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġcan Find ById () Ġ= Ġquery Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting Ġ= Ġfixtures . user () ĊĊĠĠĠĠĠĠĠ Ġval Ġfound Ġ= Ġrepo . user . findById ( existing . id ). expect NotNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( found ). isEqualTo ( existing ) ĊĠĠĠĠĠĠĠ ĠassertThat ( found . changed ()). isFalse () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( repo . user . findById ( UUID . randomUUID ())). isNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġcan Find All () Ġ= Ġquery Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting Ġ= Ġ( 1 .. 3 ). map Ġ{ Ġfixtures . user () Ġ}. associate By Ġ{ Ġit . id Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfound Ġ= Ġrepo . user . findAll () ĊĠĠĠĠĠĠĠ ĠassertThat ( found ). has Same Size As ( existing . keys ) ĊĠĠĠĠĠĠĠ Ġfound . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it . changed ()). isFalse () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). isEqualTo ( existing [ it . id ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġcan Update () Ġ= Ġquery Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting Ġ= Ġfixtures . user () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠIn Memory Fixtures . user (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . id Ġ= Ġexisting . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . updatedAt Ġ= Ġmocked Time Service . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . changed ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġupdated Ġ= Ġrepo . user . update ( expected . copy (). also Ġ{ Ġit . id Ġ= Ġexisting . id Ġ}) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated ). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠ ĠassertThat ( repo . user . findById ( existing . id )). isEqualTo ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġcan Delete ById () Ġ= Ġquery Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting Ġ= Ġfixtures . user () ĊĠĠĠĠĠĠĠ Ġrepo . user . findById ( existing . id ). expect NotNull () ĊĠĠĠĠĠĠĠ Ġrepo . user . delete ById ( existing . id ) ĊĠĠĠĠĠĠĠ Ġrepo . user . findById ( existing . id ). expect Null () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Find By Email Ign oring Case () Ġ= Ġquery Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting Ġ= Ġfixtures . user ( email Ġ= ĠFaker . internet (). email Address (). toUpperCase ()) ĊĠĠĠĠĠĠĠ Ġrepo . user . findBy Email Ign oring Case ( existing . email . toUpperCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect NotNull (" Should Ġfind Ġignoring Ġcase ") ĊĠĠĠĠĠĠĠ Ġrepo . user . findBy Email Ign oring Case (" ĠĠ Ġ" Ġ+ Ġexisting . email . toUpperCase () Ġ+ Ġ" ĠĠ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect NotNull (" Should Ġfind Ġwith Ġtrimmed Ġinput ") ĊĠĠĠĠĠĠĠ Ġrepo . user . findBy Email Ign oring Case (" 1 " Ġ+ Ġexisting . email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Null (" Should Ġnot Ġfind Ġwith Ġwrong Ġemail ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexists Find By Email Ign oring Case () Ġ= Ġquery Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting Ġ= Ġfixtures . user ( email Ġ= ĠFaker . internet (). email Address (). toUpperCase ()) ĊĠĠĠĠĠĠĠ Ġrepo . user . exists By Email Ign oring Case ( existing . email . toUpperCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect True (" Should Ġfind Ġignoring Ġcase ") ĊĠĠĠĠĠĠĠ Ġrepo . user . exists By Email Ign oring Case (" ĠĠ Ġ" Ġ+ Ġexisting . email . toUpperCase () Ġ+ Ġ" ĠĠ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect True (" Should Ġfind Ġwith Ġtrimmed Ġinput ") ĊĠĠĠĠĠĠĠ Ġrepo . user . exists By Email Ign oring Case (" 1 " Ġ+ Ġexisting . email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect False (" Should Ġnot Ġfind Ġwith Ġwrong Ġemail ") ĊĠĠĠ Ġ} Ċ } Ċ