public void SnapshotContainsJson() { var domainObject = new DefaultDomainObject(); var snapshot = domainObject.CreateSnapshot(); Assert.False(string.IsNullOrWhiteSpace(snapshot.JsonData), "string.IsNullOrWhiteSpace(snapshot.JsonData)"); }
public void SnapshotContainsIdentifier() { var domainObject = new DefaultDomainObject(); var snapshot = domainObject.CreateSnapshot(); Assert.False(string.IsNullOrWhiteSpace(snapshot.Identifier), "string.IsNullOrWhiteSpace(snapshot.Identifier)"); }
public async Task NothingWrittenWithoutStoredEvents() { var domainObject = new DefaultDomainObject(); var store = new Mock <IEventStore>(MockBehavior.Strict); var result = await domainObject.WriteRecordedEvents(store.Object); Assert.False(result.IsError, "result.IsError"); }
public void SnapshotIncludesSubProperties() { var domainObject = new DefaultDomainObject(); var snapshot = domainObject.CreateSnapshot(); Assert.Contains($"\"{nameof(DefaultDomainObject.FooBarSubProperty1)}\":{domainObject.FooBarSubProperty1}", snapshot.JsonData, StringComparison.OrdinalIgnoreCase); }
public void UnknownSnapshotNotAccepted() { var domainObject = new DefaultDomainObject(); var versions = (domainObject.CurrentVersion, domainObject.MetaVersion); domainObject.ApplySnapshot(new DomainObjectSnapshot("ForgedDataType", "Some-Identifier", "{}", long.MaxValue, long.MaxValue)); Assert.Equal(versions, (domainObject.CurrentVersion, domainObject.MetaVersion)); }
public void NullEventReplayed() { var domainObject = new DefaultDomainObject(); var versions = (domainObject.CurrentVersion, domainObject.MetaVersion); domainObject.ApplyEvent(null); Assert.Equal(versions.CurrentVersion, domainObject.CurrentVersion); Assert.Equal(versions.MetaVersion, domainObject.MetaVersion); }
public void SnapshotContainsVersion() { var domainObject = new DefaultDomainObject(); domainObject.SetVersion(42, 4711); var snapshot = domainObject.CreateSnapshot(); Assert.Equal(42, snapshot.Version); Assert.Equal(4711, snapshot.MetaVersion); }
public void EventReplayHandlerInvoked() { var domainObject = new DefaultDomainObject(); Assert.RaisesAny <EventArgs>(e => domainObject.EventReplayHandled += e, e => domainObject.EventReplayHandled -= e, () => domainObject.ApplyEvent(new ReplayedEvent { Version = 42, UtcTime = DateTime.UtcNow, DomainEvent = new EnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar")) })); }
public void VersionsIncrementedAfterReplay() { var domainObject = new DefaultDomainObject(); domainObject.ApplyEvent(new ReplayedEvent { Version = 42, UtcTime = DateTime.UtcNow, DomainEvent = new EnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar")) }); Assert.Equal(42, domainObject.CurrentVersion); Assert.Equal(42, domainObject.MetaVersion); }
public async Task QueueClearedAfterWrite() { var domainObject = new DefaultDomainObject(); domainObject.AddEvent(new EnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar"))); var store = new Mock <IEventStore>(MockBehavior.Strict); store.Setup(s => s.WriteEvents(It.IsAny <IList <DomainEvent> >())) .ReturnsAsync(42); await domainObject.WriteRecordedEvents(store.Object); Assert.Empty(domainObject.GetCapturedDomainEvents()); }
public async Task IncrementVersionAfterWrite() { var domainObject = new DefaultDomainObject(); domainObject.AddEvent(new EnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar"))); var store = new Mock <IEventStore>(MockBehavior.Strict); store.Setup(s => s.WriteEvents(It.IsAny <IList <DomainEvent> >())) .ReturnsAsync(42); await domainObject.WriteRecordedEvents(store.Object); Assert.Equal(42, domainObject.CurrentVersion); Assert.Equal(42, domainObject.MetaVersion); }
public void OldEventGiven() { var domainObject = new DefaultDomainObject(); domainObject.SetVersion(100, 101); domainObject.ApplyEvent(new ReplayedEvent { Version = 42, UtcTime = DateTime.UtcNow, DomainEvent = new DefaultEnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar")) }); Assert.Equal(100, domainObject.CurrentVersion); Assert.Equal(101, domainObject.MetaVersion); }
public void UnhandledEventGiven() { var domainObject = new DefaultDomainObject(); var versions = (domainObject.CurrentVersion, domainObject.MetaVersion); domainObject.ApplyEvent(new ReplayedEvent { Version = 42, UtcTime = DateTime.UtcNow, DomainEvent = new DefaultEnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar")) }); Assert.Equal(versions.CurrentVersion, domainObject.CurrentVersion); Assert.Equal(42, domainObject.MetaVersion); }
public void NullDomainEventReplayed() { var domainObject = new DefaultDomainObject(); var versions = (domainObject.CurrentVersion, domainObject.MetaVersion); domainObject.ApplyEvent(new ReplayedEvent { Version = 42, UtcTime = DateTime.UtcNow, DomainEvent = null }); Assert.Equal(versions.CurrentVersion, domainObject.CurrentVersion); Assert.Equal(versions.MetaVersion, domainObject.MetaVersion); }
public void SnapshotAppliedInternally() { var domainObject = new DefaultDomainObject { FooBarSubProperty1 = 4242 }; domainObject.SetVersion(42, 42); var snapshot = domainObject.CreateSnapshot(); Assert.RaisesAny <EventArgs>(e => domainObject.SnapshotAppliedInternally += e, e => domainObject.SnapshotAppliedInternally -= e, () => { domainObject.ApplySnapshot(snapshot); }); Assert.Equal(42, domainObject.MetaVersion); Assert.Equal(42, domainObject.CurrentVersion); }
public void ReturnValidationErrors() { var validator = new Mock <ICommandValidator>(MockBehavior.Strict); validator.Setup(v => v.ValidateDomainEvent(It.IsAny <EnvironmentCreated>())) .Returns(() => Result.Error("Something went wrong", ErrorCode.Undefined)); var domainObject = new DefaultDomainObject(); var domainEvent = new EnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar")); domainObject.AddEvent(domainEvent); var result = domainObject.Validate(new List <ICommandValidator> { validator.Object }); Assert.NotEmpty(result[domainEvent]); }
public void ValidatesCapturedEvents() { var validator = new Mock <ICommandValidator>(MockBehavior.Strict); validator.Setup(v => v.ValidateDomainEvent(It.IsAny <EnvironmentCreated>())) .Returns(Result.Success) .Verifiable(); var domainObject = new DefaultDomainObject(); domainObject.AddEvent(new EnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar"))); domainObject.Validate(new List <ICommandValidator> { validator.Object }); validator.Verify(); }