public void SagaContextRequired() { var saga = new FakeSaga(); var e = new FakeEvent(); Assert.Throws <InvalidOperationException>(() => saga.Handle(e)); }
public void SagaContextIsRequired() { var saga = new FakeSaga(); var ex = Assert.Throws <InvalidOperationException>(() => saga.Handle(new FakeEvent())); Assert.Equal(Exceptions.NoSagaContext, ex.Message); }
public void SagaContextRequired() { var saga = new FakeSaga(); var e = new FakeEvent(); Assert.Throws<InvalidOperationException>(() => saga.Handle(e)); }
public void FlagSagaAsCompleteOnMarkCompleted() { var saga = new FakeSaga(); saga.Handle(new FakeEvent()); Assert.True(saga.Completed); }
public void CannotClearTimeoutIfNotScheduled() { var saga = new FakeSaga { CorrelationId = GuidStrategy.NewGuid(), Timeout = null }; var ex = Assert.Throws <InvalidOperationException>(() => saga.Handle(new FakeEvent())); Assert.Equal(Exceptions.SagaTimeoutNotScheduled.FormatWith(saga.GetType(), saga.CorrelationId), ex.Message); }
public void CannotRescheduleIfTimeoutNotAlreadyScheduled() { var e = new FakeEvent(); var saga = new FakeSaga { Timeout = null }; using (new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) Assert.Throws <InvalidOperationException>(() => saga.Handle(e)); }
public void EventContextIsRequired() { var saga = new FakeSaga(); using (new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), new FakeEvent())) { var ex = Assert.Throws <InvalidOperationException>(() => saga.Handle(new FakeEvent())); Assert.Equal(Exceptions.NoEventContext, ex.Message); } }
public void TimeoutRepresentedAsUtcDateTime() { var saga = new FakeSaga(); var e = new FakeEvent(); using (var context = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(e); Assert.Equal(DateTimeKind.Utc, saga.Timeout.GetValueOrDefault().Kind); Assert.True(context.TimeoutChanged); } }
public void CanScheduleTimeoutIfNotScheduled() { var saga = new FakeSaga(); var e = new FakeEvent(); using (var context = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(e); Assert.NotNull(saga.Timeout); Assert.True(context.TimeoutChanged); } }
public void CanClearTimeoutIfScheduled() { var saga = new FakeSaga { Timeout = SystemTime.Now }; var e = new FakeEvent(); using (var context = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(e); Assert.Null(saga.Timeout); Assert.True(context.TimeoutChanged); } }
public void CannotScheduleTimeoutIfAlreadyScheduled() { var saga = new FakeSaga { CorrelationId = GuidStrategy.NewGuid(), Timeout = SystemTime.Now }; var e = new FakeEvent(); using (var context = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { var ex = Assert.Throws <InvalidOperationException>(() => saga.Handle(e)); Assert.Equal(Exceptions.SagaTimeoutAlreadyScheduled.FormatWith(saga.GetType(), saga.CorrelationId), ex.Message); Assert.False(context.TimeoutChanged); } }
public void CanRescheduleIfTimeoutAlreadyScheduled() { var e = new FakeEvent(); var timeout = SystemTime.Now; var saga = new FakeSaga { Timeout = timeout }; using (var context = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(e); Assert.NotEqual(timeout, saga.Timeout); Assert.True(context.TimeoutChanged); } }
public void CopyRemoteAddressHeaderFromEventContextIfNoUserAddress() { var saga = new FakeSaga(); var userAddress = IPAddress.Loopback.ToString(); var e = new FakeEvent { Id = GuidStrategy.NewGuid() }; var headers = new HeaderCollection(new Dictionary <String, string> { { Header.RemoteAddress, userAddress } }); using (new EventContext(e.Id, headers, e)) using (var sagaContext = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(new FakeEvent()); Assert.Equal(userAddress, sagaContext.GetPublishedCommands().Single().Headers.Single().Value); } }
public void CopyUserNameHeaderFromEventContext() { var saga = new FakeSaga(); var userName = Guid.NewGuid().ToString(); var e = new FakeEvent { Id = GuidStrategy.NewGuid() }; var headers = new HeaderCollection(new Dictionary <String, string> { { Header.UserName, userName } }); using (new EventContext(e.Id, headers, e)) using (var sagaContext = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(new FakeEvent()); Assert.Equal(userName, sagaContext.GetPublishedCommands().Single().Headers.Single().Value); } }
public void PreferCustomHeaderOverEventContextHeaderIfDefined() { var saga = new FakeSaga(); var userName = Guid.NewGuid().ToString(); var customUserName = Guid.NewGuid().ToString(); var e = new FakeEvent { Id = GuidStrategy.NewGuid() }; var headers = new HeaderCollection(new Dictionary <String, string> { { Header.UserName, userName } }); using (new EventContext(e.Id, headers, e)) using (var sagaContext = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(new FakeEvent { CustomHeaders = new[] { new Header(Header.UserName, customUserName, checkReservedNames: false) } }); Assert.Equal(customUserName, sagaContext.GetPublishedCommands().Single().Headers.Single().Value); } }
public void PreferCustomHeaderOverEventContextHeaderIfDefined() { var saga = new FakeSaga(); var userName = Guid.NewGuid().ToString(); var customUserName = Guid.NewGuid().ToString(); var e = new FakeEvent { Id = GuidStrategy.NewGuid() }; var headers = new HeaderCollection(new Dictionary<String, string> { { Header.UserName, userName } }); using (new EventContext(e.Id, headers, e)) using (var sagaContext = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(new FakeEvent { CustomHeaders = new[] { new Header(Header.UserName, customUserName, checkReservedNames: false) } }); Assert.Equal(customUserName, sagaContext.GetPublishedCommands().Single().Headers.Single().Value); } }
public void CopyUserNameHeaderFromEventContext() { var saga = new FakeSaga(); var userName = Guid.NewGuid().ToString(); var e = new FakeEvent { Id = GuidStrategy.NewGuid() }; var headers = new HeaderCollection(new Dictionary<String, string> { { Header.UserName, userName } }); using (new EventContext(e.Id, headers, e)) using (var sagaContext = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(new FakeEvent()); Assert.Equal(userName, sagaContext.GetPublishedCommands().Single().Headers.Single().Value); } }
public void CopyRemoteAddressHeaderFromEventContextIfNoUserAddress() { var saga = new FakeSaga(); var userAddress = IPAddress.Loopback.ToString(); var e = new FakeEvent { Id = GuidStrategy.NewGuid() }; var headers = new HeaderCollection(new Dictionary<String, string> { { Header.RemoteAddress, userAddress } }); using (new EventContext(e.Id, headers, e)) using (var sagaContext = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { saga.Handle(new FakeEvent()); Assert.Equal(userAddress, sagaContext.GetPublishedCommands().Single().Headers.Single().Value); } }
public void EventContextIsRequired() { var saga = new FakeSaga(); using (new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), new FakeEvent())) { var ex = Assert.Throws<InvalidOperationException>(() => saga.Handle(new FakeEvent())); Assert.Equal(Exceptions.NoEventContext, ex.Message); } }
public void SagaContextIsRequired() { var saga = new FakeSaga(); var ex = Assert.Throws<InvalidOperationException>(() => saga.Handle(new FakeEvent())); Assert.Equal(Exceptions.NoSagaContext, ex.Message); }
public void CannotRescheduleIfTimeoutNotAlreadyScheduled() { var e = new FakeEvent(); var saga = new FakeSaga { Timeout = null }; using (new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) Assert.Throws<InvalidOperationException>(() => saga.Handle(e)); }
public void CannotClearTimeoutIfNotScheduled() { var saga = new FakeSaga { CorrelationId = GuidStrategy.NewGuid(), Timeout = null }; var ex = Assert.Throws<InvalidOperationException>(() => saga.Handle(new FakeEvent())); Assert.Equal(Exceptions.SagaTimeoutNotScheduled.FormatWith(saga.GetType(), saga.CorrelationId), ex.Message); }
public void CannotScheduleTimeoutIfAlreadyScheduled() { var saga = new FakeSaga { CorrelationId = GuidStrategy.NewGuid(), Timeout = SystemTime.Now }; var e = new FakeEvent(); using (var context = new SagaContext(typeof(Saga), GuidStrategy.NewGuid(), e)) { var ex = Assert.Throws<InvalidOperationException>(() => saga.Handle(e)); Assert.Equal(Exceptions.SagaTimeoutAlreadyScheduled.FormatWith(saga.GetType(), saga.CorrelationId), ex.Message); Assert.False(context.TimeoutChanged); } }