package Ġio . github . deb op . mult istore Ċ Ċ import Ġio . github . deb op . mult istore . customer . Customer Ċ import Ġio . github . deb op . mult istore . customer . Customer Repository Ċ import Ġio . github . deb op . mult istore . order . Order Ċ import Ġio . github . deb op . mult istore . order . Order Item Ċ import Ġio . github . deb op . mult istore . order . Order Repository Ċ import Ġorg . am sh ove . k lu ent . shouldBe EqualTo Ċ import Ġorg . am sh ove . k lu ent . should Contain All Ċ import Ġorg . am sh ove . k lu ent . should Not BeNull Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . data . repository . findById OrNull Ċ import Ġorg . springframework . test . context . junit . jupiter . Spring Extension Ċ import Ġorg . springframework . transaction . annotation . Transactional Ċ import Ġjavax . persistence . EntityManager Ċ import Ġjavax . persistence . Persistence Context Ċ Ċ /** Ċ Ġ* ĠMult istore Tests Ċ Ġ* Ġ@ author Ġdeb op Ġ( Sun gh you k ĠB ae ) Ċ Ġ*/ Ċ @ Extend With ( Spring Extension :: class ) Ċ @ SpringBootTest Ċ class ĠMult istore Tests Ġ: ĠAbstract Mult istore Tests () Ġ{ ĊĊĠĠĠ Ġ@ Persistence Context ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġentity Manager : ĠEntity Manager ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcustomer Repo : ĠCustomer Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġorder Repo : ĠOrder Repository ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` repositories Ġis Ġinjected `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcustomer Repo . should Not BeNull () ĊĠĠĠĠĠĠĠ Ġorder Repo . should Not BeNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` operation Ġj pa Ġentity `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustomer Ġ= Ġcreate Customer (" deb op ") ĊĠĠĠĠĠĠĠ Ġcustomer Repo . save And Flush ( customer ) ĊĊĠĠĠĠĠĠĠ Ġcustomer . id . should Not BeNull () ĊĊĠĠĠĠĠĠĠ Ġentity Manager . clear () ĊĊĠĠĠĠĠĠĠ Ġval Ġloaded Ġ= Ġcustomer Repo . findById OrNull ( customer . id ) !! ĊĠĠĠĠĠĠĠ Ġloaded ĠshouldBe EqualTo Ġcustomer ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` operation Ġmongodb Ġentity `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġorder Ġ= Ġcreate Order (" 1 0 0 4 ") ĊĠĠĠĠĠĠĠ Ġorder Repo . save ( order ) ĊĊĠĠĠĠĠĠĠ Ġval Ġloaded Ġ= Ġorder Repo . findById OrNull ( order . id ) !! ĊĠĠĠĠĠĠĠ Ġloaded ĠshouldBe EqualTo Ġorder ĊĊĠĠĠĠĠĠĠ Ġorder Repo . save ( create Order (" 1 0 0 4 ")) ĊĠĠĠĠĠĠĠ Ġorder Repo . save ( create Order (" 1 0 0 4 ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġorders Ġ= Ġorder Repo . findBy CustomerId (" 1 0 0 4 ") ĊĠĠĠĠĠĠĠ Ġorders . size ĠshouldBe EqualTo Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` save Ġto Ġmult istore Ġand Ġload Ġentities `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustomer Ġ= Ġcreate Customer (" deb op ") ĊĠĠĠĠĠĠĠ Ġcustomer Repo . save And Flush ( customer ) ĊĠĠĠĠĠĠĠ Ġval Ġcustomer Id Ġ= Ġcustomer . id !!. toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġorders Ġ= ĠlistOf ( create Order ( customer Id ), Ġcreate Order ( customer Id ), Ġcreate Order ( customer Id )) ĊĠĠĠĠĠĠĠ Ġorder Repo . save All ( orders ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcustomer 2 Ġ= Ġcustomer Repo . findById OrNull ( customer . id ) !! ĊĊĠĠĠĠĠĠĠ Ġval Ġorders 2 Ġ= Ġorder Repo . findBy CustomerId ( customer 2 . id !!. toString ()) ĊĠĠĠĠĠĠĠ Ġorders 2 Ġshould Contain All Ġorders ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Customer ( name : ĠString ): ĠCustomer Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCustomer ( name Ġ= Ġname ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress . street Ġ= Ġ" j ams il " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress . zip code Ġ= Ġ" 1 2 3 4 5 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress . lon Ġ= Ġ 1 2 7 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress . lat Ġ= Ġ 3 7 . 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Order ( customer Id : ĠString ): ĠOrder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOrder ( customer Id Ġ= Ġcustomer Id ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Order Item (" Orange ", Ġ 1 2 8 . 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Order Item (" Apple ", Ġ 1 0 1 . 0 , Ġ 5 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }