public async Task when_factory_gives_wrong_aggregate() { //Arrange, for some error aggregate factory will return an initialized aggregate with an id. base.AggregateFactory = new MyAggregateFactory(Ticket.CreateNew("Ticket_2")); //Act and assert, we are trying to retrieve Ticket_1 but the factory will return a fully aggregate with id Ticket_2 //we expect an exception to be thrown. await Assert.ThrowsAsync <AggregateAlreadyInitializedException>(async() => { await Repository.GetByIdAsync <Ticket>("Ticket_1").ConfigureAwait(false); }).ConfigureAwait(false); }
public async Task should_save_aggregate_created_by_external_factory() { // arrange var ticket = Ticket.CreateNew("Ticket_1"); ticket.Sale(); // act await Repository.SaveAsync(ticket, "new"); // assert var chunk = await Persistence.ReadSingleBackwardAsync("Ticket_1").ConfigureAwait(false); Assert.NotNull(chunk); Assert.IsType <Changeset>(chunk.Payload); Assert.Equal(1, ((Changeset)chunk.Payload).AggregateVersion); }