public async Task SaveEvents_updates_existing_UniqueIndexedProperty_correctly( FakeUserCreated created, FakeUsernameChanged usernameChanged) { // Arrange RaiseEvents(userId, created); await sut.SaveEvents <FakeUser>(new[] { created }); RaiseEvents(userId, 1, usernameChanged); // Act await sut.SaveEvents <FakeUser>(new[] { usernameChanged }); // Assert using (var db = new DataContext()) { UniqueIndexedProperty actual = await db .UniqueIndexedProperties .Where( p => p.AggregateId == userId && p.PropertyName == nameof(FakeUserCreated.Username)) .SingleOrDefaultAsync(); actual.Should().NotBeNull(); actual.PropertyValue.Should().Be(usernameChanged.Username); actual.Version.Should().Be(usernameChanged.Version); } }
public async Task SaveEvents_removes_existing_UniqueIndexedProperty_if_property_value_is_null( FakeUserCreated created, FakeUsernameChanged usernameChanged) { // Arrange RaiseEvents(userId, created); await sut.SaveEvents <FakeUser>(new[] { created }); usernameChanged.Username = null; RaiseEvents(userId, 1, usernameChanged); // Act await sut.SaveEvents <FakeUser>(new[] { usernameChanged }); // Assert using (var db = new DataContext()) { UniqueIndexedProperty actual = await db .UniqueIndexedProperties .Where( p => p.AggregateType == typeof(FakeUser).FullName && p.PropertyName == nameof(FakeUserCreated.Username) && p.PropertyValue == created.Username) .SingleOrDefaultAsync(); actual.Should().BeNull(); } }
public async Task SaveEvents_inserts_UniqueIndexedProperty_for_new_property( FakeUserCreated created) { var events = new DomainEvent[] { created }; RaiseEvents(userId, events); await sut.SaveEvents <FakeUser>(events); using (var db = new DataContext()) { UniqueIndexedProperty actual = await db .UniqueIndexedProperties .Where( p => p.AggregateType == typeof(FakeUser).FullName && p.PropertyName == nameof(FakeUserCreated.Username) && p.PropertyValue == created.Username) .SingleOrDefaultAsync(); actual.Should().NotBeNull(); actual.AggregateId.Should().Be(userId); actual.Version.Should().Be(created.Version); } }
public async Task SaveEvents_does_not_insert_UniqueIndexedProperty_if_property_value_is_null() { var created = new FakeUserCreated { Username = null }; var events = new DomainEvent[] { created }; RaiseEvents(userId, events); await sut.SaveEvents <FakeUser>(events); using (var db = new DataContext()) { UniqueIndexedProperty actual = await db .UniqueIndexedProperties .Where( p => p.AggregateType == typeof(FakeUser).FullName && p.PropertyName == nameof(FakeUserCreated.Username) && p.PropertyValue == created.Username) .SingleOrDefaultAsync(); actual.Should().BeNull(); } }
public async Task SaveEvents_does_not_insert_UniqueIndexedProperty_if_property_value_is_null() { // Arrange var userId = Guid.NewGuid(); var created = new FakeUserCreated { Username = null }; created.Raise(userId); var sut = new SqlEventStore( () => new FakeEventStoreDbContext(_dbContextOptions), new JsonMessageSerializer()); // Act await sut.SaveEvents <FakeUser>(new DomainEvent[] { created }); // Assert using (var db = new FakeEventStoreDbContext(_dbContextOptions)) { UniqueIndexedProperty actual = await db .UniqueIndexedProperties .Where( p => p.AggregateType == typeof(FakeUser).FullName && p.PropertyName == nameof(FakeUserCreated.Username) && p.PropertyValue == created.Username) .SingleOrDefaultAsync(); actual.Should().BeNull(); } }