Ejemplo n.º 1
0
        public async Task only_most_recent_snapshot_is_used()
        {
            var snap = Setup.Snapshot(3, Guid.NewGuid());
            await _store.Store(snap);

            var snap1 = Setup.Snapshot(4, snap.EntityId);
            await _store.Store(snap1);

            var get = await _store.GetData(Config(c => c.OfEntity(snap.EntityId).IncludeSnapshots(true)),
                                           _cancellationToken);

            var mem2 = Utils.UnpackSnapshot(get.Value.LatestSnapshot.Value.SerializedData) as SomeMemento;
            var mem1 = Utils.UnpackSnapshot(snap1.SerializedData) as SomeMemento;

            mem2.Name.Should().Be(mem1.Name);
            mem2.IsOpen.Should().Be(mem1.IsOpen);
        }
Ejemplo n.º 2
0
        private EntityEvents ConvertToEntityEvents(EntityStreamData raw)
        {
            Optional <object> GetSnapshot(string sData)
            {
                if (sData.IsNullOrEmpty())
                {
                    return(Optional <object> .Empty);
                }
                return(new Optional <object>(Utils.UnpackSnapshot(sData)));
            }

            IReadOnlyCollection <object> GetEvents(IEnumerable <Commit> commits)
            =>
            commits.SelectMany(d =>
                               Utils.UnpackEvents(d.Timestamp, d.EventData, _settings.EventMappers)).ToArray();

            return(new EntityEvents(GetEvents(raw.Commits), raw.Commits.Max(d => d.Version), GetSnapshot(raw.LatestSnapshot.ValueOr(null)?.SerializedData)));
        }