public void ShouldProduceCalculateStatisticsOperationForFirmStatisticsDto()
        {
            // Arrange
            var firmPopularity = new DTO.FirmPopularity
            {
                ProjectId = 1,
                Firms = new[]
                        {
                            new DTO.FirmPopularity.Firm
                                {
                                    FirmId = 2,
                                    Categories = new[]
                                        {
                                            new DTO.FirmPopularity.Firm.Category
                                                {
                                                    CategoryId = 3,
                                                    Hits = 4,
                                                    Shows = 5
                                                }
                                        }
                                }
                        }
            };

            SourceDb.Has(new FirmCategoryStatistics { ProjectId = 1, FirmId = 7 },
                         new FirmCategoryStatistics { ProjectId = 2, FirmId = 8 });

            var repositoryFactory = new VerifiableRepositoryFactory();
            var accessor = new FirmCategoryStatisticsAccessor();
            var actor = new ReplaceDataObjectsActor<FirmCategoryStatistics>(
                Query,
                repositoryFactory.Create<FirmCategoryStatistics>(),
                accessor,
                accessor);

            // Act
            var events = actor.ExecuteCommands(new[] { new ReplaceFirmPopularityCommand(firmPopularity) });

            // Assert
            Assert.That(events.Count, Is.EqualTo(1));
            repositoryFactory.Verify<FirmCategoryStatistics>(
                m => m.Delete(It.Is(Predicate.Match(new FirmCategoryStatistics { ProjectId = 1, FirmId = 7 }))),
                Times.AtLeastOnce);
            repositoryFactory.Verify<FirmCategoryStatistics>(
                m => m.Add(It.Is(Predicate.Match(new FirmCategoryStatistics { ProjectId = 1, FirmId = 2, CategoryId = 3, Hits = 4, Shows = 5 }))),
                Times.AtLeastOnce);
        }
Пример #2
0
 public ValidationRuleActor(IQuery query,
                            IRepository <Version> versionRepository,
                            ReplaceDataObjectsActor <Version.ErmState> replaceErmStates,
                            IRepository <Version.AmsState> amsStatesRepository,
                            IBulkRepository <Version.ValidationResult> validationResultRepository,
                            IEqualityComparerFactory equalityComparerFactory,
                            ValidationResultCache cache)
 {
     _query                      = query;
     _versionRepository          = versionRepository;
     _replaceErmStates           = replaceErmStates;
     _validationResultRepository = validationResultRepository;
     _amsStatesRepository        = amsStatesRepository;
     _accessors                  = new ValidationRuleRegistry(query).CreateAccessors().ToDictionary(x => (MessageTypeCode)x.MessageTypeId, x => x);
     _equalityComparer           = equalityComparerFactory.CreateCompleteComparer <Version.ValidationResult>();
     _cache                      = cache;
     _transactionOptions         = new TransactionOptions {
         IsolationLevel = IsolationLevel.ReadCommitted, Timeout = TimeSpan.Zero
     };
 }
        public void ShouldProduceCalculateStatisticsOperationForCategoryStatisticsDto()
        {
            // Arrange
            var rubricPopularity = new DTO.RubricPopularity
            {
                ProjectId = 1,
                Categories = new[]
                        {
                            new DTO.RubricPopularity.Category
                                {
                                    CategoryId = 2,
                                    AdvertisersCount = 3,
                                }
                        }
            };

            SourceDb.Has(new ProjectCategoryStatistics { ProjectId = 1, CategoryId = 7 },
                         new ProjectCategoryStatistics { ProjectId = 2, CategoryId = 7 });

            var repositoryFactory = new VerifiableRepositoryFactory();
            var accessor = new ProjectCategoryStatisticsAccessor();
            var actor = new ReplaceDataObjectsActor<ProjectCategoryStatistics>(
                Query,
                repositoryFactory.Create<ProjectCategoryStatistics>(),
                accessor,
                accessor);

            // Act
            var events = actor.ExecuteCommands(new[] { new ReplaceRubricPopularityCommand(rubricPopularity) });

            // Assert
            Assert.That(events.Count, Is.EqualTo(1));
            repositoryFactory.Verify<ProjectCategoryStatistics>(
                m => m.Delete(It.Is(Predicate.Match(new ProjectCategoryStatistics { ProjectId = 1, CategoryId = 7 }))),
                Times.AtLeastOnce);
            repositoryFactory.Verify<ProjectCategoryStatistics>(
                m => m.Add(It.Is(Predicate.Match(new ProjectCategoryStatistics { ProjectId = 1, CategoryId = 2, AdvertisersCount = 3 }))),
                Times.AtLeastOnce);
        }
        public void ShouldProcessFirmCategoryForecastFromFirmForecastDto()
        {
            // Arrange
            var firmForecast = new DTO.FirmForecast
            {
                ProjectId = 1,
                Firms = new[]
                        {
                            new DTO.FirmForecast.Firm
                                {
                                    Id = 1,
                                    ForecastClick = 1,
                                    ForecastAmount = 1,
                                    Categories = new[]
                                        {
                                            new DTO.FirmForecast.Category
                                                {
                                                    Id = 1,
                                                    ForecastAmount = 1,
                                                    ForecastClick = 1,
                                                }
                                        }
                                }
                        }
            };

            SourceDb.Has(new FirmCategoryForecast { ProjectId = 1, FirmId = 1, CategoryId = 1 },
                         new FirmCategoryForecast { ProjectId = 2, FirmId = 2, CategoryId = 1 });

            var repositoryFactory = new VerifiableRepositoryFactory();
            var accessor = new FirmCategoryForecastAccessor();
            var actor = new ReplaceDataObjectsActor<FirmCategoryForecast>(
                Query,
                repositoryFactory.Create<FirmCategoryForecast>(),
                accessor,
                accessor);

            // Act
            var events = actor.ExecuteCommands(new[] { new ReplaceFirmCategoryForecastCommand(firmForecast) });

            // Assert
            Assert.That(events.Count, Is.EqualTo(1));
            repositoryFactory.Verify<FirmCategoryForecast>(
                m => m.Delete(It.Is(Predicate.Match(new FirmCategoryForecast { ProjectId = 1, FirmId = 1, CategoryId = 1 }))), Times.AtLeastOnce);
            repositoryFactory.Verify<FirmCategoryForecast>(
                m => m.Delete(It.Is(Predicate.Match(new FirmCategoryForecast { ProjectId = 2, FirmId = 2, CategoryId = 1 }))), Times.Never);
            repositoryFactory.Verify<FirmCategoryForecast>(
                m => m.Add(It.Is(Predicate.Match(new FirmCategoryForecast { ProjectId = 1, FirmId = 1, CategoryId = 1, ForecastClick = 1, ForecastAmount = 1 }))), Times.AtLeastOnce);
        }