Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }