Esempio n. 1
0
        public void Evaluate_Amendment_AndProducerExistsWithDifferentChargeBand_FailAsWarning_AndIncludesProducerDetailsAndChargeBandsInErrorMessage()
        {
            string producerName       = "ProdA";
            string registrationNumber = "reg123";
            var    existingChargeBand = ChargeBand.A;

            var evaluator      = new ProducerChargeBandChangeEvaluator(producerChargeBandCalculatorChooser);
            var producerCharge = new ProducerCharge()
            {
                ChargeBandAmount = new ChargeBandAmount(Guid.Empty, ChargeBand.B, 0),
                Amount           = 0
            };
            var fakeProducer = A.Fake <ProducerSubmission>();

            ChargeBandAmount chargeBandAmount = new ChargeBandAmount(
                new Guid("0B513437-2971-4C6C-B633-75216FAB6757"),
                existingChargeBand,
                123);

            A.CallTo(() => fakeProducer.ChargeBandAmount).Returns(chargeBandAmount);
            A.CallTo(() => fakeProducer.OrganisationName).Returns(producerName);
            A.CallTo(() => fakeProducer.RegisteredProducer.ProducerRegistrationNumber).Returns(registrationNumber);
            A.CallTo(() => producerChargeBandCalculatorChooser.GetProducerChargeBand(A <schemeType> ._, A <producerType> ._)).Returns(producerCharge);
            A.CallTo(() => evaluator.QuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .Returns(fakeProducer);

            var result = evaluator.Evaluate(ChargeBand.B);

            Assert.False(result.IsValid);
            Assert.Equal(Core.Shared.ErrorLevel.Warning, result.ErrorLevel);
            Assert.Contains(producerName, result.Message);
            Assert.Contains(registrationNumber, result.Message);
            Assert.Contains(existingChargeBand.ToString(), result.Message);
            Assert.Contains(producerCharge.ChargeBandAmount.ChargeBand.ToString(), result.Message);
        }
Esempio n. 2
0
        public void Evaluate_Amendment_AndProducerExistsWithMatchingChargeBand_ReturnsPass()
        {
            var evaluator = new ProducerChargeBandChangeEvaluator(producerChargeBandCalculatorChooser);

            var fakeProducer   = A.Fake <ProducerSubmission>();
            var producerCharge = new ProducerCharge()
            {
                ChargeBandAmount = new ChargeBandAmount(Guid.Empty, ChargeBand.E, 0),
                Amount           = 0
            };

            ChargeBandAmount producerChargeBand = new ChargeBandAmount(
                new Guid("0B513437-2971-4C6C-B633-75216FAB6757"),
                ChargeBand.E,
                123);

            A.CallTo(() => fakeProducer.ChargeBandAmount).Returns(producerChargeBand);
            A.CallTo(() => evaluator.QuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .Returns(fakeProducer);
            A.CallTo(() => producerChargeBandCalculatorChooser.GetProducerChargeBand(A <schemeType> ._, A <producerType> ._)).Returns(producerCharge);

            var result = evaluator.Evaluate(ChargeBand.E);

            Assert.True(result.IsValid);
        }
Esempio n. 3
0
        public void Evaluate_Amendment_AndProducerExistsWithDifferentChargeBand_FailAsWarning()
        {
            var evaluator = new ProducerChargeBandChangeEvaluator(producerChargeBandCalculatorChooser);

            var fakeProducer   = A.Fake <ProducerSubmission>();
            var producerCharge = new ProducerCharge()
            {
                ChargeBandAmount = new ChargeBandAmount(Guid.Empty, ChargeBand.B, 0),
                Amount           = 0
            };

            ChargeBandAmount chargeBandAmount = new ChargeBandAmount(
                new Guid("0B513437-2971-4C6C-B633-75216FAB6757"),
                ChargeBand.E,
                123);

            A.CallTo(() => fakeProducer.ChargeBandAmount)
            .Returns(chargeBandAmount);
            A.CallTo(() => producerChargeBandCalculatorChooser.GetProducerChargeBand(A <schemeType> ._, A <producerType> ._)).Returns(producerCharge);
            A.CallTo(() => evaluator.QuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .Returns(fakeProducer);

            var result = evaluator.Evaluate(ChargeBand.B);

            Assert.False(result.IsValid);
            Assert.Equal(Core.Shared.ErrorLevel.Warning, result.ErrorLevel);
        }
        public void CalculateCharge_ProducerIsAmendmentInChargeBandCosting1WithPreviousTotalChargesOf25_ReturnsChargeAmountOf0()
        {
            // Arrange
            ChargeBandAmount chargeBandAmount = new ChargeBandAmount(
                new Guid("65D9ADC8-B53F-4570-A1C7-F49B0503FA6A"),
                ChargeBand.A,
                1);

            IProducerChargeCalculatorDataAccess dataAccess = A.Fake<IProducerChargeCalculatorDataAccess>();
            A.CallTo(() => dataAccess.FetchCurrentChargeBandAmount(ChargeBand.A)).Returns(chargeBandAmount);
            A.CallTo(() => dataAccess.FetchSumOfExistingCharges(A<string>._, "WEE/AB1234CD", 2016)).Returns(25);

            IProducerChargeBandCalculator bandCalculator = A.Fake<IProducerChargeBandCalculator>();
            A.CallTo(() => bandCalculator.GetProducerChargeBand(A<annualTurnoverBandType>._, A<bool>._, A<eeePlacedOnMarketBandType>._))
                .Returns(ChargeBand.A);

            ProducerChargeCalculator calculator = new ProducerChargeCalculator(dataAccess, bandCalculator);

            producerType producer = new producerType();
            producer.status = statusType.A;
            producer.registrationNo = "WEE/AB1234CD";
            
            // Act
            ProducerCharge result = calculator.CalculateCharge(A.Dummy<string>(), producer, 2016);

            // Assert
            Assert.Equal(0, result.Amount);
        }
        public void Evaluate_Amendment_AndProducerExistsWithDifferentChargeBand_FailAsWarning_AndIncludesProducerDetailsAndChargeBandsInErrorMessage()
        {
            string producerName = "ProdA";
            string registrationNumber = "reg123";
            var existingChargeBand = ChargeBand.A;
            var newChargeBand = ChargeBand.B;

            var evaluator = new ProducerChargeBandChangeEvaluator();

            var fakeProducer = A.Fake<ProducerSubmission>();

            ChargeBandAmount chargeBandAmount = new ChargeBandAmount(
                new Guid("0B513437-2971-4C6C-B633-75216FAB6757"),
                existingChargeBand,
                123);

            A.CallTo(() => fakeProducer.ChargeBandAmount).Returns(chargeBandAmount);
            A.CallTo(() => fakeProducer.OrganisationName).Returns(producerName);
            A.CallTo(() => fakeProducer.RegisteredProducer.ProducerRegistrationNumber).Returns(registrationNumber);

            A.CallTo(() => evaluator.QuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .Returns(fakeProducer);

            var result = evaluator.Evaluate(newChargeBand);

            Assert.False(result.IsValid);
            Assert.Equal(Core.Shared.ErrorLevel.Warning, result.ErrorLevel);
            Assert.Contains(producerName, result.Message);
            Assert.Contains(registrationNumber, result.Message);
            Assert.Contains(existingChargeBand.ToString(), result.Message);
            Assert.Contains(newChargeBand.ToString(), result.Message);
        }
Esempio n. 6
0
        public ProducerSubmission(
            RegisteredProducer registeredProducer,
            MemberUpload memberUpload,
            ProducerBusiness producerBusiness,
            AuthorisedRepresentative authorisedRepresentative,
            DateTime updatedDate,
            decimal?annualTurnover,
            bool vatRegistered,
            DateTime?ceaseToExist,
            string tradingName,
            EEEPlacedOnMarketBandType eeePlacedOnMarketBandType,
            SellingTechniqueType sellingTechniqueType,
            ObligationType obligationType,
            AnnualTurnOverBandType annualTurnOverBandType,
            List <BrandName> brandnames,
            List <SICCode> codes,
            ChargeBandAmount chargeBandAmount,
            decimal chargeThisUpdate,
            StatusType status)
        {
            Guard.ArgumentNotNull(() => registeredProducer, registeredProducer);
            Guard.ArgumentNotNull(() => memberUpload, memberUpload);
            Guard.ArgumentNotNull(() => producerBusiness, producerBusiness);
            Guard.ArgumentNotNull(() => chargeBandAmount, chargeBandAmount);

            if (registeredProducer.Scheme.Id != memberUpload.Scheme.Id)
            {
                string errorMessage = "A producer submission can only be associated "
                                      + "with a registered producer in the same scheme.";
                throw new InvalidOperationException(errorMessage);
            }

            if (registeredProducer.ComplianceYear != memberUpload.ComplianceYear)
            {
                string errorMessage = "A producer submission can only be associated "
                                      + "with a registered producer in the same compliance year.";
                throw new InvalidOperationException(errorMessage);
            }

            RegisteredProducer       = registeredProducer;
            ProducerBusiness         = producerBusiness;
            AuthorisedRepresentative = authorisedRepresentative;
            UpdatedDate               = updatedDate;
            AnnualTurnover            = annualTurnover;
            VATRegistered             = vatRegistered;
            CeaseToExist              = ceaseToExist;
            TradingName               = tradingName;
            EEEPlacedOnMarketBandType = eeePlacedOnMarketBandType.Value;
            SellingTechniqueType      = sellingTechniqueType.Value;
            ObligationType            = obligationType;
            AnnualTurnOverBandType    = annualTurnOverBandType.Value;
            BrandNames       = brandnames;
            SICCodes         = codes;
            MemberUpload     = memberUpload;
            ChargeBandAmount = chargeBandAmount;
            ChargeThisUpdate = chargeThisUpdate;
            StatusType       = status.Value;
        }
Esempio n. 7
0
        public async void GetCharge_GivenChargeBandAmount_ProducerChargeShouldBeReturned(ChargeBand band)
        {
            var chargeBandAmount = new ChargeBandAmount(Guid.NewGuid(), band, 1);

            A.CallTo(() => producerChargeCalculatorDataAccess.FetchCurrentChargeBandAmount(band)).Returns(chargeBandAmount);

            var result = await fetchProducerCharge.GetCharge(band);

            Assert.Equal(result.Amount, chargeBandAmount.Amount);
            Assert.Equal(result.ChargeBandAmount.ChargeBand, chargeBandAmount.ChargeBand);
        }
Esempio n. 8
0
        public async void GenerateProducerData_WithProducerCharges_ReturnsProducerWithMatchingProducerCharges()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            var chargeBoundAmound = new ChargeBandAmount(Guid.NewGuid(), ChargeBand.A, 20);

            builder.ProducerCharges[builder.TradingName] = new ProducerCharge()
            {
                Amount           = 100,
                ChargeBandAmount = chargeBoundAmound
            };

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(100, result.ChargeThisUpdate);
            Assert.Equal(20, result.ChargeBandAmount.Amount);
            Assert.Equal(chargeBoundAmound.Id, result.ChargeBandAmount.Id);
        }
        public void Evaluate_Amendment_AndProducerExistsWithMatchingChargeBand_ReturnsPass()
        {
            var evaluator = new ProducerChargeBandChangeEvaluator();

            var fakeProducer = A.Fake<ProducerSubmission>();

            ChargeBandAmount producerChargeBand = new ChargeBandAmount(
                new Guid("0B513437-2971-4C6C-B633-75216FAB6757"),
                ChargeBand.E,
                123);

            A.CallTo(() => fakeProducer.ChargeBandAmount)
                .Returns(producerChargeBand);

            A.CallTo(() => evaluator.QuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .Returns(fakeProducer);

            var result = evaluator.Evaluate(ChargeBand.E);

            Assert.True(result.IsValid);
        }
        public void Evaluate_Amendment_AndProducerExistsWithDifferentChargeBand_FailAsWarning()
        {
            var evaluator = new ProducerChargeBandChangeEvaluator();

            var fakeProducer = A.Fake<ProducerSubmission>();

            ChargeBandAmount chargeBandAmount = new ChargeBandAmount(
                new Guid("0B513437-2971-4C6C-B633-75216FAB6757"),
                ChargeBand.E,
                123);

            A.CallTo(() => fakeProducer.ChargeBandAmount)
                .Returns(chargeBandAmount);

            A.CallTo(() => evaluator.QuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .Returns(fakeProducer);

            var result = evaluator.Evaluate(ChargeBand.B);

            Assert.False(result.IsValid);
            Assert.Equal(Core.Shared.ErrorLevel.Warning, result.ErrorLevel);
        }
Esempio n. 11
0
 public void UpdateCharge(decimal value, ChargeBandAmount chargeBandAmount, int status)
 {
     this.ChargeBandAmount = chargeBandAmount;
     this.ChargeThisUpdate = value;
     this.StatusType       = status;
 }