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); }
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); }
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); }
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; }
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); }
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); }
public void UpdateCharge(decimal value, ChargeBandAmount chargeBandAmount, int status) { this.ChargeBandAmount = chargeBandAmount; this.ChargeThisUpdate = value; this.StatusType = status; }