Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 public void Hydrate(TestAggregateSnapshot aggregateSnapshot)
 {
     TestCollection = aggregateSnapshot.Tests.Select(x => new Test(TestId.With(x.Id))).ToList();
     FromHydration  = true;
 }