Esempio n. 1
0
        public async Task save_should_throw_exception_when_concurrency_is_violated()
        {
            // arrange
            var id          = NewGuid();
            var birthday    = Now.AddYears(-21);
            var newEvents   = new IEvent[] { new Married(id, NewGuid(), Now) };
            var persistence = new SimplePersistence();
            var eventStore  = new SimpleEventStore(persistence);

            await persistence.Persist(new Commit()
            {
                Id = id, Version = 0, Events = { new Born(id, "John", "Doe", birthday) }
            }, CancellationToken.None);

            await persistence.Persist(new Commit()
            {
                Id = id, Version = 1, Events = { new Married(id, NewGuid(), Now) }
            }, CancellationToken.None);

            // act
            Func <Task> save = () => eventStore.Save(id, newEvents, 0, CancellationToken.None);

            // assert
            save.Should().Throw <ConcurrencyException>();
        }
Esempio n. 2
0
        public async Task load_should_return_stream_that_throws_not_found_exception()
        {
            // arrange
            var id          = NewGuid();
            var persistence = new SimplePersistence();
            var eventStore  = new SimpleEventStore(persistence);

            // act
            var events = await eventStore.Load(id, CancellationToken.None);

            var    enumerator = events.GetEnumerator();
            Action moveNext   = () => enumerator.MoveNext();

            // assert
            moveNext.Should().Throw <AggregateNotFoundException>();
        }
Esempio n. 3
0
        public async Task save_should_update_event_versions()
        {
            // arrange
            var id       = NewGuid();
            var birthday = Now.AddYears(-21);
            var events   = new IEvent[]
            {
                new Born(id, "John", "Doe", birthday),
                new Married(id, NewGuid(), Now)
            };
            var persistence = new SimplePersistence();
            var eventStore  = new SimpleEventStore(persistence);
            var version     = 0;
            var sequence    = 0;

            // act
            await eventStore.Save(id, events, ExpectedVersion.Initial, CancellationToken.None);

            // assert
            foreach (var @event in events)
            {
                @event.Should().BeEquivalentTo(new { Version = version, Sequence = sequence++ }, options => options.ExcludingMissingMembers());
            }
        }