Ejemplo n.º 1
0
        public void CodeContainsDatasetFieldIdentifier_GivenListOfIdentifiersAndSourceCodeDoesContainAnyFromListButWithExtraCharacters_ReturnsFalse1()
        {
            //Arrange
            string sourceCode = "return Datasets.Ds1.TestField1 + Datasets.Ds1.TestField2";

            IEnumerable <string> datasetFieldIdentifiers = new[] { "Datasets.Ds1.TestField23" };

            //Act
            bool result = SourceCodeHelpers.CodeContainsFullyQualifiedDatasetFieldIdentifier(sourceCode, datasetFieldIdentifiers);

            //Assert
            result
            .Should()
            .BeFalse();
        }
Ejemplo n.º 2
0
        public void CodeContainsFullyQualifiedDatasetFieldIdentifier_GivenListOfIdentifiersAndSourceCodeDoesContainAnyFromListInsideAnAggregate_ReturnsTrue()
        {
            //Arrange
            string sourceCode = "return Sum(Datasets.Ds1.TestField1) + Max(Datasets.Ds1.TestField2)";

            IEnumerable <string> datasetFieldIdentifiers = new[] { "Datasets.Ds1.TestField2" };

            //Act
            bool result = SourceCodeHelpers.CodeContainsFullyQualifiedDatasetFieldIdentifier(sourceCode, datasetFieldIdentifiers);

            //Assert
            result
            .Should()
            .BeTrue();
        }
Ejemplo n.º 3
0
        public void CodeContainsFullyQualifiedDatasetFieldIdentifier_GivenListOfIdentifiersAndSourceCodeDoesContainAnyFromListInAnyCase_ReturnsTrue()
        {
            //Arrange
            string sourceCode = "return Datasets.Ds1.TestField1 + Datasets.Ds1.TestField2";

            IEnumerable <string> datasetFieldIdentifiers = new[] { "DAtASetS.DS1.testfield2" };

            //Act
            bool result = SourceCodeHelpers.CodeContainsFullyQualifiedDatasetFieldIdentifier(sourceCode, datasetFieldIdentifiers);

            //Assert
            result
            .Should()
            .BeTrue();
        }
Ejemplo n.º 4
0
        public void CodeContainsFullyQualifiedDatasetFieldIdentifier_GivenListOfIdentifiersAndSourceCodeDoesContainAnyFromListAsGherkinWhithMultiSpaces_ReturnsTrue()
        {
            //Arrange
            string sourceCode = "Given the    dataset                    'ADULT Advanced Learner Loans Bursary Changed The Name Again'          field                  'Bursary_CurrentYear_PostPMPChange1' is equal to '101" + Environment.NewLine +
                                "Then the result for 'AB Calc 0804-001' is greater than '10'";

            IEnumerable <string> datasetFieldIdentifiers = new[] { "ADULT Advanced Learner Loans Bursary Changed The Name Again field Bursary_CurrentYear_PostPMPChange1" };

            //Act
            bool result = SourceCodeHelpers.CodeContainsFullyQualifiedDatasetFieldIdentifier(sourceCode.RemoveAllQuotes(), datasetFieldIdentifiers);

            //Assert
            result
            .Should()
            .BeTrue();
        }
Ejemplo n.º 5
0
        public async Task ResetScenarioForFieldDefinitionChanges(IEnumerable <DatasetSpecificationRelationshipViewModel> relationships, string specificationId, IEnumerable <string> currentFieldDefinitionNames)
        {
            Guard.ArgumentNotNull(relationships, nameof(relationships));
            Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId));
            Guard.ArgumentNotNull(currentFieldDefinitionNames, nameof(currentFieldDefinitionNames));

            IEnumerable <TestScenario> scenarios = await _scenariosRepositoryPolicy.ExecuteAsync(() => _scenariosRepository.GetTestScenariosBySpecificationId(specificationId));

            if (scenarios.IsNullOrEmpty())
            {
                _logger.Information($"No scenarios found for specification id '{specificationId}'");
                return;
            }

            List <string> fieldIdentifiers = new List <string>();

            foreach (DatasetSpecificationRelationshipViewModel datasetSpecificationRelationshipViewModel in relationships)
            {
                fieldIdentifiers.AddRange(currentFieldDefinitionNames.Select(m => $"dataset {datasetSpecificationRelationshipViewModel.Name} field {VisualBasicTypeGenerator.GenerateIdentifier(m)}"));
            }

            IEnumerable <TestScenario> scenariosToUpdate = scenarios.Where(m => SourceCodeHelpers.CodeContainsFullyQualifiedDatasetFieldIdentifier(m.Current.Gherkin.RemoveAllQuotes(), fieldIdentifiers));

            if (scenariosToUpdate.IsNullOrEmpty())
            {
                _logger.Information($"No test scenarios required resetting for specification id '{specificationId}'");
                return;
            }

            const string reasonForCommenting = "The dataset definition referenced by this scenario/spec has been updated and subsequently the code has been commented out";

            foreach (TestScenario scenario in scenariosToUpdate)
            {
                string gherkin = scenario.Current.Gherkin;

                string updatedGherkin = SourceCodeHelpers.CommentOutCode(gherkin, reasonForCommenting, commentSymbol: "#");

                await SaveVersion(scenario, updatedGherkin);
            }
        }