Esempio n. 1
0
        public void Retrieving_an_aggregate_with_expected_version_greater_than_the_actual_version_should_throw_a_concurrency_exception()
        {
            var aggregate = new TestAggregate(_aggregateIdUnderTest);

            for (var i = 0; i < 5; i++)
            {
                var eventId = Guid.NewGuid();
                _storedEvents.Add(eventId);
                aggregate.GenerateEvent(eventId);
            }

            RepoUnderTest.Save(aggregate);
            Assert.Throws <AggregateVersionException>(() => RepoUnderTest.GetAggregateFromRepository <TestAggregate>(_aggregateIdUnderTest, 10));
        }
Esempio n. 2
0
        public void Retreiving_a_nonexistant_aggregate_id_should_throw_an_exception()
        {
            var aggregate = new TestAggregate(_aggregateIdUnderTest);

            for (var i = 0; i < 2; i++)
            {
                var eventId = Guid.NewGuid();
                _storedEvents.Add(eventId);
                aggregate.GenerateEvent(eventId);
            }

            RepoUnderTest.Save(aggregate);
            Assert.Throws <AggregateNotFoundException>(() => RepoUnderTest.GetAggregateFromRepository <TestAggregate>(Guid.NewGuid().ToString()));
        }
Esempio n. 3
0
        public void Saving_new_events_to_an_existing_aggregate_should_correctly_persist_events()
        {
            var aggregate = new TestAggregate(_aggregateIdUnderTest);

            RepoUnderTest.Save(aggregate);

            _retrievedAggregate = RepoUnderTest.GetAggregateFromRepository <TestAggregate>(_aggregateIdUnderTest);

            var eventId = Guid.NewGuid();

            _retrievedAggregate.GenerateEvent(eventId);

            RepoUnderTest.Save(_retrievedAggregate);
            var actualAggregate = RepoUnderTest.GetAggregateFromRepository <TestAggregate>(_aggregateIdUnderTest);

            Assert.AreEqual(1, actualAggregate.EventsApplied.Count);
            Assert.AreEqual(_aggregateIdUnderTest, actualAggregate.Id);
            Assert.AreEqual(eventId, actualAggregate.EventsApplied[0]);
        }
Esempio n. 4
0
        public void Retrieving_an_aggregate_with_events_when_specifying_a_version_reconstructs_the_entity_correctly()
        {
            var aggregate = new TestAggregate(_aggregateIdUnderTest);

            for (var i = 0; i < 5; i++)
            {
                var eventId = Guid.NewGuid();
                _storedEvents.Add(eventId);
                aggregate.GenerateEvent(eventId);
            }

            RepoUnderTest.Save(aggregate);
            _retrievedAggregate = RepoUnderTest.GetAggregateFromRepository <TestAggregate>(_aggregateIdUnderTest, 6);

            Assert.AreEqual(_aggregateIdUnderTest, _retrievedAggregate.Id);
            Assert.AreEqual(_storedEvents.Count, _retrievedAggregate.EventsApplied.Count);
            foreach (var id in _storedEvents)
            {
                Assert.Contains(id, _retrievedAggregate.EventsApplied);
            }
        }