package Ġca . software add . domain . aggregate Ċ Ċ import Ġca . software add . country . Country Ċ import Ġca . software add . country . Country Created Event Ċ import Ġca . software add . domain . events . Event Entity Ċ import Ġca . software add . domain . resolvers . Aggregate Constructor Resolver Ċ import Ġca . software add . domain . resolvers . EventHandler Resolver Ċ import Ġca . software add . domain . resolvers . EventType Resolver Ċ import Ġca . software add . domain . rout ers . Event Router Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . Kotlin Module Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . context . annotation . Import Ċ import Ġorg . springframework . test . context . Context Configuration Ċ import Ġorg . springframework . test . context . junit . jupiter . Spring Extension Ċ import Ġjava . util .* Ċ Ċ @ Extend With ( Spring Extension :: class ) Ċ @ Context Configuration ( classes Ġ= Ġ[ ĊĠĠĠ ĠAggregate Factory :: class , ĊĠĠĠ ĠEvent Router :: class , ĊĠĠĠ ĠAggregate Constructor Resolver :: class , ĊĠĠĠ ĠEventHandler Resolver :: class , ĊĠĠĠ ĠEventType Resolver :: class Ċ ]) Ċ @ Import ( Aggregate Factory Test . Test Configuration :: class ) Ċ internal Ġclass ĠAggregate Factory Test Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfactory : ĠAggregate Factory ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmapper : ĠObjectMapper ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` test Ġcreating Ġa Ġnew Ġaggregate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġval Ġcountry Ġ= Ġfactory . create ( Country :: class , Ġid ) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( id , Ġcountry . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` test Ġrest oring Ġan Ġaggregate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠCountry Created Event (" CA ", Ġ" CAN ", Ġ" Can ada ", Ġ" 1 2 3 ", Ġ" Can ada ") ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġmapper . writeValue AsString ( event ) ĊĠĠĠĠĠĠĠ Ġval Ġhistory Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Entity (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" country - created " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . json Ġ= Ġjson ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcountry Ġ= Ġfactory . create ( Country :: class , Ġid , Ġhistory ) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( id , Ġcountry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( event . alpha 2 code , Ġcountry . alpha 2 code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( event . alpha 3 code , Ġcountry . alpha 3 code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( event . fullName , Ġcountry . fullName ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( event . numeric Code , Ġcountry . numeric Code ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( event . short Name , Ġcountry . short Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Configuration ĊĠĠĠ Ġclass ĠTest Configuration Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠ Ġfun Ġmapper (): ĠObjectMapper Ġ= ĠObjectMapper (). register Module ( Kotlin Module ()) ĊĠĠĠ Ġ} Ċ } Ċ