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