package Ġcom . ort . fire w olf . domain . service . day change Ċ Ċ import Ġcom . ort . db fl ute . all common . C Def Ċ import Ġcom . ort . fire w olf . Fire w olf Test Ċ import Ġcom . ort . fire w olf . domain . model . v illage . V illage Days Ċ import Ġcom . ort . fire w olf . domain . model . v illage . participant . V illage Participants Ċ import Ġcom . ort . fire w olf . dummy . Dummy Domain Model Creator Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . test . context . junit 4 . Spring Runner Ċ import Ġjava . time . LocalDateTime Ċ Ċ @ RunWith ( Spring Runner :: class ) Ċ @ SpringBootTest Ċ class ĠE pi logue Domain Service Test Ġ: ĠFire w olf Test () Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġe pi logue Domain Service : ĠE pi logue Domain Service ĊĊĠĠĠ Ġ// Ġ================================================================= ================== ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ========= ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ transition To E pi logue IfNeeded _ çĭ ¼ åĭ Ŀ åĪ© () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠArrange Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġlatest Day Ġ= ĠDummy Domain Model Creator . create Dummy V illage Day () ĊĠĠĠĠĠĠĠ Ġval Ġday Change Ġ= ĠDummy Domain Model Creator . create Dummy Day Change (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage Ġ= ĠDummy Domain Model Creator . create Dummy V illage (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Ġ= ĠV illage Participants ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Alive V ill ager (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Alive V ill ager (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Dead V ill ager (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Alive W olf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Alive W olf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Ġ= ĠV illage Days ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy V illage Day (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Day ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAct Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġafter Day Change Ġ= Ġe pi logue Domain Service . transition To E pi logue IfNeeded ( day Change ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAssert Ġ## ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . is Change ). isTrue () ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . v illage ). satisf ies Ġ{ Ġv illage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( v illage . status . to C def ()). isEqualTo ( C Def . V illage Status . ãĤ¨ ãĥĶ ãĥŃ ãĥ¼ãĤ ° ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( v illage . win Camp ?. to C def ()). isEqualTo ( C Def . Camp . äºº çĭ ¼ éĻ £ åĸ ¶ ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( v illage . day . latest Day (). day Change Datetime ). is After ( latest Day . day Change Datetime ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . messages . list ). satisf ies Ġ{ Ġmessage List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( message List . size ). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( message List . first ()). satisf ies Ġ{ Ġwin Camp Message Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( win Camp Message . content . type . to C def ()). isEqualTo ( C Def . MessageType . åħ¬ éĸĭ ãĤ· ãĤ¹ãĥĨãĥł ãĥ¡ ãĥĥãĤ»ãĥ¼ãĤ¸ ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( win Camp Message . content . text ). contains (" ãĤĤ ãģĨ äºº çĭ ¼ ãģ« ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( message List . last (). content . type . to C def ()). isEqualTo ( C Def . MessageType . åıĤ åĬł èĢħ ä¸Ģ è¦§ ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ transition To E pi logue IfNeeded _ æĿ ĳ åĭ Ŀ åĪ© () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠArrange Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġlatest Day Ġ= ĠDummy Domain Model Creator . create Dummy V illage Day () ĊĠĠĠĠĠĠĠ Ġval Ġday Change Ġ= ĠDummy Domain Model Creator . create Dummy Day Change (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage Ġ= ĠDummy Domain Model Creator . create Dummy V illage (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Ġ= ĠV illage Participants ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Alive V ill ager (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Alive Mad man (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Dead V ill ager (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Dead W olf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Dead W olf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Ġ= ĠV illage Days ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy V illage Day (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Day ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAct Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġafter Day Change Ġ= Ġe pi logue Domain Service . transition To E pi logue IfNeeded ( day Change ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAssert Ġ## ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . is Change ). isTrue () ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . v illage ). satisf ies Ġ{ Ġv illage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( v illage . status . to C def ()). isEqualTo ( C Def . V illage Status . ãĤ¨ ãĥĶ ãĥŃ ãĥ¼ãĤ ° ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( v illage . win Camp ?. to C def ()). isEqualTo ( C Def . Camp . æĿ ĳ äºº éĻ £ åĸ ¶ ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( v illage . day . latest Day (). day Change Datetime ). is After ( latest Day . day Change Datetime ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . messages . list ). satisf ies Ġ{ Ġmessage List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( message List . size ). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( message List . first ()). satisf ies Ġ{ Ġwin Camp Message Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( win Camp Message . content . type . to C def ()). isEqualTo ( C Def . MessageType . åħ¬ éĸĭ ãĤ· ãĤ¹ãĥĨãĥł ãĥ¡ ãĥĥãĤ»ãĥ¼ãĤ¸ ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( win Camp Message . content . text ). contains (" åħ¨ ãģ¦ ãģ® äºº çĭ ¼ ãĤĴ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( message List . last (). content . type . to C def ()). isEqualTo ( C Def . MessageType . åıĤ åĬł èĢħ ä¸Ģ è¦§ ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ transition To E pi logue IfNeeded _ æľª æ±º çĿĢ () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠArrange Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġlatest Day Ġ= ĠDummy Domain Model Creator . create Dummy V illage Day () ĊĠĠĠĠĠĠĠ Ġval Ġday Change Ġ= ĠDummy Domain Model Creator . create Dummy Day Change (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage Ġ= ĠDummy Domain Model Creator . create Dummy V illage (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Ġ= ĠV illage Participants ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Alive V ill ager (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Alive Mad man (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Dead V ill ager (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Alive W olf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy Dead W olf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Ġ= ĠV illage Days ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy V illage Day (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Day ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAct Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġafter Day Change Ġ= Ġe pi logue Domain Service . transition To E pi logue IfNeeded ( day Change ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAssert Ġ## ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . is Change ). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ add Day IfNeeded _ å¿ħè¦ģ ãģª ãģĹ () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠArrange Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġday Change Ġ= ĠDummy Domain Model Creator . create Dummy Day Change (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage Ġ= ĠDummy Domain Model Creator . create Dummy V illage (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Ġ= ĠV illage Days ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy V illage Day (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy V illage Day (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Change Datetime Ġ= ĠLocalDateTime . now (). plus Hours ( 1 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAct Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġafter Day Change Ġ= Ġe pi logue Domain Service . add Day IfNeeded ( day Change ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAssert Ġ## ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . is Change ). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ add Day IfNeeded _ è¿½åĬł () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠArrange Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġday Change Ġ= ĠDummy Domain Model Creator . create Dummy Day Change (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage Ġ= ĠDummy Domain Model Creator . create Dummy V illage (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Ġ= ĠV illage Days ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy V illage Day (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDummy Domain Model Creator . create Dummy V illage Day (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Change Datetime Ġ= ĠLocalDateTime . now (). minus Hours ( 1 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAct Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġafter Day Change Ġ= Ġe pi logue Domain Service . add Day IfNeeded ( day Change ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAssert Ġ## ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . is Change ). isTrue () ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . v illage . day . day List . size ). isEqualTo ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ day Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠArrange Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġday Change Ġ= ĠDummy Domain Model Creator . create Dummy Day Change () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAct Ġ## ĊĠĠĠĠĠĠĠ Ġval Ġafter Day Change Ġ= Ġe pi logue Domain Service . day Change ( day Change ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ## ĠAssert Ġ## ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . is Change ). isTrue () ĊĠĠĠĠĠĠĠ ĠassertThat ( after Day Change . v illage . status . to C def ()). isEqualTo ( C Def . V illage Status . çµĤ äºĨ ) ĊĠĠĠ Ġ} Ċ }