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 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 SpgProducerEeeDataHistoryCsvTests_EEEDataHistory_ReturnsOneRowForChangedDataEvenIfOneCategoryChanged() { 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"; var dataReturnVersion1 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion1.SubmittedDate = new DateTime(2015, 1, 1); EeeOutputAmount eeeOutputAmount = helper.CreateEeeOutputAmount(producer1.RegisteredProducer, "B2B", 2, 200); helper.AddEeeOutputAmount(dataReturnVersion1, eeeOutputAmount); helper.CreateEeeOutputAmount(dataReturnVersion1, producer1.RegisteredProducer, "B2B", 1, 100); // Second upload with only category 1 changed, category 2 remains unchanged var dataReturnVersion2 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion2.SubmittedDate = new DateTime(2015, 1, 2); helper.AddEeeOutputAmount(dataReturnVersion2, eeeOutputAmount); helper.CreateEeeOutputAmount(dataReturnVersion2, producer1.RegisteredProducer, "B2B", 1, 300); 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)); Assert.Collection(results.ProducerReturnsHistoryData, (r1) => Assert.Equal(100, r1.Cat1B2B), (r2) => Assert.Equal(300, r2.Cat1B2B)); Assert.Collection(results.ProducerReturnsHistoryData, (r1) => Assert.Equal(200, r1.Cat2B2B), (r2) => Assert.Equal(200, r2.Cat2B2B)); } }
public async Task FetchResultsAsync_WithSeveralOutputAmounts_ReturnsSumOfAmounts() { using (Weee.Tests.Core.Model.DatabaseWrapper wrapper = new Weee.Tests.Core.Model.DatabaseWrapper()) { // Arrange Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme = new Scheme(organisation); RegisteredProducer registeredProducer1 = new RegisteredProducer("WEE/AA1111AA", 2099, scheme); RegisteredProducer registeredProducer2 = new RegisteredProducer("WEE/BB2222BB", 2099, scheme); Quarter quarter = new Quarter(2099, QuarterType.Q1); DataReturn dataReturn = new DataReturn(scheme, quarter); DataReturnVersion version = new DataReturnVersion(dataReturn); EeeOutputAmount amount1 = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 100, registeredProducer1); version.EeeOutputReturnVersion.AddEeeOutputAmount(amount1); EeeOutputAmount amount2 = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 200, registeredProducer2); version.EeeOutputReturnVersion.AddEeeOutputAmount(amount2); wrapper.WeeeContext.DataReturns.Add(dataReturn); await wrapper.WeeeContext.SaveChangesAsync(); dataReturn.SetCurrentVersion(version); await wrapper.WeeeContext.SaveChangesAsync(); // Act FetchSummaryCsvDataAccess dataAccess = new FetchSummaryCsvDataAccess(wrapper.WeeeContext); List <DataReturnSummaryCsvData> results = await dataAccess.FetchResultsAsync(scheme.Id, 2099); // Assert Assert.NotNull(results); Assert.Equal(1, results.Count); DataReturnSummaryCsvData result = results[0]; Assert.NotNull(result); Assert.Equal(300, result.Category1); } }
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); }
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 HandleAsync_WithDataReturnWithEeeButNotSubmitted_SetsHasSubmittedEEEToFalse() { // Arrange IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights(); Organisation organisation = Organisation.CreateSoleTrader("Trading Name"); Scheme scheme = new Scheme(organisation); RegisteredProducer registeredProducer = new RegisteredProducer("WEE/AA1111AA", 2016, scheme); Guid registeredProducerId = new Guid("75B6B4E7-BA92-477D-A6CA-C43C8C0E9823"); typeof(Entity).GetProperty("Id").SetValue(registeredProducer, registeredProducerId); MemberUpload memberUpload = new MemberUpload( A.Dummy<Guid>(), "data", new List<MemberUploadError>(), 0, 2016, scheme, "file.xml", "UserID"); ProducerSubmission producerSubmission = new ProducerSubmission( registeredProducer, memberUpload, A.Dummy<ProducerBusiness>(), A.Dummy<AuthorisedRepresentative>(), A.Dummy<DateTime>(), A.Dummy<decimal?>(), A.Dummy<bool>(), A.Dummy<DateTime?>(), A.Dummy<string>(), A.Dummy<EEEPlacedOnMarketBandType>(), A.Dummy<SellingTechniqueType>(), A.Dummy<ObligationType>(), A.Dummy<AnnualTurnOverBandType>(), A.Dummy<List<BrandName>>(), A.Dummy<List<SICCode>>(), A.Dummy<ChargeBandAmount>(), A.Dummy<decimal>()); registeredProducer.SetCurrentSubmission(producerSubmission); DataReturn dataReturn = new DataReturn(scheme, new Quarter(2016, QuarterType.Q4)); DataReturnVersion dataReturnVersion = new DataReturnVersion(dataReturn); EeeOutputAmount eeeOutputAmount = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.AutomaticDispensers, 123.45m, registeredProducer); dataReturnVersion.EeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount); IGetProducerDetailsByRegisteredProducerIdDataAccess dataAccess = A.Fake<IGetProducerDetailsByRegisteredProducerIdDataAccess>(); A.CallTo(() => dataAccess.Fetch(registeredProducerId)).Returns(registeredProducer); A.CallTo(() => dataAccess.FetchDataReturns(scheme, 2016)).Returns(new List<DataReturn>() { dataReturn }); GetProducerDetailsByRegisteredProducerIdHandler handler = new GetProducerDetailsByRegisteredProducerIdHandler(dataAccess, authorization); // Act GetProducerDetailsByRegisteredProducerId request = new GetProducerDetailsByRegisteredProducerId(registeredProducerId); ProducerDetailsScheme result = await handler.HandleAsync(request); // Assert Assert.Equal(false, result.HasSubmittedEEE); }
public async Task SpgProducerEeeDataHistoryCsvTests_EEEDataHistory_SchemeRemovesProducerAfterFirstUploadAndAddLaterAgainInThirdUpload_Returns3RowEvenIfDataIsSame() { 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"; var producer2 = helper.CreateProducerAsCompany(memberUpload1, "PRN123"); producer2.ObligationType = "B2B"; EeeOutputAmount eeeOutputAmount1 = helper.CreateEeeOutputAmount(producer1.RegisteredProducer, "B2B", 1, 100); EeeOutputAmount eeeOutputAmount2 = helper.CreateEeeOutputAmount(producer2.RegisteredProducer, "B2B", 1, 200); // Create a data return version with submission for 2 producers var dataReturnVersion1 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion1.SubmittedDate = new DateTime(2015, 1, 1); helper.AddEeeOutputAmount(dataReturnVersion1, eeeOutputAmount1); helper.AddEeeOutputAmount(dataReturnVersion1, eeeOutputAmount2); // Second data return version with producer 1 removed var dataReturnVersion2 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion2.SubmittedDate = new DateTime(2015, 1, 2); helper.AddEeeOutputAmount(dataReturnVersion2, eeeOutputAmount2); // Third data return version with producer 1 added back again var dataReturnVersion3 = helper.CreateDataReturnVersion(scheme1, 2000, 1); dataReturnVersion3.SubmittedDate = new DateTime(2015, 1, 3); helper.CreateEeeOutputAmount(dataReturnVersion3, producer1.RegisteredProducer, "B2B", 1, 100); db.Model.SaveChanges(); // Act var results = await db.StoredProcedures.SpgProducerEeeHistoryCsvData("PRN897"); //Assert Assert.NotNull(results); 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, 3), r2.SubmittedDate)); Assert.Equal(1, results.ProducerRemovedFromReturnsData.Count); Assert.Collection(results.ProducerRemovedFromReturnsData, (r1) => Assert.Equal(new DateTime(2015, 1, 2), r1.SubmittedDate)); Assert.Collection(results.ProducerRemovedFromReturnsData, (r1) => Assert.Equal("WEE/TE3334ST/SCH", r1.ApprovalNumber)); Assert.Collection(results.ProducerRemovedFromReturnsData, (r1) => Assert.Equal(1, r1.Quarter)); } }
public async Task FetchResultsAsync_WithOneAmountOfEachTypeAndSourceAndObligationType_ReturnsResultForEachAmountWithCorrectOrdering() { using (Weee.Tests.Core.Model.DatabaseWrapper wrapper = new Weee.Tests.Core.Model.DatabaseWrapper()) { // Arrange Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme = new Scheme(organisation); RegisteredProducer registeredProducer1 = new RegisteredProducer("WEE/AA9365AA", 2099, scheme); Quarter quarter = new Quarter(2099, QuarterType.Q1); DataReturn dataReturn = new DataReturn(scheme, quarter); DataReturnVersion version = new DataReturnVersion(dataReturn); WeeeCollectedAmount amountCollectedDcfB2C = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Dcf, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountCollectedDcfB2C); WeeeCollectedAmount amountCollectedDistributor = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Distributor, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountCollectedDistributor); WeeeCollectedAmount amountCollectedFinalHolder = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.FinalHolder, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountCollectedFinalHolder); WeeeDeliveredAmount amountDeliveredAatfB2C = new WeeeDeliveredAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AatfDeliveryLocation("WEE/AA6845AA/ATF", string.Empty)); version.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amountDeliveredAatfB2C); WeeeDeliveredAmount amountDeliveredAeB2C = new WeeeDeliveredAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AeDeliveryLocation("WEE/AA2658AA/AE", string.Empty)); version.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amountDeliveredAeB2C); EeeOutputAmount amountOutputB2C = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m, registeredProducer1); version.EeeOutputReturnVersion.AddEeeOutputAmount(amountOutputB2C); WeeeCollectedAmount amountCollectedDcfB2B = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Dcf, ObligationType.B2B, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountCollectedDcfB2B); WeeeDeliveredAmount amountDeliveredAatfB2B = new WeeeDeliveredAmount( ObligationType.B2B, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AatfDeliveryLocation("WEE/AA7445AA/ATF", string.Empty)); version.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amountDeliveredAatfB2B); WeeeDeliveredAmount amountDeliveredAeB2B = new WeeeDeliveredAmount( ObligationType.B2B, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AeDeliveryLocation("WEE/AA3658AA/AE", string.Empty)); version.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amountDeliveredAeB2B); EeeOutputAmount amountOutputB2B = new EeeOutputAmount( ObligationType.B2B, WeeeCategory.LargeHouseholdAppliances, 123.456m, registeredProducer1); version.EeeOutputReturnVersion.AddEeeOutputAmount(amountOutputB2B); wrapper.WeeeContext.DataReturns.Add(dataReturn); await wrapper.WeeeContext.SaveChangesAsync(); dataReturn.SetCurrentVersion(version); await wrapper.WeeeContext.SaveChangesAsync(); // Act FetchSummaryCsvDataAccess dataAccess = new FetchSummaryCsvDataAccess(wrapper.WeeeContext); List <DataReturnSummaryCsvData> results = await dataAccess.FetchResultsAsync(scheme.Id, 2099); // Assert Assert.NotNull(results); Assert.Equal(10, results.Count); Assert.Collection(results, r => { Assert.Equal(0, r.Type); Assert.Equal(0, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(0, r.Type); Assert.Equal(0, r.Source); Assert.Equal("B2B", r.ObligationType); }, r => { Assert.Equal(0, r.Type); Assert.Equal(1, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(0, r.Type); Assert.Equal(2, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(1, r.Type); Assert.Equal(0, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(1, r.Type); Assert.Equal(0, r.Source); Assert.Equal("B2B", r.ObligationType); }, r => { Assert.Equal(1, r.Type); Assert.Equal(1, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(1, r.Type); Assert.Equal(1, r.Source); Assert.Equal("B2B", r.ObligationType); }, r => { Assert.Equal(2, r.Type); Assert.Equal(null, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(2, r.Type); Assert.Equal(null, r.Source); Assert.Equal("B2B", r.ObligationType); }); } }
public async Task FetchResultsAsync_WithOneAmountOfEachTypeAndSourceAndObligationType_ReturnsResultForEachAmountWithCorrectOrdering() { using (Weee.Tests.Core.Model.DatabaseWrapper wrapper = new Weee.Tests.Core.Model.DatabaseWrapper()) { // Arrange Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme = new Scheme(organisation); RegisteredProducer registeredProducer1 = new RegisteredProducer("WEE/AA9365AA", 2099, scheme); Quarter quarter = new Quarter(2099, QuarterType.Q1); DataReturn dataReturn = new DataReturn(scheme, quarter); DataReturnVersion version = new DataReturnVersion(dataReturn); WeeeCollectedAmount amountCollectedDcfB2C = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Dcf, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountCollectedDcfB2C); WeeeCollectedAmount amountCollectedDistributor = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Distributor, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountCollectedDistributor); WeeeCollectedAmount amountCollectedFinalHolder = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.FinalHolder, ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountCollectedFinalHolder); WeeeDeliveredAmount amountDeliveredAatfB2C = new WeeeDeliveredAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AatfDeliveryLocation("WEE/AA6845AA/ATF", string.Empty)); version.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amountDeliveredAatfB2C); WeeeDeliveredAmount amountDeliveredAeB2C = new WeeeDeliveredAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AeDeliveryLocation("WEE/AA2658AA/AE", string.Empty)); version.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amountDeliveredAeB2C); EeeOutputAmount amountOutputB2C = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 123.456m, registeredProducer1); version.EeeOutputReturnVersion.AddEeeOutputAmount(amountOutputB2C); WeeeCollectedAmount amountCollectedDcfB2B = new WeeeCollectedAmount( WeeeCollectedAmountSourceType.Dcf, ObligationType.B2B, WeeeCategory.LargeHouseholdAppliances, 123.456m); version.WeeeCollectedReturnVersion.AddWeeeCollectedAmount(amountCollectedDcfB2B); WeeeDeliveredAmount amountDeliveredAatfB2B = new WeeeDeliveredAmount( ObligationType.B2B, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AatfDeliveryLocation("WEE/AA7445AA/ATF", string.Empty)); version.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amountDeliveredAatfB2B); WeeeDeliveredAmount amountDeliveredAeB2B = new WeeeDeliveredAmount( ObligationType.B2B, WeeeCategory.LargeHouseholdAppliances, 123.456m, new AeDeliveryLocation("WEE/AA3658AA/AE", string.Empty)); version.WeeeDeliveredReturnVersion.AddWeeeDeliveredAmount(amountDeliveredAeB2B); EeeOutputAmount amountOutputB2B = new EeeOutputAmount( ObligationType.B2B, WeeeCategory.LargeHouseholdAppliances, 123.456m, registeredProducer1); version.EeeOutputReturnVersion.AddEeeOutputAmount(amountOutputB2B); wrapper.WeeeContext.DataReturns.Add(dataReturn); await wrapper.WeeeContext.SaveChangesAsync(); dataReturn.SetCurrentVersion(version); await wrapper.WeeeContext.SaveChangesAsync(); // Act FetchSummaryCsvDataAccess dataAccess = new FetchSummaryCsvDataAccess(wrapper.WeeeContext); List<DataReturnSummaryCsvData> results = await dataAccess.FetchResultsAsync(scheme.Id, 2099); // Assert Assert.NotNull(results); Assert.Equal(10, results.Count); Assert.Collection(results, r => { Assert.Equal(0, r.Type); Assert.Equal(0, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(0, r.Type); Assert.Equal(0, r.Source); Assert.Equal("B2B", r.ObligationType); }, r => { Assert.Equal(0, r.Type); Assert.Equal(1, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(0, r.Type); Assert.Equal(2, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(1, r.Type); Assert.Equal(0, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(1, r.Type); Assert.Equal(0, r.Source); Assert.Equal("B2B", r.ObligationType); }, r => { Assert.Equal(1, r.Type); Assert.Equal(1, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(1, r.Type); Assert.Equal(1, r.Source); Assert.Equal("B2B", r.ObligationType); }, r => { Assert.Equal(2, r.Type); Assert.Equal(null, r.Source); Assert.Equal("B2C", r.ObligationType); }, r => { Assert.Equal(2, r.Type); Assert.Equal(null, r.Source); Assert.Equal("B2B", r.ObligationType); }); } }
public async Task FetchResultsAsync_WithSeveralOutputAmounts_ReturnsSumOfAmounts() { using (Weee.Tests.Core.Model.DatabaseWrapper wrapper = new Weee.Tests.Core.Model.DatabaseWrapper()) { // Arrange Organisation organisation = Organisation.CreateSoleTrader("Test Organisation"); Scheme scheme = new Scheme(organisation); RegisteredProducer registeredProducer1 = new RegisteredProducer("WEE/AA1111AA", 2099, scheme); RegisteredProducer registeredProducer2 = new RegisteredProducer("WEE/BB2222BB", 2099, scheme); Quarter quarter = new Quarter(2099, QuarterType.Q1); DataReturn dataReturn = new DataReturn(scheme, quarter); DataReturnVersion version = new DataReturnVersion(dataReturn); EeeOutputAmount amount1 = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 100, registeredProducer1); version.EeeOutputReturnVersion.AddEeeOutputAmount(amount1); EeeOutputAmount amount2 = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.LargeHouseholdAppliances, 200, registeredProducer2); version.EeeOutputReturnVersion.AddEeeOutputAmount(amount2); wrapper.WeeeContext.DataReturns.Add(dataReturn); await wrapper.WeeeContext.SaveChangesAsync(); dataReturn.SetCurrentVersion(version); await wrapper.WeeeContext.SaveChangesAsync(); // Act FetchSummaryCsvDataAccess dataAccess = new FetchSummaryCsvDataAccess(wrapper.WeeeContext); List<DataReturnSummaryCsvData> results = await dataAccess.FetchResultsAsync(scheme.Id, 2099); // Assert Assert.NotNull(results); Assert.Equal(1, results.Count); DataReturnSummaryCsvData result = results[0]; Assert.NotNull(result); Assert.Equal(300, result.Category1); } }
public async Task HandleAsync_WithDataReturnWithEeeButNotSubmitted_SetsHasSubmittedEEEToFalse() { // Arrange IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights(); Organisation organisation = Organisation.CreateSoleTrader("Trading Name"); Scheme scheme = new Scheme(organisation); RegisteredProducer registeredProducer = new RegisteredProducer("WEE/AA1111AA", 2016, scheme); Guid registeredProducerId = new Guid("75B6B4E7-BA92-477D-A6CA-C43C8C0E9823"); typeof(Entity).GetProperty("Id").SetValue(registeredProducer, registeredProducerId); MemberUpload memberUpload = new MemberUpload( A.Dummy <Guid>(), "data", new List <MemberUploadError>(), 0, 2016, scheme, "file.xml", "UserID"); ProducerSubmission producerSubmission = new ProducerSubmission( registeredProducer, memberUpload, A.Dummy <ProducerBusiness>(), A.Dummy <AuthorisedRepresentative>(), A.Dummy <DateTime>(), A.Dummy <decimal?>(), A.Dummy <bool>(), A.Dummy <DateTime?>(), A.Dummy <string>(), A.Dummy <EEEPlacedOnMarketBandType>(), A.Dummy <SellingTechniqueType>(), A.Dummy <ObligationType>(), A.Dummy <AnnualTurnOverBandType>(), A.Dummy <List <BrandName> >(), A.Dummy <List <SICCode> >(), A.Dummy <ChargeBandAmount>(), A.Dummy <decimal>(), A.Dummy <StatusType>()); registeredProducer.SetCurrentSubmission(producerSubmission); DataReturn dataReturn = new DataReturn(scheme, new Quarter(2016, QuarterType.Q4)); DataReturnVersion dataReturnVersion = new DataReturnVersion(dataReturn); EeeOutputAmount eeeOutputAmount = new EeeOutputAmount( ObligationType.B2C, WeeeCategory.AutomaticDispensers, 123.45m, registeredProducer); dataReturnVersion.EeeOutputReturnVersion.AddEeeOutputAmount(eeeOutputAmount); IGetProducerDetailsByRegisteredProducerIdDataAccess dataAccess = A.Fake <IGetProducerDetailsByRegisteredProducerIdDataAccess>(); A.CallTo(() => dataAccess.Fetch(registeredProducerId)).Returns(registeredProducer); A.CallTo(() => dataAccess.FetchDataReturns(scheme, 2016)).Returns(new List <DataReturn>() { dataReturn }); GetProducerDetailsByRegisteredProducerIdHandler handler = new GetProducerDetailsByRegisteredProducerIdHandler(dataAccess, authorization); // Act GetProducerDetailsByRegisteredProducerId request = new GetProducerDetailsByRegisteredProducerId(registeredProducerId); ProducerDetailsScheme result = await handler.HandleAsync(request); // Assert Assert.Equal(false, result.HasSubmittedEEE); }