diff --git a/event-sourcing/etc/event-sourcing.ucls b/event-sourcing/etc/event-sourcing.ucls index d187b1bb0..e6944ef70 100644 --- a/event-sourcing/etc/event-sourcing.ucls +++ b/event-sourcing/etc/event-sourcing.ucls @@ -122,7 +122,7 @@ - @@ -132,7 +132,7 @@ - diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/service/AccountService.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/AccountService.java similarity index 95% rename from event-sourcing/src/main/java/com/iluwatar/event/sourcing/service/AccountService.java rename to event-sourcing/src/main/java/com/iluwatar/event/sourcing/AccountService.java index 59cefaaee..2d6f585a5 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/service/AccountService.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/AccountService.java @@ -20,14 +20,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package com.iluwatar.event.sourcing.service; +package com.iluwatar.event.sourcing; import com.iluwatar.event.sourcing.api.EventProcessor; import com.iluwatar.event.sourcing.event.AccountCreateEvent; import java.util.Date; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class AccountService { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/service/MoneyTransactionService.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/MoneyTransactionService.java similarity index 97% rename from event-sourcing/src/main/java/com/iluwatar/event/sourcing/service/MoneyTransactionService.java rename to event-sourcing/src/main/java/com/iluwatar/event/sourcing/MoneyTransactionService.java index 5f7c0e9c7..0e3cb67bd 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/service/MoneyTransactionService.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/MoneyTransactionService.java @@ -20,7 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package com.iluwatar.event.sourcing.service; +package com.iluwatar.event.sourcing; import com.iluwatar.event.sourcing.api.EventProcessor; import com.iluwatar.event.sourcing.event.MoneyDepositEvent; @@ -30,7 +30,7 @@ import java.math.BigDecimal; import java.util.Date; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class MoneyTransactionService { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/service/SequenceIdGenerator.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/SequenceIdGenerator.java similarity index 94% rename from event-sourcing/src/main/java/com/iluwatar/event/sourcing/service/SequenceIdGenerator.java rename to event-sourcing/src/main/java/com/iluwatar/event/sourcing/SequenceIdGenerator.java index 6e1730679..c928a8737 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/service/SequenceIdGenerator.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/SequenceIdGenerator.java @@ -20,10 +20,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -package com.iluwatar.event.sourcing.service; +package com.iluwatar.event.sourcing; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class SequenceIdGenerator { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/DomainEvent.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/DomainEvent.java index 693ea1755..6eb5141a2 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/DomainEvent.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/DomainEvent.java @@ -25,7 +25,7 @@ package com.iluwatar.event.sourcing.api; import java.io.Serializable; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public abstract class DomainEvent implements Serializable { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/EventProcessor.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/EventProcessor.java index afa218939..512f9d7f8 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/EventProcessor.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/EventProcessor.java @@ -23,7 +23,7 @@ package com.iluwatar.event.sourcing.api; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public interface EventProcessor { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/ProcessorJournal.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/ProcessorJournal.java index 8814b82d9..2212580dc 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/ProcessorJournal.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/api/ProcessorJournal.java @@ -23,7 +23,7 @@ package com.iluwatar.event.sourcing.api; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public interface ProcessorJournal { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/app/App.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/app/App.java index f62cebb62..77be00cf6 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/app/App.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/app/App.java @@ -24,62 +24,82 @@ package com.iluwatar.event.sourcing.app; import com.iluwatar.event.sourcing.journal.JsonFileJournal; import com.iluwatar.event.sourcing.processor.DomainEventProcessor; -import com.iluwatar.event.sourcing.service.AccountService; -import com.iluwatar.event.sourcing.service.MoneyTransactionService; +import com.iluwatar.event.sourcing.AccountService; +import com.iluwatar.event.sourcing.MoneyTransactionService; import com.iluwatar.event.sourcing.state.AccountAggregate; import java.math.BigDecimal; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** - * Created by serdarh on 06.08.2017. + * Event Sourcing : Instead of storing just the current state of the data in a domain, use an + * append-only store to record the full series of actions taken on that data. The store acts as the + * system of record and can be used to materialize the domain objects. This can simplify tasks in + * complex domains, by avoiding the need to synchronize the data model and the business domain, + * while improving performance, scalability, and responsiveness. It can also provide consistency for + * transactional data, and maintain full audit trails and history that can enable compensating + * actions. + * + * This App class is an example usage of Event Sourcing pattern. As an example, two bank account is + * created, then some money deposit and transfer actions are taken so a new state of accounts is + * created. At that point, state is cleared in order to represent a system shot down. After the shot + * down, system state is recovered by re-creating the past events from event journal. Then state is + * printed so a user can view the last state is same with the state before system shot down. + * + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class App { + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); + public static final int ACCOUNT_OF_DAENERYS = 1; + public static final int ACCOUNT_OF_JON = 2; + /** * The entry point of application. * * @param args the input arguments */ public static void main(String[] args) { - System.out.println("Running the system first time............"); DomainEventProcessor domainEventProcessor = new DomainEventProcessor(); JsonFileJournal jsonFileJournal = new JsonFileJournal(); - jsonFileJournal.reset(); domainEventProcessor.setPrecessorJournal(jsonFileJournal); - - System.out.println("Creating th accounts............"); - AccountService accountService = new AccountService(domainEventProcessor); MoneyTransactionService moneyTransactionService = new MoneyTransactionService( domainEventProcessor); - accountService.createAccount(1, "Daenerys Targaryen"); - accountService.createAccount(2, "Jon Snow"); - System.out.println("Do some money operations............"); + LOGGER.info("Running the system first time............"); + jsonFileJournal.reset(); - moneyTransactionService.depositMoney(1, new BigDecimal("100000")); - moneyTransactionService.depositMoney(2, new BigDecimal("100")); + LOGGER.info("Creating th accounts............"); - moneyTransactionService.transferMoney(1, 2, new BigDecimal("10000")); - moneyTransactionService.withdrawalMoney(2, new BigDecimal("1000")); + accountService.createAccount(ACCOUNT_OF_DAENERYS, "Daenerys Targaryen"); + accountService.createAccount(ACCOUNT_OF_JON, "Jon Snow"); - System.out.println("...............State:............"); - System.out.println(AccountAggregate.getAccount(1)); - System.out.println(AccountAggregate.getAccount(2)); + LOGGER.info("Do some money operations............"); - System.out.println("At that point system goes down state in memory cleared............"); + moneyTransactionService.depositMoney(ACCOUNT_OF_DAENERYS, new BigDecimal("100000")); + moneyTransactionService.depositMoney(ACCOUNT_OF_JON, new BigDecimal("100")); + moneyTransactionService.transferMoney(ACCOUNT_OF_DAENERYS, ACCOUNT_OF_JON, new BigDecimal("10000")); + moneyTransactionService.withdrawalMoney(ACCOUNT_OF_JON, new BigDecimal("1000")); + + LOGGER.info("...............State:............"); + LOGGER.info(AccountAggregate.getAccount(ACCOUNT_OF_DAENERYS).toString()); + LOGGER.info(AccountAggregate.getAccount(ACCOUNT_OF_JON).toString()); + + LOGGER.info("At that point system had a shot down, state in memory is cleared............"); AccountAggregate.resetState(); - System.out.println("Recover the syste by the events in journal file............"); + LOGGER.info("Recover the system by the events in journal file............"); domainEventProcessor = new DomainEventProcessor(); jsonFileJournal = new JsonFileJournal(); domainEventProcessor.setPrecessorJournal(jsonFileJournal); domainEventProcessor.recover(); - System.out.println("...............State Recovered:............"); - System.out.println(AccountAggregate.getAccount(1)); - System.out.println(AccountAggregate.getAccount(2)); + LOGGER.info("...............Recovered State:............"); + LOGGER.info(AccountAggregate.getAccount(ACCOUNT_OF_DAENERYS).toString()); + LOGGER.info(AccountAggregate.getAccount(ACCOUNT_OF_JON).toString()); } } diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/domain/Account.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/domain/Account.java index 9e1bc560e..b6aab7791 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/domain/Account.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/domain/Account.java @@ -33,7 +33,7 @@ import java.util.ArrayList; import java.util.List; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class Account { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/domain/Transaction.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/domain/Transaction.java index 29cdc4d15..a0d921f5f 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/domain/Transaction.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/domain/Transaction.java @@ -25,7 +25,7 @@ package com.iluwatar.event.sourcing.domain; import java.math.BigDecimal; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class Transaction { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/AccountCreateEvent.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/AccountCreateEvent.java index 8356cd3e8..350104267 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/AccountCreateEvent.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/AccountCreateEvent.java @@ -27,7 +27,7 @@ import com.iluwatar.event.sourcing.domain.Account; import com.iluwatar.event.sourcing.state.AccountAggregate; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class AccountCreateEvent extends DomainEvent { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyDepositEvent.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyDepositEvent.java index 9d73639eb..3fb61bd08 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyDepositEvent.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyDepositEvent.java @@ -28,7 +28,7 @@ import com.iluwatar.event.sourcing.state.AccountAggregate; import java.math.BigDecimal; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class MoneyDepositEvent extends DomainEvent { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyTransferEvent.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyTransferEvent.java index 995fb9326..bbba89988 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyTransferEvent.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyTransferEvent.java @@ -28,7 +28,7 @@ import com.iluwatar.event.sourcing.state.AccountAggregate; import java.math.BigDecimal; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class MoneyTransferEvent extends DomainEvent { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyWithdrawalEvent.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyWithdrawalEvent.java index 64fddc16e..d8c295002 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyWithdrawalEvent.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/event/MoneyWithdrawalEvent.java @@ -28,7 +28,7 @@ import com.iluwatar.event.sourcing.state.AccountAggregate; import java.math.BigDecimal; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class MoneyWithdrawalEvent extends DomainEvent { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/AccountCreateContractSender.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/AccountCreateContractSender.java index aa15f746f..baaf41f56 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/AccountCreateContractSender.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/AccountCreateContractSender.java @@ -25,7 +25,7 @@ package com.iluwatar.event.sourcing.gateway; import com.iluwatar.event.sourcing.domain.Account; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class AccountCreateContractSender { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/Gateways.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/Gateways.java index 932338c32..84bdff3b2 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/Gateways.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/Gateways.java @@ -23,7 +23,7 @@ package com.iluwatar.event.sourcing.gateway; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class Gateways { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/TransactionLogger.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/TransactionLogger.java index 3cfea0751..42ae7a1f5 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/TransactionLogger.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/gateway/TransactionLogger.java @@ -25,7 +25,7 @@ package com.iluwatar.event.sourcing.gateway; import com.iluwatar.event.sourcing.domain.Transaction; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class TransactionLogger { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/journal/JsonFileJournal.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/journal/JsonFileJournal.java index a5d82e5be..9379e7b5c 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/journal/JsonFileJournal.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/journal/JsonFileJournal.java @@ -44,7 +44,7 @@ import java.util.ArrayList; import java.util.List; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class JsonFileJournal implements ProcessorJournal { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/processor/DomainEventProcessor.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/processor/DomainEventProcessor.java index 81ec2e761..38e72995d 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/processor/DomainEventProcessor.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/processor/DomainEventProcessor.java @@ -27,7 +27,7 @@ import com.iluwatar.event.sourcing.api.EventProcessor; import com.iluwatar.event.sourcing.api.ProcessorJournal; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class DomainEventProcessor implements EventProcessor { diff --git a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/state/AccountAggregate.java b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/state/AccountAggregate.java index a42826160..cfe0cfbb3 100644 --- a/event-sourcing/src/main/java/com/iluwatar/event/sourcing/state/AccountAggregate.java +++ b/event-sourcing/src/main/java/com/iluwatar/event/sourcing/state/AccountAggregate.java @@ -27,7 +27,7 @@ import java.util.HashMap; import java.util.Map; /** - * Created by serdarh on 06.08.2017. + * Created by Serdar Hamzaogullari on 06.08.2017. */ public class AccountAggregate { diff --git a/event-sourcing/src/main/test/java/com/iluwatar/event/sourcing/IntegrationTest.java b/event-sourcing/src/main/test/java/com/iluwatar/event/sourcing/IntegrationTest.java new file mode 100644 index 000000000..8fbed333d --- /dev/null +++ b/event-sourcing/src/main/test/java/com/iluwatar/event/sourcing/IntegrationTest.java @@ -0,0 +1,115 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.event.sourcing; + +import static com.iluwatar.event.sourcing.app.App.ACCOUNT_OF_DAENERYS; +import static com.iluwatar.event.sourcing.app.App.ACCOUNT_OF_JON; + +import com.iluwatar.event.sourcing.domain.Account; +import com.iluwatar.event.sourcing.journal.JsonFileJournal; +import com.iluwatar.event.sourcing.processor.DomainEventProcessor; +import com.iluwatar.event.sourcing.state.AccountAggregate; +import java.math.BigDecimal; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Intergartion Test for Event Sourcing state recovery + * + * Created by Serdar Hamzaogullari on 19.08.2017. + */ +public class IntegrationTest { + + /** + * The Domain event processor. + */ + DomainEventProcessor domainEventProcessor; + /** + * The Json file journal. + */ + JsonFileJournal jsonFileJournal; + /** + * The Account service. + */ + AccountService accountService; + /** + * The Money transaction service. + */ + MoneyTransactionService moneyTransactionService; + + /** + * Initialize. + */ + @Before + public void initialize() { + domainEventProcessor = new DomainEventProcessor(); + jsonFileJournal = new JsonFileJournal(); + domainEventProcessor.setPrecessorJournal(jsonFileJournal); + accountService = new AccountService(domainEventProcessor); + moneyTransactionService = new MoneyTransactionService( + domainEventProcessor); + } + + /** + * Test state recovery. + */ + @Test + public void testStateRecovery() { + jsonFileJournal.reset(); + + accountService.createAccount(ACCOUNT_OF_DAENERYS, "Daenerys Targaryen"); + accountService.createAccount(ACCOUNT_OF_JON, "Jon Snow"); + + moneyTransactionService.depositMoney(ACCOUNT_OF_DAENERYS, new BigDecimal("100000")); + moneyTransactionService.depositMoney(ACCOUNT_OF_JON, new BigDecimal("100")); + + moneyTransactionService + .transferMoney(ACCOUNT_OF_DAENERYS, ACCOUNT_OF_JON, new BigDecimal("10000")); + moneyTransactionService.withdrawalMoney(ACCOUNT_OF_JON, new BigDecimal("1000")); + + Account accountOfDaenerysBeforeShotDown = AccountAggregate.getAccount(ACCOUNT_OF_DAENERYS); + Account accountOfJonBeforeShotDown = AccountAggregate.getAccount(ACCOUNT_OF_JON); + + AccountAggregate.resetState(); + + domainEventProcessor = new DomainEventProcessor(); + jsonFileJournal = new JsonFileJournal(); + domainEventProcessor.setPrecessorJournal(jsonFileJournal); + domainEventProcessor.recover(); + + Account accountOfDaenerysAfterShotDown = AccountAggregate.getAccount(ACCOUNT_OF_DAENERYS); + Account accountOfJonAfterShotDown = AccountAggregate.getAccount(ACCOUNT_OF_JON); + + Assert.assertEquals(accountOfDaenerysBeforeShotDown.getMoney(), + accountOfDaenerysAfterShotDown.getMoney()); + Assert + .assertEquals(accountOfJonBeforeShotDown.getMoney(), accountOfJonAfterShotDown.getMoney()); + Assert.assertEquals(accountOfDaenerysBeforeShotDown.getTransactions().size(), + accountOfDaenerysAfterShotDown.getTransactions().size()); + Assert.assertEquals(accountOfJonBeforeShotDown.getTransactions().size(), + accountOfJonAfterShotDown.getTransactions().size()); + + } + +} \ No newline at end of file