private EventData MapEventToData(BankAccountEvent evt) { var eventId = Guid.NewGuid(); var eventName = evt.GetType().Name; var isJson = true; var metadataBytes = new byte[] { }; var dataBytes = Encoding.UTF8.GetBytes(SerializeEvent(evt)); return(new EventData(eventId, eventName, isJson, dataBytes, metadataBytes)); }
public void DepositMoney_WithCorrectCurrency_DepositsMoneyInAccount(decimal amount, string currency) { var bankAccountRepository = Substitute.For <IBankAccountRepository>(); var systemUnderTest = new DepositMoneyHandler(bankAccountRepository); var transaction = Transaction.Of(Guid.Parse("f0ad5ace-c64f-4f82-9487-a26b376dcf8b")); var accountCurrency = Currency.Of(currency); var command = new DepositMoney(DefaultBankAccountId, transaction, new Money(amount, accountCurrency), TimeStamp.Of(1)); var bankAccount = RehydrateWithCreatedEvent(DefaultBankAccountId, accountCurrency); bankAccountRepository.GetByIdAsync(DefaultBankAccountId).Returns(Task.FromResult(bankAccount)); systemUnderTest.Handle(command, CancellationToken.None).GetAwaiter().GetResult(); var expectedEvents = new BankAccountEvent[] { new MoneyDeposited(DefaultBankAccountId.Value, transaction.Value, amount, 1) }; bankAccountRepository.Received() .SaveAsync(Arg.Is <BankAccount>(it => it.IsCorrectBankAccount(aggregate => aggregate.Version == 2 && aggregate.InitialVersion == 0 && aggregate.GetUncommittedEvents().SequenceEqual(expectedEvents)))); }
public void CreateNewBankAccount_Always_SavesNewBankAccount() { var bankAccountRepository = Substitute.For <IBankAccountRepository>(); var systemUnderTest = new CreateBankAccountHandler(bankAccountRepository); var employeeId = OId.Of <Employee, Guid>(Guid.Parse("309dc64d-bde5-4ee5-9e21-33a517e2fe35")); var accountHolderId = OId.Of <AccountHolder, Guid>(Guid.Parse("59ed2782-881b-49a9-8230-d0b3bb1c9072")); var iban = Iban.Of("DE37200505501340426749"); const int unixTimestamp = 1; var command = new CreateBankAccount(accountHolderId, employeeId, Currency.Euro, iban, TimeStamp.Of(unixTimestamp)); var expectedAccountId = Guid.Parse("5fd9c8fe-2a2c-4d76-9c57-2460dd516dbf"); UniqueId.OverrideNewGuid(expectedAccountId); systemUnderTest.Handle(command, CancellationToken.None).GetAwaiter().GetResult(); var expectedEvents = new BankAccountEvent[] { new BankAccountCreated(expectedAccountId, accountHolderId.Value, iban.Value, Currency.Euro.Value, employeeId.Value, unixTimestamp) }; bankAccountRepository.Received() .SaveAsync(Arg.Is <BankAccount>(it => it.IsCorrectBankAccount(aggregate => aggregate.Id.Value.Equals(expectedAccountId) && aggregate.Version == 1 && aggregate.GetUncommittedEvents().SequenceEqual(expectedEvents)))); UniqueId.ResetOverride(); }
private string SerializeEvent(BankAccountEvent evt) { var jsonString = JsonConvert.SerializeObject(evt); return(jsonString); }