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 SpgProducerEeeDataHistoryCsvTests_EEEDataHistory_OmitsDataReturnsNotChanged() { using (DatabaseWrapper db = new DatabaseWrapper()) { //Arrange ModelHelper helper = new ModelHelper(db.Model); var scheme1 = helper.CreateScheme(); scheme1.ApprovalNumber = "WEE/TE3334ST/SCH"; var memberUpload1 = helper.CreateSubmittedMemberUpload(scheme1); memberUpload1.ComplianceYear = 2000; var producer1 = helper.CreateProducerAsCompany(memberUpload1, "PRN897"); producer1.ObligationType = "B2B"; // Create a submission EeeOutputAmount eeeOutputAmount1 = helper.CreateEeeOutputAmount(producer1.RegisteredProducer, "B2B", 1, 100); EeeOutputReturnVersion eeeOutputReturnVersion1 = helper.CreateEeeOutputReturnVersion(); helper.AddEeeOutputAmount(eeeOutputReturnVersion1, eeeOutputAmount1); var dataReturnVersion1 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion1.SubmittedDate = new DateTime(2015, 1, 1); dataReturnVersion1.EeeOutputReturnVersion = eeeOutputReturnVersion1; // Create two additional submissions, both having the same data // but are different from the first EeeOutputAmount eeeOutputAmount2 = helper.CreateEeeOutputAmount(producer1.RegisteredProducer, "B2B", 1, 200); EeeOutputReturnVersion eeeOutputReturnVersion2 = helper.CreateEeeOutputReturnVersion(); helper.AddEeeOutputAmount(eeeOutputReturnVersion2, eeeOutputAmount2); var dataReturnVersion2 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion2.SubmittedDate = new DateTime(2015, 1, 2); var dataReturnVersion3 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion3.SubmittedDate = new DateTime(2015, 1, 3); dataReturnVersion2.EeeOutputReturnVersion = eeeOutputReturnVersion2; dataReturnVersion3.EeeOutputReturnVersion = eeeOutputReturnVersion2; db.Model.SaveChanges(); // Act var results = await db.StoredProcedures.SpgProducerEeeHistoryCsvData("PRN897"); //Assert Assert.NotNull(results); //Only shows entries for tonnage value changes and ignores the ones with no change. Assert.Equal(2, results.ProducerReturnsHistoryData.Count); Assert.Collection(results.ProducerReturnsHistoryData, (r1) => Assert.Equal(new DateTime(2015, 1, 1), r1.SubmittedDate), (r2) => Assert.Equal(new DateTime(2015, 1, 2), r2.SubmittedDate)); Assert.Collection(results.ProducerReturnsHistoryData, (r1) => Assert.Equal("No", r1.LatestData), (r2) => Assert.Equal("Yes", r2.LatestData)); } }
public void AddDataReturnVersion_WithDataReturnVersionForAnotherScheme_ThrowsInvalidOperationException() { // Arrange var scheme1 = A.Fake <Scheme>(); A.CallTo(() => scheme1.ApprovalNumber) .Returns("WEE/SC1000SCH"); var scheme2 = A.Fake <Scheme>(); A.CallTo(() => scheme2.ApprovalNumber) .Returns("WEE/SC2000SCH"); var eeeOutputReturnVersion = new EeeOutputReturnVersion(); var registeredProducer = new RegisteredProducer("PRN", 2016, scheme2); eeeOutputReturnVersion.AddEeeOutputAmount( new EeeOutputAmount(ObligationType.B2C, WeeeCategory.AutomaticDispensers, 100, registeredProducer)); var dataReturn = new DataReturn(scheme1, new Quarter(2016, QuarterType.Q2)); var dataReturnVersion = new DataReturnVersion(dataReturn); // Act, Assert Assert.Throws <InvalidOperationException>(() => eeeOutputReturnVersion.AddDataReturnVersion(dataReturnVersion)); }
public void AddEeeOutputAmount_WithNullParameter_ThrowsArgumentNullException() { // Arrange var eeeOutputReturnVersion = new EeeOutputReturnVersion(); // Act, Assert Assert.Throws <ArgumentNullException>(() => eeeOutputReturnVersion.AddEeeOutputAmount(null)); }
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 void AddEeeOutputAmount_AddsToEeeOutputAmounts() { // Arrange var eeeOutputReturnVersion = new EeeOutputReturnVersion(); var registeredProducer = A.Fake <RegisteredProducer>(); A.CallTo(() => registeredProducer.Equals(A <RegisteredProducer> ._)) .Returns(true); var eeeOutputAmount = new EeeOutputAmount(ObligationType.B2B, A.Dummy <WeeeCategory>(), A.Dummy <decimal>(), registeredProducer); // Act eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount); // Assert Assert.Contains(eeeOutputAmount, eeeOutputReturnVersion.EeeOutputAmounts); }
private EeeOutputReturnVersion BuildEeeOutputReturnVersion(DataReturnVersion submittedDataReturnVersion) { EeeOutputReturnVersion eeeOutputReturnVersion = null; // Unchanged data from the latest submitted data return version can be reused. Check whether all or some of them can be reused. if (eeeOutputAmounts.Any()) { bool reuseLatestEeeOutputReturnVersion = false; ICollection <EeeOutputAmount> mergedEeeOutputAmounts; if (submittedDataReturnVersion != null && submittedDataReturnVersion.EeeOutputReturnVersion != null) { reuseLatestEeeOutputReturnVersion = ReuseEqualItems(eeeOutputAmounts, submittedDataReturnVersion.EeeOutputReturnVersion.EeeOutputAmounts, out mergedEeeOutputAmounts); } else { mergedEeeOutputAmounts = eeeOutputAmounts; } if (reuseLatestEeeOutputReturnVersion) { eeeOutputReturnVersion = submittedDataReturnVersion.EeeOutputReturnVersion; } else { eeeOutputReturnVersion = new EeeOutputReturnVersion(); foreach (var eeeOutputAmount in mergedEeeOutputAmounts) { eeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount); } } } return(eeeOutputReturnVersion); }
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_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); }