예제 #1
0
        private ProjectionsInfo FetchProjectionsInfo(ProjectionsInfo builtProjectionsInfo, int expectedCount)
        {
            var persistedProjectionsInfo = this._storage.GetEntityOrThrow <ProjectionsInfo>("test");

            builtProjectionsInfo.Should().Be(persistedProjectionsInfo);
            persistedProjectionsInfo.Infos.Should().HaveCount(expectedCount);
            return(persistedProjectionsInfo);
        }
예제 #2
0
        private static IEnumerable <ProjectionInfo> LoadInfoList(params int[] viewNumbers)
        {
            var generatedInfos  = GenerateInfoList(viewNumbers);
            var projectionsInfo = new ProjectionsInfo();

            projectionsInfo.Infos.UnionWith(generatedInfos);
            using (var ms = new MemoryStream())
            {
                Serializer.Serialize(ms, projectionsInfo);
                ms.Flush();
                ms.Position = 0;
                return(Serializer.Deserialize <ProjectionsInfo>(ms).Infos);
            }
        }
예제 #3
0
        /// <summary>
        /// Checks the event version.
        /// </summary>
        /// <param name="builtProjectionsInfo">The built projections info.</param>
        /// <param name="persistedProjectionsInfo">The persisted projections info.</param>
        /// <param name="expectations">The expectations in format { viewNumber, expectedEvents }.</param>
        private void CheckEventVersion(ProjectionsInfo builtProjectionsInfo, ProjectionsInfo persistedProjectionsInfo, IDictionary <int, long> expectations)
        {
            var expectedProjectionVersions = ExpectedProjectionVersion.Create(expectations);

            // check projections match expectations by name
            persistedProjectionsInfo.Infos.Should().HaveCount(expectations.Count);
            persistedProjectionsInfo.Infos.Should().Contain(p => expectedProjectionVersions.Any(e => e.CheckpointFile == p.ProjectionName));
            builtProjectionsInfo.Infos.Should().HaveCount(expectations.Count);
            builtProjectionsInfo.Infos.Should().Contain(p => expectedProjectionVersions.Any(e => e.CheckpointFile == p.ProjectionName));

            // load checkpoint for each projection and confirm they match
            foreach (var expectation in expectedProjectionVersions)
            {
                var persistedProjectionInfo = persistedProjectionsInfo.Infos.First(p => p.ProjectionName == expectation.CheckpointFile);
                var checkpoint = this._storage.GetEntityOrThrow <ProjectionCheckpoint>(persistedProjectionInfo.ProjectionName);
                checkpoint.LatestEventVersion.Should().Be(expectation.ExpectedEventVersion);

                var builtProjectionInfo = builtProjectionsInfo.Infos.First(p => p.ProjectionName == expectation.CheckpointFile);
                builtProjectionInfo.GetEventStreamVersion().Should().Be(expectation.ExpectedEventVersion);
                builtProjectionInfo.ProjectionName.Should().Be(expectation.ProjectionType.Name);
            }
        }