public IHttpActionResult PrepareForShipping([FromBody] GuidModel model) { var cmd = new PrepareOrderForShipping(model.OrderId); var order = _commandDispatcher.ExecuteCommand <OrderAggregate>(cmd); return(Ok(OrderModel.FromAggregate(order))); }
private void When_PrepareForShippingDelivered_ThrowsInvalidOrderStateException() { Given(InitialEvents, new OrderReadyForShipping(id), new OrderShipped(id), new OrderDelivered(id)); var command = new PrepareOrderForShipping(id); command.Metadata.CausationId = command.Metadata.CommandId; command.Metadata.CorrelationId = causationAndCorrelationId; WhenThrows <PrepareOrderForShipping, InvalidOrderStateException>(command); }
private void When_PrepareForShippingNoOrderLinesAdded_ThrowsInvalidOrderStateException() { Given(InitialEvents.Take(1).ToArray()); var command = new PrepareOrderForShipping(id); command.Metadata.CausationId = command.Metadata.CommandId; command.Metadata.CorrelationId = causationAndCorrelationId; WhenThrows <PrepareOrderForShipping, InvalidOrderStateException>(command); }
internal void PrepareForShipping(PrepareOrderForShipping cmd) { if (State != OrderState.Pending) { throw new InvalidOrderStateException(cmd.AggregateId, $"State should be {OrderState.Pending} but is {State}"); } if (State == OrderState.ReadyForShipping) { return; } if (!OrderLines.Any()) { throw new InvalidOrderStateException(cmd.AggregateId, $"Order has no order lines"); } RaiseEvent(new OrderReadyForShipping(cmd.AggregateId)); }
private void When_PrepareForShipping_OrderReadyForShipping() { Given(InitialEvents.ToArray()); var command = new PrepareOrderForShipping(id); command.Metadata.CausationId = command.Metadata.CommandId; command.Metadata.CorrelationId = causationAndCorrelationId; When(command); var expectedEvent = new OrderReadyForShipping(id); expectedEvent.Metadata.CausationId = command.Metadata.CommandId; expectedEvent.Metadata.CorrelationId = causationAndCorrelationId; expectedEvent.Metadata.ProcessId = command.Metadata.ProcessId; Then(expectedEvent); }