Line data Source code
1 : using cdmdotnet.Logging;
2 : using Cqrs.Domain;
3 : using Cqrs.Domain.Factories;
4 : using Cqrs.Events;
5 : using Cqrs.Authentication;
6 : using Cqrs.Snapshots;
7 : using Cqrs.Tests.Substitutes;
8 : using NUnit.Framework;
9 :
10 : namespace Cqrs.Tests.Snapshots
11 : {
12 : [TestFixture]
13 : public class When_saving_a_snapshotable_aggregate_for_each_change
14 0 : {
15 : private TestInMemorySnapshotStore _snapshotStore;
16 : private IUnitOfWork<ISingleSignOnToken> _unitOfWork;
17 : private TestSnapshotAggregate _aggregate;
18 :
19 : [SetUp]
20 0 : public void Setup()
21 : {
22 : IEventStore<ISingleSignOnToken> eventStore = new TestInMemoryEventStore();
23 : var eventPublisher = new TestEventPublisher();
24 : _snapshotStore = new TestInMemorySnapshotStore();
25 : var snapshotStrategy = new DefaultSnapshotStrategy<ISingleSignOnToken>();
26 : var dependencyResolver = new TestDependencyResolver(null);
27 : var aggregateFactory = new AggregateFactory(dependencyResolver, dependencyResolver.Resolve<ILogger>());
28 : var repository = new SnapshotRepository<ISingleSignOnToken>(_snapshotStore, snapshotStrategy, new AggregateRepository<ISingleSignOnToken>(aggregateFactory, eventStore, eventPublisher, new NullCorrelationIdHelper()), eventStore, aggregateFactory);
29 : _unitOfWork = new UnitOfWork<ISingleSignOnToken>(repository);
30 : _aggregate = new TestSnapshotAggregate();
31 :
32 : for (var i = 0; i < 20; i++)
33 : {
34 : _unitOfWork.Add(_aggregate);
35 : _aggregate.DoSomething();
36 : _unitOfWork.Commit();
37 : }
38 :
39 : }
40 :
41 : [Test]
42 0 : public void Should_snapshot_15th_change()
43 : {
44 : Assert.AreEqual(15, _snapshotStore.SavedVersion);
45 : }
46 :
47 : [Test]
48 0 : public void Should_not_snapshot_first_event()
49 : {
50 : Assert.False(_snapshotStore.FirstSaved);
51 : }
52 :
53 : [Test]
54 0 : public void Should_get_aggregate_back_correct()
55 : {
56 : Assert.AreEqual(20, _unitOfWork.Get<TestSnapshotAggregate>(_aggregate.Id).Number);
57 : }
58 : }
59 : }
|