public void GivenAnyEvent_WhenQueryingVersion_ThenShouldReturnCorrectVersion() { // Arrange var versionHandler = new RuntimeConfiguredVersionHandler(); versionHandler.AddConfiguration<UserRegistered>(e => e.Version, null); var evt = new UserRegistered(Guid.NewGuid()); // Act Guid version = versionHandler.GetVersion(evt); // Assert Assert.AreEqual(evt.Version, version); }
public void GivenEmptyEventStore_WhenAddingEventsOneAtATime_ThenStoreShouldContainThoseEvents() { // Arrange IEventStore store = new InMemoryEventStore(); var userId = Guid.NewGuid(); var userRegistered = new UserRegistered(userId); // Act store.Store(userId, userRegistered); // Assert CollectionAssert.IsNotEmpty(((InMemoryEventStore)store).Events); Assert.AreSame(userRegistered, ((InMemoryEventStore)store).Events.First()); }
public void GivenNewEvent_WhenSettingParentVersion_ThenShouldSetParentVersion() { // Arrange var userId = Guid.Parse("00000000-0000-0000-0000-000000000001"); var userRegisteredEvent = new UserRegistered(userId); var userChangedPasswordEvent = new UserChangedPassword("newpassword"); var versionHandler = new RuntimeConfiguredVersionHandler(); versionHandler.AddConfiguration<UserChangedPassword>(null, (e, v) => e.ParentVersion = v); // Act versionHandler.SetParentVersion(userChangedPasswordEvent, userRegisteredEvent.Version); // Assert Assert.AreEqual(userRegisteredEvent.Version, userChangedPasswordEvent.ParentVersion); }
public void GivenAggregateWithUncommittedEvents_WhenSaved_ThenBaseVersionShouldMatchCurrentVersion() { // Arrange var userId = Guid.NewGuid(); var eventStore = new InMemoryEventStore(); var userRegistered = new UserRegistered(userId); eventStore.Update(userId, userRegistered); var repository = new EventSourcingRepository<User>(eventStore, new Mock<IConcurrencyMonitor>().Object); var user = repository.Get(userId); user.ChangePassword("newpassword"); var currentVersion = user.GetUncommittedEvents().Cast<Event>().Last().Version; // Act repository.Save(user); // Assert Assert.AreEqual(currentVersion, user.BaseVersion, "User's base version has not been updated to match current version on successful save."); }
public void AcceptingEvents_GivenAggregateWithUncommittedEvents_ShouldClearUncommittedEvents() { // Arrange var user = new User(); user.Register(); user.ChangePassword("newpassword"); // Act var userRegisteredEvent = new UserRegistered(user.Id); var userChangedPasswordEvent = new UserChangedPassword("newpassword") { ParentVersion = userRegisteredEvent.Version }; IEnumerable<object> expectedBefore = new object[] { userRegisteredEvent, userChangedPasswordEvent }; IEnumerable<object> expectedAfter = new object[0]; IEnumerable<object> before = user.GetUncommittedEvents(); user.AcceptUncommittedEvents(); IEnumerable<object> after = user.GetUncommittedEvents(); // Assert CollectionAssertAreJsonEqual(expectedBefore, before); CollectionAssertAreJsonEqual(expectedAfter, after); }
public void InvokingBehaviour_GivenSimpleAggregateRoot_ShouldRecordEvents() { // Arrange var user = new User(); user.Register(); // Act user.ChangePassword("newpassword"); IEnumerable<object> actual = user.GetUncommittedEvents(); var userRegisteredEvent = new UserRegistered(user.Id); var userChangedPasswordEvent = new UserChangedPassword("newpassword") { ParentVersion = userRegisteredEvent.Version }; IEnumerable<object> expected = new object[] { userRegisteredEvent, userChangedPasswordEvent }; // Assert CollectionAssertAreJsonEqual(expected, actual); }
private void Apply(UserRegistered evt) { Id = evt.UserId; }
private void Apply(UserRegistered evt) { Id = evt.UserId; }