public async Task Should_create_a_state_instance() { var harness = new InMemoryTestHarness(); StateMachineSagaTestHarness <OrderState, OrderStateMachine> saga = harness.StateMachineSaga <OrderState, OrderStateMachine>(new OrderStateMachine()); await harness.Start(); try { Guid orderId = NewId.NextGuid(); await harness.Bus.Publish <OrderSubmitted>(new { OrderId = orderId, InVar.Timestamp, CustomerNumber = "12345" }); Guid?instanceId = await saga.Exists(orderId, x => x.Submitted); instanceId.Should().Be(orderId); OrderState instance = saga.Sagas.Contains(instanceId.Value); instance.CustomerNumber.Should().Be("12345"); } finally { await harness.Stop(); } }
public async Task Should_respond_to_status_checks() { var harness = new InMemoryTestHarness(); var orderStateMachine = new OrderStateMachine(); StateMachineSagaTestHarness <OrderState, OrderStateMachine> saga = harness.StateMachineSaga <OrderState, OrderStateMachine>(orderStateMachine); await harness.Start(); try { Guid orderId = NewId.NextGuid(); await harness.Bus.Publish <OrderSubmitted>(new { OrderId = orderId, InVar.Timestamp, CustomerNumber = "12345" }); Guid?instanceId = await saga.Exists(orderId, x => x.Submitted); instanceId.Should().Be(orderId); var requestClient = await harness.ConnectRequestClient <CheckOrder>(); var response = await requestClient.GetResponse <OrderStatus>(new { OrderId = orderId }); response.Message.State.Should().Be(orderStateMachine.Submitted.Name); } finally { await harness.Stop(); } }
public async Task Should_Create_A_State_Instance() { //arrange var orderId = NewId.NextGuid(); var customerNumber = "12345"; //act await _harness.Bus.Publish <OrderSubmitted>(new OrderSubmitted { OrderId = orderId, Timestamp = InVar.Timestamp, CustomerNumber = customerNumber }); //assert _saga.Created.Select(x => x.CorrelationId == orderId).Any().Should().BeTrue(); var instanceId = await _saga.Exists(orderId, x => x.Submitted); instanceId.Should().NotBeNull(); var instance = _saga.Sagas.Contains(instanceId.Value); instance.CustomerNumber.Should().Be(customerNumber); }