Example #1
0
        public void Execute_GivenAssembly_EnsureDatasetHasValueSet()
        {
            //Arrange
            ILogger logger = CreateLogger();

            IFeatureToggle featureToggle = CreateFeatureToggle();

            Assembly assembly = CreateAssembly("CalculateFunding.Services.Calculator.Resources.Implementation-test-datasets-hasvalue.dll");

            AllocationModel allocationModel = new AllocationFactory(logger, featureToggle).CreateAllocationModel(assembly) as AllocationModel;

            IEnumerable <ProviderSourceDataset> sourceDatasets = CreateProviderSourceDatasetsWithHasValue();

            ProviderSummary providerSummary = CreateProviderSummary();

            //Act
            IEnumerable <CalculationResult> calcResults = allocationModel.Execute(sourceDatasets.ToList(), providerSummary);

            //Assert
            calcResults.Any().Should().BeTrue();

            dynamic instance = allocationModel.Instance as dynamic;

            Assert.IsNotNull(instance.Datasets);
            Assert.IsTrue(instance.Datasets.Providers.HasValue);
        }
Example #2
0
        public void Execute_GivenAssemblyWithCalcAggregationAndListOfOneCalcToProcess_ExecutesAndEnsuresCalcNamesWithSpaceIsNotIgnored()
        {
            //Arrange
            ILogger logger = CreateLogger();

            IFeatureToggle featureToggle = CreateFeatureToggle();

            Assembly assembly = CreateAssembly("CalculateFunding.Services.Calculator.Resources.implementation-test-with-datasets.dll");

            AllocationModel allocationModel = new AllocationFactory(logger, featureToggle).CreateAllocationModel(assembly) as AllocationModel;

            IEnumerable <ProviderSourceDataset> sourceDatasets = CreateProviderSourceDatasets();

            sourceDatasets.First().DataDefinition.Name = "PE and Sport premium";

            IEnumerable <CalculationAggregation> aggregations = new[]
            {
                new CalculationAggregation
                {
                    SpecificationId = "spec-id",
                    Values          = new[]
                    {
                        new AggregateValue
                        {
                            FieldDefinitionName = "ABCalc1112001",
                            AggregatedType      = AggregatedType.Sum,
                            Value = 2001
                        }
                    }
                },
                new CalculationAggregation
                {
                    SpecificationId = "spec-id",
                    Values          = new[]
                    {
                        new AggregateValue
                        {
                            FieldDefinitionName = "AnotherCalcToTest",
                            AggregatedType      = AggregatedType.Sum,
                            Value = 2001
                        }
                    }
                }
            };

            ProviderSummary providerSummary = CreateProviderSummary();

            //Act
            IEnumerable <CalculationResult> calcResults = allocationModel.Execute(sourceDatasets.ToList(), providerSummary, aggregations);

            //Assert
            calcResults.Any().Should().BeTrue();
            calcResults.Count().Should().Be(6);
            calcResults.First().Calculation.Name.Should().Be("AB Calc 2109");
            calcResults.ElementAt(1).Calculation.Name.Should().Be("AB Calc 2509");
        }
Example #3
0
        public void Execute_GivenAssemblyWithAggregationButFieldNotInAggregations_ReturnsNullValueRecordsException()
        {
            //Arrange
            ILogger logger = CreateLogger();

            IFeatureToggle featureToggle = CreateFeatureToggle();

            Assembly assembly = CreateAssembly("CalculateFunding.Services.Calculator.Resources.implementation-test-with-aggregates.dll");

            AllocationModel allocationModel = new AllocationFactory(logger, featureToggle).CreateAllocationModel(assembly) as AllocationModel;

            IEnumerable <ProviderSourceDataset> sourceDatasets = CreateProviderSourceDatasets();

            sourceDatasets.First().DataDefinition.Name = "PE and Sport premium";

            IEnumerable <CalculationAggregation> aggregations = new[]
            {
                new CalculationAggregation
                {
                    SpecificationId = "spec-id",
                    Values          = new[]
                    {
                        new AggregateValue
                        {
                            FieldDefinitionName = "Whatever",
                            AggregatedType      = AggregatedType.Sum,
                            Value = 9033
                        }
                    }
                }
            };

            ProviderSummary providerSummary = CreateProviderSummary();

            //Act
            IEnumerable <CalculationResult> calcResults = allocationModel.Execute(sourceDatasets.ToList(), providerSummary, aggregations);

            //Assert
            calcResults.Any().Should().BeTrue();
            calcResults.Count().Should().Be(6);
            calcResults.ElementAt(2).Value.Should().BeNull();
            calcResults.ElementAt(0).ExceptionType.Should().Be("ArgumentException");
            calcResults.ElementAt(0).ExceptionMessage.Should().Be("Datasets.ABPESportsAggregated2910003.FullTimeNumberOfPupilsInYearGroup1SoleRegistrations does not have an aggregated value");

            logger.Received(1).Error(Arg.Any <Exception>(), Arg.Is($"Failed to create result for calculation id '{calcResults.ElementAt(0).Calculation.Id}'"));
        }
Example #4
0
        public void Execute_GivenAssemblyWithAggregation_ExecutesEnsuresResult()
        {
            //Arrange
            ILogger logger = CreateLogger();

            IFeatureToggle featureToggle = CreateFeatureToggle();

            Assembly        assembly        = CreateAssembly("CalculateFunding.Services.Calculator.Resources.implementation-test-with-aggregates.dll");
            AllocationModel allocationModel = new AllocationFactory(logger, featureToggle).CreateAllocationModel(assembly) as AllocationModel;
            IEnumerable <ProviderSourceDataset> sourceDatasets = CreateProviderSourceDatasets();

            sourceDatasets.First().DataDefinition.Name = "PE and Sport premium";

            IEnumerable <CalculationAggregation> aggregations = new[]
            {
                new CalculationAggregation
                {
                    SpecificationId = "spec-id",
                    Values          = new[]
                    {
                        new AggregateValue
                        {
                            FieldDefinitionName = "Datasets.ABPESportsAggregated2910003.FullTimeNumberOfPupilsInYearGroup1SoleRegistrations",
                            AggregatedType      = AggregatedType.Sum,
                            Value = 9033
                        }
                    }
                }
            };

            ProviderSummary providerSummary = CreateProviderSummary();

            //Act
            IEnumerable <CalculationResult> calcResults = allocationModel.Execute(sourceDatasets.ToList(), providerSummary, aggregations);

            //Assert
            calcResults.Any().Should().BeTrue();
            calcResults.Count().Should().Be(6);
            calcResults.ElementAt(0).Value.Should().Be(1010M);
            calcResults.ElementAt(1).Value.Should().Be(112);
            calcResults.ElementAt(2).Value.Should().Be(0.5M);
            calcResults.ElementAt(3).Value.Should().Be(11.0M);
            calcResults.ElementAt(4).Value.Should().Be(10079319.0M);
            calcResults.ElementAt(5).Value.Should().Be(Decimal.MinValue);
        }
Example #5
0
        public void Execute_GivenAssembly_EnsuresBindingOfProvider()
        {
            //Arrange
            ILogger logger = CreateLogger();

            IFeatureToggle featureToggle = CreateFeatureToggle();

            Assembly assembly = CreateAssembly("CalculateFunding.Services.Calculator.Resources.implementation-test-with-datasets.dll");

            AllocationModel allocationModel = new AllocationFactory(logger, featureToggle).CreateAllocationModel(assembly) as AllocationModel;

            IEnumerable <ProviderSourceDataset> sourceDatasets = CreateProviderSourceDatasets();

            ProviderSummary providerSummary = CreateProviderSummary();

            //Act
            IEnumerable <CalculationResult> calcResults = allocationModel.Execute(sourceDatasets.ToList(), providerSummary);

            //Assert
            calcResults.Any().Should().BeTrue();

            dynamic instance = allocationModel.Instance as dynamic;

            Assert.IsNotNull(instance.Provider);
            Assert.AreEqual(instance.Provider.ProviderType, "Voluntary aided school");
            Assert.AreEqual(instance.Provider.ProviderSubType, "Not Applicable");
            Assert.AreEqual(instance.Provider.Authority, "authority");
            Assert.AreEqual(instance.Provider.UKPRN, "10079319");
            Assert.AreEqual(instance.Provider.UPIN, "12345");
            Assert.AreEqual(instance.Provider.URN, "100000");
            Assert.AreEqual(instance.Provider.EstablishmentNumber, "3614");
            Assert.AreEqual(instance.Provider.LACode, "201");
            Assert.AreEqual(instance.Provider.DateOpened.Date, DateTime.Now.Date);
            Assert.AreEqual(instance.Provider.CrmAccountId, "99999999999");
            Assert.AreEqual(instance.Provider.Status, "Active");
            Assert.AreEqual(instance.Provider.PhaseOfEducation, "Primary");
            Assert.AreEqual(instance.Provider.LegalName, "I AM LEGAL");
            Assert.AreEqual(instance.Provider.DfeEstablishmentNumber, "77777");
            Assert.AreEqual(instance.Provider.NavVendorNo, "");
            Assert.IsNull(instance.Provider.DateClosed);
        }
Example #6
0
        public void Execute_GivenAssembly_Executes()
        {
            //Arrange
            ILogger logger = CreateLogger();

            IFeatureToggle featureToggle = CreateFeatureToggle();

            Assembly assembly = CreateAssembly("CalculateFunding.Services.Calculator.Resources.implementation-test-assembly.dll");

            AllocationModel allocationModel = new AllocationFactory(logger, featureToggle).CreateAllocationModel(assembly) as AllocationModel;

            IEnumerable <ProviderSourceDataset> sourceDatasets = CreateProviderSourceDatasets();

            ProviderSummary providerSummary = CreateProviderSummary();

            //Act
            IEnumerable <CalculationResult> calcResults = allocationModel.Execute(sourceDatasets.ToList(), providerSummary);

            //Assert
            calcResults.Any().Should().BeTrue();
            calcResults.Count().Should().Be(2);
            AssertCalculationResult(calcResults, "AB Test Calc 1610-001", 19M);
            AssertCalculationResult(calcResults, "AB Test Calc 1610-002", 2000);
        }
Example #7
0
        public void Execute_GivenAssembly_EnsuresBindingOfDataset()
        {
            //Arrange
            ILogger logger = CreateLogger();

            IFeatureToggle featureToggle = CreateFeatureToggle();

            Assembly assembly = CreateAssembly("CalculateFunding.Services.Calculator.Resources.implementation-test-with-datasets.dll");

            AllocationModel allocationModel = new AllocationFactory(logger, featureToggle).CreateAllocationModel(assembly) as AllocationModel;

            IEnumerable <ProviderSourceDataset> sourceDatasets = CreateProviderSourceDatasets();

            ProviderSummary providerSummary = CreateProviderSummary();

            //Act
            IEnumerable <CalculationResult> calcResults = allocationModel.Execute(sourceDatasets.ToList(), providerSummary);

            //Assert
            calcResults.Any().Should().BeTrue();

            dynamic instance = allocationModel.Instance as dynamic;

            Assert.IsNotNull(instance.Datasets);

            Assert.AreEqual(instance.Datasets.ABPE2109001.URN, "100000");
            Assert.AreEqual(instance.Datasets.ABPE2109001.LocalAuthority, "201");
            Assert.AreEqual(instance.Datasets.ABPE2109001.EstablishmentNumber, "3614");
            Assert.AreEqual(instance.Datasets.ABPE2109001.LAEstab, "2013614");
            Assert.AreEqual(instance.Datasets.ABPE2109001.SchoolType, "Voluntary aided school");
            Assert.AreEqual(instance.Datasets.ABPE2109001.AcademyType, "Not Applicable");
            Assert.AreEqual(instance.Datasets.ABPE2109001.PhaseOfEducation, "Primary");
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup1SoleRegistrations, 10);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup2SoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup3SoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup4SoleRegistrations, 11);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup5SoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup6SoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroupNotFollowedAge5To10SoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup1SoleRegistrations, 59);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup2SoleRegistrations, 30);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup3SoleRegistrations, 31);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup4SoleRegistrations, 30);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup5SoleRegistrations, 30);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup6SoleRegistrations, 29);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroupNotFollowedAge5To10SoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup1DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup2DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup3DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup4DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup5DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroup6DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimeNumberOfPupilsInYearGroupNotFollowedAge5To10DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup1DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup2DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup3DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup4DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup5DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroup6DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimeNumberOfPupilsInYearGroupNotFollowedAge5To10DualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged5HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged6HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged6HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged8HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged9HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged10HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged5HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged6HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged7HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged8HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged9HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged10HospitalSchoolsSoleRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged5HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged6HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged7HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged8HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged9HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.PartTimePupilsAged10HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged5HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged6HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged7HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged8HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged9HosptialSchoolsDualRegistrations, 0);
            Assert.AreEqual(instance.Datasets.ABPE2109001.FullTimePupilsAged10HosptialSchoolsDualRegistrations, 0);
        }