Ejemplo n.º 1
0
        public void SnapshotStoreLoadsSnapshotFromPersistentStore()
        {
            var persistentSnapshotStore = new InMemorySnapshotStore();
            var snapshotStore           = new SnapshotStore(persistentSnapshotStore);

            var guid      = Guid.NewGuid();
            var aggregate = new TestSnapshotAggregate(guid, "Test aggregate");

            snapshotStore.SaveSnapshot(aggregate);

            snapshotStore.GetSnapshot(guid).Should().NotBeNull();
            snapshotStore.GetSnapshot(guid).AggregateId.Should().Be(guid);
        }
Ejemplo n.º 2
0
 public when_getting_the_snapshot()
 {
     Snapshot = new Snapshot(Guid.NewGuid(), 1, new TestSnapshot {
         Name = "Name"
     });
     SnapshotStore.SaveSnapshot(Snapshot);
     _retrieved = SnapshotStore.GetSnapshot(Snapshot.EventSourceId, long.MaxValue);
 }
Ejemplo n.º 3
0
 public void SetUp()
 {
     Snapshot = new Snapshot(Guid.NewGuid(), 1, new TestSnapshot {
         Name = "Name"
     });
     SnapshotStore.SaveSnapshot(Snapshot);
     _retrieved = SnapshotStore.GetSnapshot(Snapshot.EventSourceId, long.MaxValue);
 }
Ejemplo n.º 4
0
 public void SetUp()
 {
     Snapshot = new TestSnapshot {
         EventSourceId = Guid.NewGuid(), EventSourceVersion = 1, Name = "TestName"
     };
     SnapshotStore.SaveShapshot(Snapshot);
     _retrieved = SnapshotStore.GetSnapshot(Snapshot.EventSourceId);
 }
Ejemplo n.º 5
0
        public void SnapshotStoreShouldNotThrowExceptionWhenNoSnapshotIsAvailable()
        {
            var persistentSnapshotStore = new InMemorySnapshotStore();
            var snapshotStore           = new SnapshotStore(persistentSnapshotStore);

            Action act = () => snapshotStore.GetSnapshot(Guid.NewGuid());

            act.ShouldNotThrow();
        }
            public void ReturnExactMatch()
            {
                var streamId  = Guid.NewGuid();
                var snapshot1 = new Snapshot(streamId, 1, new Object());
                var snapshot2 = new Snapshot(streamId, 10, new Object());

                SnapshotStore.Save(snapshot1);
                SnapshotStore.Save(snapshot2);

                Assert.Equal(10, SnapshotStore.GetSnapshot(typeof(Object), streamId, 10).Version);
            }
            public void ReturnImmediatelyPreceedingVersion()
            {
                var streamId  = Guid.NewGuid();
                var snapshot1 = new Snapshot(streamId, 1, new Object());
                var snapshot2 = new Snapshot(streamId, 10, new Object());

                SnapshotStore.Save(snapshot1);
                SnapshotStore.Save(snapshot2);

                Assert.Equal(10, SnapshotStore.GetSnapshot(typeof(Object), streamId, 20).Version);
            }
Ejemplo n.º 8
0
        public void SnapshotStoreShouldReturnTheCorrectAggregateType()
        {
            var persistentSnapshotStore = new InMemorySnapshotStore();
            var snapshotStore           = new SnapshotStore(persistentSnapshotStore);

            var guid      = Guid.NewGuid();
            var aggregate = new TestSnapshotAggregate(guid, "Test aggregate");

            snapshotStore.SaveSnapshot(aggregate);

            var snapshot = snapshotStore.GetSnapshot(guid) as TestAggregateSnapshot;

            snapshot.Should().NotBeNull();
        }
Ejemplo n.º 9
0
        public void SnapshotShouldBeSuccessfullyAppliedToAggregate()
        {
            var persistentSnapshotStore = new InMemorySnapshotStore();
            var snapshotStore           = new SnapshotStore(persistentSnapshotStore);

            var          guid      = Guid.NewGuid();
            const string name      = "Test aggregate";
            var          aggregate = new TestSnapshotAggregate(guid, name);

            snapshotStore.SaveSnapshot(aggregate);
            var snapshot = snapshotStore.GetSnapshot(guid) as TestAggregateSnapshot;

            var newAggregate = new TestSnapshotAggregate(Guid.NewGuid(), String.Empty);

            newAggregate.SetSnapshot(snapshot);

            newAggregate.Id.Should().Be(guid);
            newAggregate.ReturnNameForTest().Should().Be(name);
        }
Ejemplo n.º 10
0
        public void ShouldGenerateSnapshot()
        {
            //Given
            var          events           = new List <object>();
            Guid         id               = Guid.NewGuid();
            const string name             = "test";
            var          bus              = new E05.Test.Infrastructure.Bus();
            var          snapshotStore    = new SnapshotStore();
            var          eventsSerializer = EventsSerializer.GetEventSerializer();
            var          eventStore       = new EventStore(bus, eventsSerializer, snapshotStore);
            var          commandHandler   = new InventoryCommandHandler(bus, eventStore);
            var          projection       = new ItemsProjection(bus);

            bus.Send(new CreateInventoryItem(id, name));

            //When
            var i = 0;

            for (; i < 11; i++)
            {
                var lastProjection = projection.GetById(id);
                bus.Send(new ModifyItemName(id, "new" + i, lastProjection.Version));
            }

            //Then
            var items = projection.GetAll().ToList();

            Assert.AreEqual(1, items.Count);
            var kvp = items[0];

            Assert.AreEqual(id, kvp.Id);
            Assert.AreEqual("new10", kvp.Name);
            Assert.AreEqual(11, kvp.Version);

            var snapshotData = snapshotStore.GetSnapshot(id);

            Assert.AreEqual(10, snapshotData.Version);
            var snapshot = JsonConvert.DeserializeObject <InventorySnapshot>(snapshotData.Data);

            Assert.AreEqual("new9", snapshot.Name);
        }
Ejemplo n.º 11
0
        public T GetById <T>(Guid id) where T : AggregateRoot
        {
            var aggregateRoot = (T)Activator.CreateInstance(typeof(T));
            IEnumerable <IEvent> events;

            var snapshotData = _snapshotStore.GetSnapshot(id);

            if (snapshotData == null)
            {
                events = Events
                         .Where(e => e.Id == id)
                         .Select(ev => _eventsSerializer.DeserializeEvent(ev.Data, ev.Type));
            }
            else
            {
                var snapshottableAggregateRoot = aggregateRoot as SnapshottableAggregateRoot;
                snapshottableAggregateRoot.LoadSnapshot(snapshotData.Data);
                events = Events
                         .Where(e => e.Id == id && e.Version > aggregateRoot.Version)
                         .Select(ev => _eventsSerializer.DeserializeEvent(ev.Data, ev.Type));
            }
            aggregateRoot.LoadFromHistory(events);
            return(aggregateRoot);
        }
            public void ReturnNullIfNoSnapshots()
            {
                var streamId = Guid.NewGuid();

                Assert.Null(SnapshotStore.GetSnapshot(typeof(Object), streamId, 10));
            }
Ejemplo n.º 13
0
        public void it_should_return_null_if_the_snapshot_does_not_exist()
        {
            var shouldbenull = SnapshotStore.GetSnapshot(Guid.NewGuid(), long.MaxValue);

            Assert.Null(shouldbenull);
        }
Ejemplo n.º 14
0
        public void it_should_return_null_if_the_snapshot_does_not_exist()
        {
            var shouldbenull = SnapshotStore.GetSnapshot(Guid.NewGuid());

            Assert.That(shouldbenull, Is.Null);
        }