package Ġcom . github . lar sq . spe k tx . model Ċ Ċ import Ġcom . github . lar sq . spe k tx . entity . Hero Repository Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . x describe Ċ import Ġsupport . tx Ċ import Ġjavax . persistence . EntityManager Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ Ċ object ĠHero Repository Spec Ġ: ĠSpe k ({ ĊĠĠĠ Ġtx Ġ{ ĊĠĠĠĠĠĠĠ Ġdescribe (" delete All ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġem Ġ= Ġentity Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhero Repository : ĠHero Repository Ġ= Ġapplication Context . getBean ( Hero Repository :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Manager . persist ( Hero (" Mar vel ", Ġ" New ĠYork ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġremove Ġall Ġhero es ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// do ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhero Repository . delete All () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// assert ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġem . createQuery ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġh Ġfrom ĠHero Ġas Ġh ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHero :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). result List . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" find ByName ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhero Repository : ĠHero Repository Ġ= Ġapplication Context . getBean ( Hero Repository :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Manager . persist ( Hero (" D are ĠDev il ", Ġ" Ch icago ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠafterEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Manager . createQuery (" DELETE Ġfrom ĠHero "). executeUpdate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġspecified Ġhero ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( hero Repository . find ByName (" D are ĠDev il ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" save ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhero Repository : ĠHero Repository Ġ= Ġapplication Context . getBean ( Hero Repository :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġem : ĠEntity Manager Ġ= Ġentity Manager ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhero Repository . save ( Hero (" Th or ", Ġ" A as gard ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠafterEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Manager . createQuery (" DELETE Ġfrom ĠHero "). executeUpdate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġsaved ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( em . createQuery (" select Ġh Ġfrom ĠHero Ġh Ġwhere Ġname Ġ= Ġ: name ", ĠHero :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setParameter (" name ", Ġ" Th or "). result List . first OrNull ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ })