public void CommittedSnapshot_AfterSerialization_IsValidAfterDeserialization() { var aggregateSequenceNumber = 3; var aggregateId = TestAggregateId.New; var aggregateSnapshot = new TestAggregateSnapshot(Enumerable.Range(0, aggregateSequenceNumber - 1).Select(x => new TestAggregateSnapshot.TestModel(Guid.NewGuid())).ToList()); var now = DateTimeOffset.UtcNow; var snapshotId = SnapshotId.NewDeterministic( GuidFactories.Deterministic.Namespaces.Snapshots, $"{aggregateId.Value}-v{aggregateSequenceNumber}"); var snapshotMetadata = new SnapshotMetadata { SnapshotId = snapshotId, AggregateSequenceNumber = aggregateSequenceNumber, AggregateName = typeof(TestAggregate).GetAggregateName().Value, AggregateId = aggregateId.Value, }; var committedEvent = new ComittedSnapshot <TestAggregate, TestAggregateId, TestAggregateSnapshot>( aggregateId, aggregateSnapshot, snapshotMetadata, now, aggregateSequenceNumber); committedEvent.SerializeDeserialize().Should().BeEquivalentTo(committedEvent); }
public void FixtureArrangerWithSnapshot_CanBeLoaded() { using (var testKit = new TestKit(_config, "fixture-tests-4")) { var fixture = new AggregateFixture <TestAggregate, TestAggregateId>(testKit); var aggregateIdentity = TestAggregateId.New; var snapshot = new TestAggregateSnapshot(Enumerable.Range(0, 10) .Select(x => new TestAggregateSnapshot.TestModel(Guid.NewGuid())).ToList()); var snapshotStore = Persistence.Instance.Apply(testKit.Sys).SnapshotStoreFor(null); var receiverProbe = testKit.CreateTestProbe("snapshot-probe"); var snapshotSequenceNumber = 1L; fixture .For(aggregateIdentity) .Given(snapshot, snapshotSequenceNumber); snapshotStore.Tell(new LoadSnapshot(aggregateIdentity.Value, new SnapshotSelectionCriteria(long.MaxValue, DateTime.MaxValue), long.MaxValue), receiverProbe.Ref); receiverProbe.ExpectMsg <LoadSnapshotResult>(x => x.Snapshot.Snapshot is ComittedSnapshot <TestAggregate, TestAggregateId, IAggregateSnapshot <TestAggregate, TestAggregateId> > && x.Snapshot.Metadata.SequenceNr == snapshotSequenceNumber && x.Snapshot.Metadata.PersistenceId == aggregateIdentity.Value && x.Snapshot.Snapshot .As <ComittedSnapshot <TestAggregate, TestAggregateId, IAggregateSnapshot <TestAggregate, TestAggregateId> > >().AggregateSnapshot .As <TestAggregateSnapshot>().Tests.Count == snapshot.Tests.Count && x.ToSequenceNr == long.MaxValue); } }
public void Hydrate(TestAggregateSnapshot aggregateSnapshot) { TestCollection = aggregateSnapshot.Tests.Select(x => new Test(TestId.With(x.Id))).ToList(); FromHydration = true; }