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); }
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))); }