public async Task LoadAggregateRootWithZeroEvents() { using (var rawContext = new Raw.RawContext(_rawOptions)) { rawContext.Database.EnsureCreated(); var bankje = new Raw.Bank { Id = 7, Version = 12, }; rawContext.Banks.Add(bankje); rawContext.SaveChanges(); } var target = new BankRepository(_options); Bank bank = await target.FindAsync(7); Assert.AreEqual(7, bank.Id); Assert.AreEqual(0, bank.Version); // the 'Version' should reflect the number of events that have been handled, which is 0, in this test. // this should be equal the the 'Version' in the database, but in this test the latter was manually set to 12. }
public async Task LoadAggregateRootWithTwoEvents() { using (var rawContext = new Raw.RawContext(_rawOptions)) { rawContext.Database.EnsureCreated(); var events = new List <Raw.BankEvent> { new Raw.BankEvent { Id = 1, BankId = 7, Version = 2, EventType = "DDD.Core.Application.Test.AccountOpened", EventData = "{ 'AccountNumber':5, 'Owner':'Karina van Irak' }", }, new Raw.BankEvent { Id = 2, BankId = 7, Version = 2, EventType = "DDD.Core.Application.Test.AccountOpened", EventData = "{ 'AccountNumber':6, 'Owner':'Evert \\'t Reve' }", }, }; var bankje = new Raw.Bank { Id = 7, Version = 12, Events = events }; rawContext.Banks.Add(bankje); rawContext.SaveChanges(); } var target = new BankRepository(_options); Bank bank = await target.FindAsync(7); Assert.AreEqual(7, bank.Id); Assert.AreEqual(2, bank.Version); Assert.AreEqual(2, bank.HandleAccountOpenedCallCount); Assert.AreEqual(6, bank.HandleAccountOpenedArgument.AccountNumber); Assert.AreEqual("Evert 't Reve", bank.HandleAccountOpenedArgument.Owner); }
public async Task SaveAggregateWithTwoEvents() { Bank bank = new Bank(43); bank.OpenAccount(new OpenAccount("Karina van Irak")); bank.OpenAccount(new OpenAccount("Evert 't Reve")); Assert.AreEqual(2, bank.Events.Count()); var target = new BankRepository(_options); await target.SaveAsync(bank); using (var rawContext = new Raw.RawContext(_rawOptions)) { var bankFromDb = rawContext.Banks.Include(b => b.Events).Single(b => b.Id == 43); Assert.AreEqual(2, bankFromDb.Version); Assert.AreEqual(2, bankFromDb.Events.Count()); Assert.IsTrue(bankFromDb.Events.Any(evt => evt.EventData.Contains("Karina van Irak"))); Assert.IsTrue(bankFromDb.Events.Any(evt => evt.EventData.Contains("Evert 't Reve"))); } }