public async Task ProcessChanges_GivenChangeModelWithAggregableFieldChangesButNoAggregateParanetersFound_DoesNotResetCalculationForFieldDefinitionChanges(FieldDefinitionChangeType fieldDefinitionChangeType) { //Arrange string definitionId = "df-id-1"; string specificationId = "spec-1"; IEnumerable <Calculation> calculations = new[] { new Calculation { Current = new CalculationVersion { SourceCode = "return 2 + Datasets.TestRelationship.TestField1" } } }; DatasetDefinitionChanges datasetDefinitionChanges = new DatasetDefinitionChanges { Id = definitionId, }; FieldDefinitionChanges fieldDefinitionChanges = new FieldDefinitionChanges { FieldDefinition = new FieldDefinition { Id = "field1" }, ExistingFieldDefinition = new FieldDefinition { Name = "test field 1" } }; fieldDefinitionChanges.ChangeTypes.Add(fieldDefinitionChangeType); TableDefinitionChanges tableDefinitionChanges = new TableDefinitionChanges(); tableDefinitionChanges.FieldChanges.Add(fieldDefinitionChanges); datasetDefinitionChanges.TableDefinitionChanges.Add(tableDefinitionChanges); string json = JsonConvert.SerializeObject(datasetDefinitionChanges); Message message = new Message(Encoding.UTF8.GetBytes(json)); ILogger logger = CreateLogger(); IEnumerable <string> relationshipSpecificationIds = new[] { specificationId }; IEnumerable <DatasetSpecificationRelationshipViewModel> relationshipViewModels = new[] { new DatasetSpecificationRelationshipViewModel { Name = "Test Relationship" } }; IDatasetRepository datasetRepository = CreateDatasetRepository(); datasetRepository .GetRelationshipSpecificationIdsByDatasetDefinitionId(Arg.Is(definitionId)) .Returns(relationshipSpecificationIds); datasetRepository .GetCurrentRelationshipsBySpecificationIdAndDatasetDefinitionId(Arg.Is(specificationId), Arg.Is(definitionId)) .Returns(relationshipViewModels); ICalculationService calculationService = CreateCalculationService(); ICalculationsRepository calculationsRepository = CreateCalculationsRepository(); calculationsRepository .GetCalculationsBySpecificationId(Arg.Is(specificationId)) .Returns(calculations); DatasetDefinitionFieldChangesProcessor processor = CreateProcessor( logger: logger, datasetRepository: datasetRepository, calculationService: calculationService, calculationsRepository: calculationsRepository); //Act await processor.ProcessChanges(message); //Assert await calculationService .DidNotReceive() .ResetCalculationForFieldDefinitionChanges(Arg.Any <IEnumerable <DatasetSpecificationRelationshipViewModel> >(), Arg.Any <string>(), Arg.Any <IEnumerable <string> >()); }
public async Task ProcessChanges_GivenChangeModelWithAggregableFieldChanges_CallsResetCalculationForFieldDefinitionChanges(FieldDefinitionChangeType fieldDefinitionChangeType) { //Arrange string definitionId = "df-id-1"; string specificationId = "spec-1"; IEnumerable <Calculation> calculations = new[] { new Calculation { Current = new CalculationVersion { SourceCode = "return Sum(Datasets.TestRelationship.TestField1)" } } }; DatasetDefinitionChanges datasetDefinitionChanges = new DatasetDefinitionChanges { Id = definitionId, }; FieldDefinitionChanges fieldDefinitionChanges = new FieldDefinitionChanges { FieldDefinition = new FieldDefinition { Id = "field1" }, ExistingFieldDefinition = new FieldDefinition { Name = "test field 1" } }; fieldDefinitionChanges.ChangeTypes.Add(fieldDefinitionChangeType); TableDefinitionChanges tableDefinitionChanges = new TableDefinitionChanges(); tableDefinitionChanges.FieldChanges.Add(fieldDefinitionChanges); datasetDefinitionChanges.TableDefinitionChanges.Add(tableDefinitionChanges); string json = JsonConvert.SerializeObject(datasetDefinitionChanges); Message message = new Message(Encoding.UTF8.GetBytes(json)); ILogger logger = CreateLogger(); IEnumerable <string> relationshipSpecificationIds = new[] { specificationId }; IEnumerable <Common.ApiClient.DataSets.Models.DatasetSpecificationRelationshipViewModel> relationshipViewModels = new[] { new Common.ApiClient.DataSets.Models.DatasetSpecificationRelationshipViewModel { Name = "Test Relationship" } }; IEnumerable <DatasetSpecificationRelationshipViewModel> relationshipViewModel = new[] { new DatasetSpecificationRelationshipViewModel { Name = "Test Relationship" } }; IDatasetsApiClient datasetRepository = CreateDatasetRepository(); datasetRepository .GetSpecificationIdsForRelationshipDefinitionId(Arg.Is(definitionId)) .Returns(new ApiResponse <IEnumerable <string> >(HttpStatusCode.OK, relationshipSpecificationIds)); datasetRepository .GetCurrentRelationshipsBySpecificationIdAndDatasetDefinitionId(Arg.Is(specificationId), Arg.Is(definitionId)) .Returns(new ApiResponse <IEnumerable <Common.ApiClient.DataSets.Models.DatasetSpecificationRelationshipViewModel> >(HttpStatusCode.OK, relationshipViewModels)); ICalculationService calculationService = CreateCalculationService(); ICalculationsRepository calculationsRepository = CreateCalculationsRepository(); calculationsRepository .GetCalculationsBySpecificationId(Arg.Is(specificationId)) .Returns(calculations); IMapper mapper = CreateMapper(); DatasetDefinitionFieldChangesProcessor processor = CreateProcessor( logger: logger, datasetRepository: datasetRepository, calculationService: calculationService, calculationsRepository: calculationsRepository, mapper: mapper); //Act await processor.Run(message); //Assert await calculationService .Received(1) .ResetCalculationForFieldDefinitionChanges(Arg.Is <IEnumerable <Models.Datasets.ViewModels.DatasetSpecificationRelationshipViewModel> >(_ => _.First().Id == relationshipViewModel.First().Id), Arg.Is(specificationId), Arg.Is <IEnumerable <string> >(m => m.First() == "test field 1")); }
public async Task ProcessChanges_GivenChangeModelWithFieldChanges_CallsResetCalculationForFieldDefinitionChanges(FieldDefinitionChangeType fieldDefinitionChangeType) { //Arrange string definitionId = "df-id-1"; string specificationId = "spec-1"; DatasetDefinitionChanges datasetDefinitionChanges = new DatasetDefinitionChanges { Id = definitionId, }; FieldDefinitionChanges fieldDefinitionChanges = new FieldDefinitionChanges { FieldDefinition = new FieldDefinition { Id = "field1" }, ExistingFieldDefinition = new FieldDefinition { Name = "test field 1" } }; fieldDefinitionChanges.ChangeTypes.Add(fieldDefinitionChangeType); TableDefinitionChanges tableDefinitionChanges = new TableDefinitionChanges(); tableDefinitionChanges.FieldChanges.Add(fieldDefinitionChanges); datasetDefinitionChanges.TableDefinitionChanges.Add(tableDefinitionChanges); string json = JsonConvert.SerializeObject(datasetDefinitionChanges); Message message = new Message(Encoding.UTF8.GetBytes(json)); ILogger logger = CreateLogger(); IEnumerable <string> relationshipSpecificationIds = new[] { specificationId }; IEnumerable <DatasetSpecificationRelationshipViewModel> relationshipViewModels = new[] { new DatasetSpecificationRelationshipViewModel() }; IDatasetRepository datasetRepository = CreateDatasetRepository(); datasetRepository .GetRelationshipSpecificationIdsByDatasetDefinitionId(Arg.Is(definitionId)) .Returns(relationshipSpecificationIds); datasetRepository .GetCurrentRelationshipsBySpecificationIdAndDatasetDefinitionId(Arg.Is(specificationId), Arg.Is(definitionId)) .Returns(relationshipViewModels); ICalculationService calculationService = CreateCalculationService(); DatasetDefinitionFieldChangesProcessor processor = CreateProcessor( logger: logger, datasetRepository: datasetRepository, calculationService: calculationService); //Act await processor.ProcessChanges(message); //Assert await calculationService .Received(1) .ResetCalculationForFieldDefinitionChanges(Arg.Is(relationshipViewModels), Arg.Is(specificationId), Arg.Is <IEnumerable <string> >(m => m.First() == "test field 1")); }
public FieldDefinitionChanges(FieldDefinitionChangeType fieldDefinitionChangeType) { ChangeTypes = new List <FieldDefinitionChangeType> { fieldDefinitionChangeType }; }