public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithAllExistingEeeOutputAmounts_ReturnsDataReturnVersionWithExistingEeeOutputReturnVersion() { var registeredProducer = A.Fake <RegisteredProducer>(); A.CallTo(() => registeredProducer.Equals(A <RegisteredProducer> ._)) .Returns(true); var eeeOutputReturnVersion = new EeeOutputReturnVersion(); eeeOutputReturnVersion.AddEeeOutputAmount( new EeeOutputAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100, registeredProducer)); var dataReturn = new DataReturn(A.Dummy <Scheme>(), A.Dummy <Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy <WeeeCollectedReturnVersion>(), A.Dummy <WeeeDeliveredReturnVersion>(), eeeOutputReturnVersion); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); A.CallTo(() => helper.DataAccess.GetRegisteredProducer(A <string> ._)) .Returns(registeredProducer); var builder = helper.Create(); await builder.AddEeeOutputAmount("PRN", "ProducerName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.Same(eeeOutputReturnVersion, result.DataReturnVersion.EeeOutputReturnVersion); }
public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithAllExistingWeeeDeliveredAmounts_ReturnsDataReturnVersionWithExistingWeeeDeliveredReturnVersion() { var aatfDeliveryLocation = new AatfDeliveryLocation("ApprovalNumber", "FacilityName"); var weeeDeliveredReturnVersion = new WeeeDeliveredReturnVersion(); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount( new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100, aatfDeliveryLocation)); var dataReturn = new DataReturn(A.Dummy <Scheme>(), A.Dummy <Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy <WeeeCollectedReturnVersion>(), weeeDeliveredReturnVersion, A.Dummy <EeeOutputReturnVersion>()); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); A.CallTo(() => helper.DataAccess.GetOrAddAatfDeliveryLocation(A <string> ._, A <string> ._)) .Returns(aatfDeliveryLocation); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("ApprovalNumber", "FacilityName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.Same(weeeDeliveredReturnVersion, result.DataReturnVersion.WeeeDeliveredReturnVersion); }
public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithAllExistingWeeeCollectedAmounts_ReturnsDataReturnVersionWithExistingWeeeCollectedReturnVersion() { var weeeCollectedReturnVersion = new WeeeCollectedReturnVersion(); weeeCollectedReturnVersion.AddWeeeCollectedAmount( new WeeeCollectedAmount(WeeeCollectedAmountSourceType.Dcf, ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100)); var dataReturn = new DataReturn(A.Dummy <Scheme>(), A.Dummy <Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, weeeCollectedReturnVersion, A.Dummy <WeeeDeliveredReturnVersion>(), A.Dummy <EeeOutputReturnVersion>()); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); await builder.AddWeeeCollectedAmount(WeeeCollectedAmountSourceType.Dcf, WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.Same(weeeCollectedReturnVersion, result.DataReturnVersion.WeeeCollectedReturnVersion); }
public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithSomeExistingEeeOutputAmounts_ReturnsDataReturnVersionWithExistingEeeOutputAmounts() { var registeredProducer1 = A.Fake <RegisteredProducer>(); A.CallTo(() => registeredProducer1.ProducerRegistrationNumber) .Returns("Producer1"); A.CallTo(() => registeredProducer1.Equals(A <RegisteredProducer> ._)) .Returns(true); var registeredProducer2 = A.Fake <RegisteredProducer>(); A.CallTo(() => registeredProducer2.ProducerRegistrationNumber) .Returns("Producer2"); A.CallTo(() => registeredProducer2.Equals(A <RegisteredProducer> ._)) .Returns(true); var eeeOutputAmount1 = new EeeOutputAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100, registeredProducer1); var eeeOutputAmount2 = new EeeOutputAmount(ObligationType.B2C, WeeeCategory.MedicalDevices, 200, registeredProducer1); var eeeOutputAmount3 = new EeeOutputAmount(ObligationType.B2C, WeeeCategory.ToysLeisureAndSports, 100, registeredProducer2); var eeeOutputAmount4 = new EeeOutputAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 150, registeredProducer2); var eeeOutputReturnVersion = new EeeOutputReturnVersion(); eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount1); eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount2); eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount3); eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount4); var dataReturn = new DataReturn(A.Dummy <Scheme>(), A.Dummy <Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy <WeeeCollectedReturnVersion>(), A.Dummy <WeeeDeliveredReturnVersion>(), eeeOutputReturnVersion); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); A.CallTo(() => helper.DataAccess.GetRegisteredProducer("Producer1")) .Returns(registeredProducer1); A.CallTo(() => helper.DataAccess.GetRegisteredProducer("Producer2")) .Returns(registeredProducer2); var builder = helper.Create(); await builder.AddEeeOutputAmount("Producer1", "ProducerName", WeeeCategory.MedicalDevices, ObligationType.B2C, 200); await builder.AddEeeOutputAmount("Producer2", "ProducerName", WeeeCategory.ToysLeisureAndSports, ObligationType.B2C, 100); var result = await builder.Build(); Assert.NotSame(eeeOutputReturnVersion, result.DataReturnVersion.EeeOutputReturnVersion); Assert.Collection(result.DataReturnVersion.EeeOutputReturnVersion.EeeOutputAmounts, r1 => Assert.Same(eeeOutputAmount2, r1), r2 => Assert.Same(eeeOutputAmount3, r2)); }
public async Task Build_NoExistingDataReturn_CreatesNewDataReturn() { var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns((DataReturn)null); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("Approval Number", "Facility name", A.Dummy<WeeeCategory>(), ObligationType.B2C, A.Dummy<decimal>()); var result = await builder.Build(); Assert.NotNull(result.DataReturnVersion.DataReturn); }
public async Task Build_NoExistingDataReturn_CreatesNewDataReturn() { var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns((DataReturn)null); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("Approval Number", "Facility name", A.Dummy <WeeeCategory>(), ObligationType.B2C, A.Dummy <decimal>()); var result = await builder.Build(); Assert.NotNull(result.DataReturnVersion.DataReturn); }
public async Task Build_ExistingDataReturn_ReturnsDataReturnVersionWithExistingDataReturn() { var dataReturn = new DataReturn(A.Dummy <Scheme>(), A.Dummy <Quarter>()); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("Approval Number", "Facility name", A.Dummy <WeeeCategory>(), ObligationType.B2C, A.Dummy <decimal>()); var result = await builder.Build(); Assert.Equal(dataReturn, result.DataReturnVersion.DataReturn); }
public async Task AddEeeOutputAmount_DoesNotCreateEeeOutputAmountDomainObject_IfValidationError() { var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.EeeValidator.Validate(A <string> ._, A <string> ._, A <WeeeCategory> ._, A <ObligationType> ._, A <decimal> ._)) .Returns(new List <ErrorData> { new ErrorData("An Error", ErrorLevel.Error) }); var builder = helper.Create(); await builder.AddEeeOutputAmount("Registration Number", A.Dummy <string>(), A.Dummy <WeeeCategory>(), ObligationType.B2C, A.Dummy <decimal>()); await builder.Build(); A.CallTo(() => helper.DataAccess.GetRegisteredProducer(A <string> ._)) .MustNotHaveHappened(); }
public async Task Build_NoExistingSubmittedDataReturnVersion_WithNoDataForNewReturn_ReturnsNullReturnVersions() { var dataReturn = new DataReturn(A.Dummy <Scheme>(), A.Dummy <Quarter>()); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); var result = await builder.Build(); Assert.Null(result.DataReturnVersion.WeeeCollectedReturnVersion); Assert.Null(result.DataReturnVersion.WeeeDeliveredReturnVersion); Assert.Null(result.DataReturnVersion.EeeOutputReturnVersion); }
public async Task AddMultipleEeeOutputAmounts_WithDuplicateValidationErrorsAndWarnings_DoesNotOutputDuplicateErrorsOrWarnings() { String reg1Prn = "Registration Number 1"; String reg2Prn = "Registration Number 2"; var reg1ErrorsAndWarnings = new List <ErrorData> { new ErrorData("Error being compared", ErrorLevel.Error), new ErrorData("Warning being compared", ErrorLevel.Warning) }; var reg2ErrorsAndWarnings = new List <ErrorData> { new ErrorData("Error being compared", ErrorLevel.Error), new ErrorData("Warning being compared", ErrorLevel.Warning) }; var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.EeeValidator.Validate(reg1Prn, A <string> ._, A <WeeeCategory> ._, A <ObligationType> ._, A <decimal> ._)) .Returns(reg1ErrorsAndWarnings); A.CallTo(() => helper.EeeValidator.Validate(reg2Prn, A <string> ._, A <WeeeCategory> ._, A <ObligationType> ._, A <decimal> ._)) .Returns(reg2ErrorsAndWarnings); // Add five records, all contain the same error and warning var builder = helper.Create(); await builder.AddEeeOutputAmount(reg1Prn, A.Dummy <string>(), A.Dummy <WeeeCategory>(), ObligationType.B2C, A.Dummy <decimal>()); await builder.AddEeeOutputAmount(reg1Prn, A.Dummy <string>(), A.Dummy <WeeeCategory>(), ObligationType.B2B, A.Dummy <decimal>()); await builder.AddEeeOutputAmount(reg1Prn, A.Dummy <string>(), A.Dummy <WeeeCategory>(), ObligationType.B2B, A.Dummy <decimal>()); await builder.AddEeeOutputAmount(reg1Prn, A.Dummy <string>(), A.Dummy <WeeeCategory>(), ObligationType.B2B, A.Dummy <decimal>()); await builder.AddEeeOutputAmount(reg2Prn, A.Dummy <string>(), A.Dummy <WeeeCategory>(), ObligationType.B2C, A.Dummy <decimal>()); // Act var result = await builder.Build(); // Assert // Only outputs one of each duplicate error/warning Assert.Equal(2, result.ErrorData.Count); }
public async Task AddWeeeCollectedAmount_CreatesWeeeCollectedAmountDomainObject() { var type = WeeeCollectedAmountSourceType.Distributor; var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns((DataReturn)null); var builder = helper.Create(); await builder.AddWeeeCollectedAmount(type, A.Dummy <WeeeCategory>(), ObligationType.B2C, A.Dummy <decimal>()); var result = await builder.Build(); Assert.Equal(1, result.DataReturnVersion.WeeeCollectedReturnVersion.WeeeCollectedAmounts.Count); Assert.Collection(result.DataReturnVersion.WeeeCollectedReturnVersion.WeeeCollectedAmounts, r => Assert.Equal(type, r.SourceType)); }
public async Task Build_ExistingLatestDataReturnVersion_WithSomeExistingWeeeDeliveredAmounts_ReturnsDataReturnVersionWithExistingWeeeDeliveredAmounts() { var weeeDeliveredAmount1 = new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100, new AatfDeliveryLocation("ApprovalNumber", "FacilityName")); var weeeDeliveredAmount2 = new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.ITAndTelecommsEquipment, 200, new AatfDeliveryLocation("ApprovalNumber", "FacilityName")); var weeeDeliveredAmount3 = new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.DisplayEquipment, 100, new AeDeliveryLocation("ApprovalNumber", "FacilityName")); var weeeDeliveredAmount4 = new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 300, new AeDeliveryLocation("ApprovalNumber", "OperatorName")); var weeeDeliveredReturnVersion = new WeeeDeliveredReturnVersion(); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount(weeeDeliveredAmount1); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount(weeeDeliveredAmount2); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount(weeeDeliveredAmount3); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount(weeeDeliveredAmount4); var dataReturn = new DataReturn(A.Dummy <Scheme>(), A.Dummy <Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy <WeeeCollectedReturnVersion>(), weeeDeliveredReturnVersion, A.Dummy <EeeOutputReturnVersion>()); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); A.CallTo(() => helper.DataAccess.GetOrAddAatfDeliveryLocation(A <string> ._, A <string> ._)) .Returns(new AatfDeliveryLocation("ApprovalNumber", "FacilityName")); A.CallTo(() => helper.DataAccess.GetOrAddAeDeliveryLocation(A <string> ._, A <string> ._)) .Returns(new AeDeliveryLocation("ApprovalNumber", "OperatorName")); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("ApprovalNumber", "FacilityName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); await builder.AddAeDeliveredAmount("ApprovalNumber", "OperatorName", WeeeCategory.LargeHouseholdAppliances, ObligationType.B2C, 300); var result = await builder.Build(); Assert.NotSame(weeeDeliveredReturnVersion, result.DataReturnVersion.WeeeDeliveredReturnVersion); Assert.Collection(result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts, r1 => Assert.Same(weeeDeliveredAmount1, r1), r2 => Assert.Same(weeeDeliveredAmount4, r2)); }
public async Task AddEeeOutputAmount_WithIfValidationErrorsandWarnings_CapturesErrorsAndWarnings() { var errorsAndWarnings = new List <ErrorData> { new ErrorData("An Error", ErrorLevel.Error), new ErrorData("A warning", ErrorLevel.Warning) }; var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.EeeValidator.Validate(A <string> ._, A <string> ._, A <WeeeCategory> ._, A <ObligationType> ._, A <decimal> ._)) .Returns(errorsAndWarnings); var builder = helper.Create(); await builder.AddEeeOutputAmount("Registration Number", A.Dummy <string>(), A.Dummy <WeeeCategory>(), ObligationType.B2C, A.Dummy <decimal>()); var result = await builder.Build(); Assert.Equal(2, result.ErrorData.Count); Assert.Contains(result.ErrorData, r => r.ErrorLevel == ErrorLevel.Warning); Assert.Contains(result.ErrorData, r => r.ErrorLevel == ErrorLevel.Error); }
public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithNoExistingWeeeDeliveredReturnVersion_ReturnsDataReturnVersionWithNewWeeeDeliveredReturnVersion() { var dataReturn = new DataReturn(A.Dummy <Scheme>(), A.Dummy <Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy <WeeeCollectedReturnVersion>(), null, A.Dummy <EeeOutputReturnVersion>()); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("ApprovalNumber", "FacilityName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.NotNull(result.DataReturnVersion.WeeeDeliveredReturnVersion); Assert.Equal(1, result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts.Count); }
public async Task AddEeeOutputAmount_CreatesEeeOutputAmountDomainObject_IfNoErrors() { var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns((DataReturn)null); A.CallTo(() => helper.EeeValidator.Validate(A <string> ._, A <string> ._, A <WeeeCategory> ._, A <ObligationType> ._, A <decimal> ._)) .Returns(new List <ErrorData>()); A.CallTo(() => helper.DataAccess.GetRegisteredProducer(A <string> ._)) .Returns(new RegisteredProducer("Registration Number", 2016, A.Dummy <Scheme>())); var builder = helper.Create(); await builder.AddEeeOutputAmount("Registration Number", A.Dummy <string>(), A.Dummy <WeeeCategory>(), ObligationType.B2C, A.Dummy <decimal>()); var result = await builder.Build(); Assert.Equal(1, result.DataReturnVersion.EeeOutputReturnVersion.EeeOutputAmounts.Count); Assert.Collection(result.DataReturnVersion.EeeOutputReturnVersion.EeeOutputAmounts, r => Assert.Equal("Registration Number", r.RegisteredProducer.ProducerRegistrationNumber)); }
public async Task AddAeDeliveredAmount_CreatesAeDeliveredAmountDomainObject() { var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns((DataReturn)null); var aeDeliveryLocation = new AeDeliveryLocation("Approval Number", "Operator name"); A.CallTo(() => helper.DataAccess.GetOrAddAeDeliveryLocation(A <string> ._, A <string> ._)) .Returns(aeDeliveryLocation); var builder = helper.Create(); await builder.AddAeDeliveredAmount("Approval Number", "Operator name", A.Dummy <WeeeCategory>(), ObligationType.B2C, A.Dummy <decimal>()); var result = await builder.Build(); Assert.Equal(1, result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts.Count); Assert.Collection(result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts, r => Assert.Equal("Approval Number", r.AeDeliveryLocation.ApprovalNumber)); Assert.Same(aeDeliveryLocation, result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts.Single().AeDeliveryLocation); }
public async Task Build_NoSubmittedDataReturnVersion_ReturnsDataReturnVersionWithNewData() { var dataReturn = new DataReturn(A.Dummy <Scheme>(), A.Dummy <Quarter>()); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); await builder.AddEeeOutputAmount("PRN", "ProducerName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); await builder.AddAatfDeliveredAmount("ApprovalNumber", "FacilityName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); await builder.AddWeeeCollectedAmount(WeeeCollectedAmountSourceType.Dcf, WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.NotNull(result.DataReturnVersion); Assert.NotNull(result.DataReturnVersion.EeeOutputReturnVersion); Assert.NotNull(result.DataReturnVersion.WeeeCollectedReturnVersion); Assert.NotNull(result.DataReturnVersion.WeeeDeliveredReturnVersion); }
public async Task AddEeeOutputAmount_DoesNotCreateEeeOutputAmountDomainObject_IfValidationError() { var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.EeeValidator.Validate(A<string>._, A<string>._, A<WeeeCategory>._, A<ObligationType>._, A<decimal>._)) .Returns(new List<ErrorData> { new ErrorData("An Error", ErrorLevel.Error) }); var builder = helper.Create(); await builder.AddEeeOutputAmount("Registration Number", A.Dummy<string>(), A.Dummy<WeeeCategory>(), ObligationType.B2C, A.Dummy<decimal>()); await builder.Build(); A.CallTo(() => helper.DataAccess.GetRegisteredProducer(A<string>._)) .MustNotHaveHappened(); }
public async Task AddEeeOutputAmount_WithIfValidationErrorsandWarnings_CapturesErrorsAndWarnings() { var errorsAndWarnings = new List<ErrorData> { new ErrorData("An Error", ErrorLevel.Error), new ErrorData("A warning", ErrorLevel.Warning) }; var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.EeeValidator.Validate(A<string>._, A<string>._, A<WeeeCategory>._, A<ObligationType>._, A<decimal>._)) .Returns(errorsAndWarnings); var builder = helper.Create(); await builder.AddEeeOutputAmount("Registration Number", A.Dummy<string>(), A.Dummy<WeeeCategory>(), ObligationType.B2C, A.Dummy<decimal>()); var result = await builder.Build(); Assert.Equal(2, result.ErrorData.Count); Assert.Contains(result.ErrorData, r => r.ErrorLevel == ErrorLevel.Warning); Assert.Contains(result.ErrorData, r => r.ErrorLevel == ErrorLevel.Error); }
public async Task AddEeeOutputAmount_CreatesEeeOutputAmountDomainObject_IfWarningsOnly() { var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns((DataReturn)null); A.CallTo(() => helper.EeeValidator.Validate(A<string>._, A<string>._, A<WeeeCategory>._, A<ObligationType>._, A<decimal>._)) .Returns(new List<ErrorData> { new ErrorData("A warning", ErrorLevel.Warning) }); A.CallTo(() => helper.DataAccess.GetRegisteredProducer(A<string>._)) .Returns(new RegisteredProducer("Registration Number", 2016, A.Dummy<Scheme>())); var builder = helper.Create(); await builder.AddEeeOutputAmount("Registration Number", A.Dummy<string>(), A.Dummy<WeeeCategory>(), ObligationType.B2C, A.Dummy<decimal>()); var result = await builder.Build(); Assert.Equal(1, result.DataReturnVersion.EeeOutputReturnVersion.EeeOutputAmounts.Count); Assert.Collection(result.DataReturnVersion.EeeOutputReturnVersion.EeeOutputAmounts, r => Assert.Equal("Registration Number", r.RegisteredProducer.ProducerRegistrationNumber)); }
public async Task AddMultipleEeeOutputAmounts_WithDuplicateValidationErrorsAndWarnings_DoesNotOutputDuplicateErrorsOrWarnings() { String reg1Prn = "Registration Number 1"; String reg2Prn = "Registration Number 2"; var reg1ErrorsAndWarnings = new List<ErrorData> { new ErrorData("Error being compared", ErrorLevel.Error), new ErrorData("Warning being compared", ErrorLevel.Warning) }; var reg2ErrorsAndWarnings = new List<ErrorData> { new ErrorData("Error being compared", ErrorLevel.Error), new ErrorData("Warning being compared", ErrorLevel.Warning) }; var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.EeeValidator.Validate(reg1Prn, A<string>._, A<WeeeCategory>._, A<ObligationType>._, A<decimal>._)) .Returns(reg1ErrorsAndWarnings); A.CallTo(() => helper.EeeValidator.Validate(reg2Prn, A<string>._, A<WeeeCategory>._, A<ObligationType>._, A<decimal>._)) .Returns(reg2ErrorsAndWarnings); // Add five records, all contain the same error and warning var builder = helper.Create(); await builder.AddEeeOutputAmount(reg1Prn, A.Dummy<string>(), A.Dummy<WeeeCategory>(), ObligationType.B2C, A.Dummy<decimal>()); await builder.AddEeeOutputAmount(reg1Prn, A.Dummy<string>(), A.Dummy<WeeeCategory>(), ObligationType.B2B, A.Dummy<decimal>()); await builder.AddEeeOutputAmount(reg1Prn, A.Dummy<string>(), A.Dummy<WeeeCategory>(), ObligationType.B2B, A.Dummy<decimal>()); await builder.AddEeeOutputAmount(reg1Prn, A.Dummy<string>(), A.Dummy<WeeeCategory>(), ObligationType.B2B, A.Dummy<decimal>()); await builder.AddEeeOutputAmount(reg2Prn, A.Dummy<string>(), A.Dummy<WeeeCategory>(), ObligationType.B2C, A.Dummy<decimal>()); // Act var result = await builder.Build(); // Assert // Only outputs one of each duplicate error/warning Assert.Equal(2, result.ErrorData.Count); }
public async Task AddAeDeliveredAmount_CreatesAeDeliveredAmountDomainObject() { var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns((DataReturn)null); var aeDeliveryLocation = new AeDeliveryLocation("Approval Number", "Operator name"); A.CallTo(() => helper.DataAccess.GetOrAddAeDeliveryLocation(A<string>._, A<string>._)) .Returns(aeDeliveryLocation); var builder = helper.Create(); await builder.AddAeDeliveredAmount("Approval Number", "Operator name", A.Dummy<WeeeCategory>(), ObligationType.B2C, A.Dummy<decimal>()); var result = await builder.Build(); Assert.Equal(1, result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts.Count); Assert.Collection(result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts, r => Assert.Equal("Approval Number", r.AeDeliveryLocation.ApprovalNumber)); Assert.Same(aeDeliveryLocation, result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts.Single().AeDeliveryLocation); }
public async Task AddWeeeCollectedAmount_CreatesWeeeCollectedAmountDomainObject() { var type = WeeeCollectedAmountSourceType.Distributor; var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns((DataReturn)null); var builder = helper.Create(); await builder.AddWeeeCollectedAmount(type, A.Dummy<WeeeCategory>(), ObligationType.B2C, A.Dummy<decimal>()); var result = await builder.Build(); Assert.Equal(1, result.DataReturnVersion.WeeeCollectedReturnVersion.WeeeCollectedAmounts.Count); Assert.Collection(result.DataReturnVersion.WeeeCollectedReturnVersion.WeeeCollectedAmounts, r => Assert.Equal(type, r.SourceType)); }
public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithSomeExistingEeeOutputAmounts_ReturnsDataReturnVersionWithExistingEeeOutputAmounts() { var registeredProducer1 = A.Fake<RegisteredProducer>(); A.CallTo(() => registeredProducer1.ProducerRegistrationNumber) .Returns("Producer1"); A.CallTo(() => registeredProducer1.Equals(A<RegisteredProducer>._)) .Returns(true); var registeredProducer2 = A.Fake<RegisteredProducer>(); A.CallTo(() => registeredProducer2.ProducerRegistrationNumber) .Returns("Producer2"); A.CallTo(() => registeredProducer2.Equals(A<RegisteredProducer>._)) .Returns(true); var eeeOutputAmount1 = new EeeOutputAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100, registeredProducer1); var eeeOutputAmount2 = new EeeOutputAmount(ObligationType.B2C, WeeeCategory.MedicalDevices, 200, registeredProducer1); var eeeOutputAmount3 = new EeeOutputAmount(ObligationType.B2C, WeeeCategory.ToysLeisureAndSports, 100, registeredProducer2); var eeeOutputAmount4 = new EeeOutputAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 150, registeredProducer2); var eeeOutputReturnVersion = new EeeOutputReturnVersion(); eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount1); eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount2); eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount3); eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount4); var dataReturn = new DataReturn(A.Dummy<Scheme>(), A.Dummy<Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy<WeeeCollectedReturnVersion>(), A.Dummy<WeeeDeliveredReturnVersion>(), eeeOutputReturnVersion); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); A.CallTo(() => helper.DataAccess.GetRegisteredProducer("Producer1")) .Returns(registeredProducer1); A.CallTo(() => helper.DataAccess.GetRegisteredProducer("Producer2")) .Returns(registeredProducer2); var builder = helper.Create(); await builder.AddEeeOutputAmount("Producer1", "ProducerName", WeeeCategory.MedicalDevices, ObligationType.B2C, 200); await builder.AddEeeOutputAmount("Producer2", "ProducerName", WeeeCategory.ToysLeisureAndSports, ObligationType.B2C, 100); var result = await builder.Build(); Assert.NotSame(eeeOutputReturnVersion, result.DataReturnVersion.EeeOutputReturnVersion); Assert.Collection(result.DataReturnVersion.EeeOutputReturnVersion.EeeOutputAmounts, r1 => Assert.Same(eeeOutputAmount2, r1), r2 => Assert.Same(eeeOutputAmount3, r2)); }
public async Task Build_NoExistingSubmittedDataReturnVersion_WithNoDataForNewReturn_ReturnsNullReturnVersions() { var dataReturn = new DataReturn(A.Dummy<Scheme>(), A.Dummy<Quarter>()); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); var result = await builder.Build(); Assert.Null(result.DataReturnVersion.WeeeCollectedReturnVersion); Assert.Null(result.DataReturnVersion.WeeeDeliveredReturnVersion); Assert.Null(result.DataReturnVersion.EeeOutputReturnVersion); }
public async Task Build_ExistingLatestDataReturnVersion_WithSomeExistingWeeeDeliveredAmounts_ReturnsDataReturnVersionWithExistingWeeeDeliveredAmounts() { var weeeDeliveredAmount1 = new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100, new AatfDeliveryLocation("ApprovalNumber", "FacilityName")); var weeeDeliveredAmount2 = new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.ITAndTelecommsEquipment, 200, new AatfDeliveryLocation("ApprovalNumber", "FacilityName")); var weeeDeliveredAmount3 = new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.DisplayEquipment, 100, new AeDeliveryLocation("ApprovalNumber", "FacilityName")); var weeeDeliveredAmount4 = new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 300, new AeDeliveryLocation("ApprovalNumber", "OperatorName")); var weeeDeliveredReturnVersion = new WeeeDeliveredReturnVersion(); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount(weeeDeliveredAmount1); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount(weeeDeliveredAmount2); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount(weeeDeliveredAmount3); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount(weeeDeliveredAmount4); var dataReturn = new DataReturn(A.Dummy<Scheme>(), A.Dummy<Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy<WeeeCollectedReturnVersion>(), weeeDeliveredReturnVersion, A.Dummy<EeeOutputReturnVersion>()); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); A.CallTo(() => helper.DataAccess.GetOrAddAatfDeliveryLocation(A<string>._, A<string>._)) .Returns(new AatfDeliveryLocation("ApprovalNumber", "FacilityName")); A.CallTo(() => helper.DataAccess.GetOrAddAeDeliveryLocation(A<string>._, A<string>._)) .Returns(new AeDeliveryLocation("ApprovalNumber", "OperatorName")); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("ApprovalNumber", "FacilityName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); await builder.AddAeDeliveredAmount("ApprovalNumber", "OperatorName", WeeeCategory.LargeHouseholdAppliances, ObligationType.B2C, 300); var result = await builder.Build(); Assert.NotSame(weeeDeliveredReturnVersion, result.DataReturnVersion.WeeeDeliveredReturnVersion); Assert.Collection(result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts, r1 => Assert.Same(weeeDeliveredAmount1, r1), r2 => Assert.Same(weeeDeliveredAmount4, r2)); }
public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithSomeExistingWeeeCollectedAmounts_ReturnsDataReturnVersionWithExistingWeeeCollectedAmounts() { var weeeCollectedAmount1 = new WeeeCollectedAmount(WeeeCollectedAmountSourceType.Dcf, ObligationType.B2C, WeeeCategory.DisplayEquipment, 100); var weeeCollectedAmount2 = new WeeeCollectedAmount(WeeeCollectedAmountSourceType.Dcf, ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100); var weeeCollectedAmount3 = new WeeeCollectedAmount(WeeeCollectedAmountSourceType.Distributor, ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100); var weeeCollectedAmount4 = new WeeeCollectedAmount(WeeeCollectedAmountSourceType.FinalHolder, ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100); var weeeCollectedReturnVersion = new WeeeCollectedReturnVersion(); weeeCollectedReturnVersion.AddWeeeCollectedAmount(weeeCollectedAmount1); weeeCollectedReturnVersion.AddWeeeCollectedAmount(weeeCollectedAmount2); weeeCollectedReturnVersion.AddWeeeCollectedAmount(weeeCollectedAmount3); weeeCollectedReturnVersion.AddWeeeCollectedAmount(weeeCollectedAmount4); var dataReturn = new DataReturn(A.Dummy<Scheme>(), A.Dummy<Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, weeeCollectedReturnVersion, A.Dummy<WeeeDeliveredReturnVersion>(), A.Dummy<EeeOutputReturnVersion>()); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); await builder.AddWeeeCollectedAmount(WeeeCollectedAmountSourceType.Dcf, WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); await builder.AddWeeeCollectedAmount(WeeeCollectedAmountSourceType.Distributor, WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.NotSame(weeeCollectedReturnVersion, result.DataReturnVersion.WeeeCollectedReturnVersion); Assert.Collection(result.DataReturnVersion.WeeeCollectedReturnVersion.WeeeCollectedAmounts, r1 => Assert.Same(weeeCollectedAmount2, r1), r2 => Assert.Same(weeeCollectedAmount3, r2)); }
public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithAllExistingEeeOutputAmounts_ReturnsDataReturnVersionWithExistingEeeOutputReturnVersion() { var registeredProducer = A.Fake<RegisteredProducer>(); A.CallTo(() => registeredProducer.Equals(A<RegisteredProducer>._)) .Returns(true); var eeeOutputReturnVersion = new EeeOutputReturnVersion(); eeeOutputReturnVersion.AddEeeOutputAmount( new EeeOutputAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100, registeredProducer)); var dataReturn = new DataReturn(A.Dummy<Scheme>(), A.Dummy<Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy<WeeeCollectedReturnVersion>(), A.Dummy<WeeeDeliveredReturnVersion>(), eeeOutputReturnVersion); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); A.CallTo(() => helper.DataAccess.GetRegisteredProducer(A<string>._)) .Returns(registeredProducer); var builder = helper.Create(); await builder.AddEeeOutputAmount("PRN", "ProducerName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.Same(eeeOutputReturnVersion, result.DataReturnVersion.EeeOutputReturnVersion); }
public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithAllExistingWeeeDeliveredAmounts_ReturnsDataReturnVersionWithExistingWeeeDeliveredReturnVersion() { var aatfDeliveryLocation = new AatfDeliveryLocation("ApprovalNumber", "FacilityName"); var weeeDeliveredReturnVersion = new WeeeDeliveredReturnVersion(); weeeDeliveredReturnVersion.AddWeeeDeliveredAmount( new WeeeDeliveredAmount(ObligationType.B2C, WeeeCategory.ConsumerEquipment, 100, aatfDeliveryLocation)); var dataReturn = new DataReturn(A.Dummy<Scheme>(), A.Dummy<Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy<WeeeCollectedReturnVersion>(), weeeDeliveredReturnVersion, A.Dummy<EeeOutputReturnVersion>()); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); A.CallTo(() => helper.DataAccess.GetOrAddAatfDeliveryLocation(A<string>._, A<string>._)) .Returns(aatfDeliveryLocation); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("ApprovalNumber", "FacilityName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.Same(weeeDeliveredReturnVersion, result.DataReturnVersion.WeeeDeliveredReturnVersion); }
public async Task Build_ExistingLatestSubmittedDataReturnVersion_WithNoExistingWeeeDeliveredReturnVersion_ReturnsDataReturnVersionWithNewWeeeDeliveredReturnVersion() { var dataReturn = new DataReturn(A.Dummy<Scheme>(), A.Dummy<Quarter>()); var dataReturnVersion = new DataReturnVersion(dataReturn, A.Dummy<WeeeCollectedReturnVersion>(), null, A.Dummy<EeeOutputReturnVersion>()); dataReturn.SetCurrentVersion(dataReturnVersion); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("ApprovalNumber", "FacilityName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.NotNull(result.DataReturnVersion.WeeeDeliveredReturnVersion); Assert.Equal(1, result.DataReturnVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts.Count); }
public async Task Build_ExistingDataReturn_ReturnsDataReturnVersionWithExistingDataReturn() { var dataReturn = new DataReturn(A.Dummy<Scheme>(), A.Dummy<Quarter>()); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); await builder.AddAatfDeliveredAmount("Approval Number", "Facility name", A.Dummy<WeeeCategory>(), ObligationType.B2C, A.Dummy<decimal>()); var result = await builder.Build(); Assert.Equal(dataReturn, result.DataReturnVersion.DataReturn); }
public async Task Build_NoSubmittedDataReturnVersion_ReturnsDataReturnVersionWithNewData() { var dataReturn = new DataReturn(A.Dummy<Scheme>(), A.Dummy<Quarter>()); var helper = new DataReturnVersionBuilderHelper(); A.CallTo(() => helper.DataAccess.FetchDataReturnOrDefault()) .Returns(dataReturn); var builder = helper.Create(); await builder.AddEeeOutputAmount("PRN", "ProducerName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); await builder.AddAatfDeliveredAmount("ApprovalNumber", "FacilityName", WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); await builder.AddWeeeCollectedAmount(WeeeCollectedAmountSourceType.Dcf, WeeeCategory.ConsumerEquipment, ObligationType.B2C, 100); var result = await builder.Build(); Assert.NotNull(result.DataReturnVersion); Assert.NotNull(result.DataReturnVersion.EeeOutputReturnVersion); Assert.NotNull(result.DataReturnVersion.WeeeCollectedReturnVersion); Assert.NotNull(result.DataReturnVersion.WeeeDeliveredReturnVersion); }