Exemple #1
0
        public async Task Execute_HappyPath_ReturnsProducerEeeDataHistory()
        {
            using (DatabaseWrapper db = new DatabaseWrapper())
            {
                //Arrange
                ModelHelper helper  = new ModelHelper(db.Model);
                var         scheme1 = helper.CreateScheme();
                scheme1.ApprovalNumber = "WEE/TE0000ST/SCH";
                var memberUpload1 = helper.CreateSubmittedMemberUpload(scheme1);
                memberUpload1.ComplianceYear = 2000;

                var producer1 = helper.CreateProducerAsCompany(memberUpload1, "PRN123");
                producer1.ObligationType = "B2B";
                var dataReturnVersion1 = helper.CreateDataReturnVersion(scheme1, 2000, 1);
                dataReturnVersion1.SubmittedDate = new DateTime(2015, 1, 6);
                var dataReturnVersion2 = helper.CreateDataReturnVersion(scheme1, 2000, 2);
                dataReturnVersion2.SubmittedDate = new DateTime(2015, 1, 8);

                helper.CreateEeeOutputAmount(dataReturnVersion1, producer1.RegisteredProducer, "B2B", 1, 100);
                helper.CreateEeeOutputAmount(dataReturnVersion2, producer1.RegisteredProducer, "B2B", 2, 200);

                var scheme2 = helper.CreateScheme();
                scheme2.ApprovalNumber = "WEE/TE0000S1/SCH";
                var memberUpload2 = helper.CreateSubmittedMemberUpload(scheme2);
                memberUpload2.ComplianceYear = 2000;

                var producer2 = helper.CreateProducerAsCompany(memberUpload2, "PRN123");
                producer2.ObligationType = "B2C";
                var dataReturnVersion3 = helper.CreateDataReturnVersion(scheme2, 2000, 1);
                dataReturnVersion1.SubmittedDate = new DateTime(2015, 1, 9);
                var dataReturnVersion4 = helper.CreateDataReturnVersion(scheme2, 2000, 2);
                dataReturnVersion4.SubmittedDate = new DateTime(2015, 1, 10);

                helper.CreateEeeOutputAmount(dataReturnVersion3, producer2.RegisteredProducer, "B2C", 1, 40);
                helper.CreateEeeOutputAmount(dataReturnVersion4, producer2.RegisteredProducer, "B2C", 2, 1000);

                db.Model.SaveChanges();

                // Act
                var results = await db.StoredProcedures.SpgProducerEeeHistoryCsvData("PRN123");

                //Assert
                Assert.NotNull(results);

                ProducerEeeHistoryCsvData.ProducerInReturnsResult b2cProducer = results.ProducerReturnsHistoryData.Find(x => (x.ApprovalNumber == "WEE/TE0000S1/SCH"));
                Assert.NotNull(b2cProducer);
                Assert.Equal(2000, b2cProducer.ComplianceYear);
                Assert.Equal(1000, b2cProducer.Cat2B2C);
                Assert.Equal("Yes", b2cProducer.LatestData);

                ProducerEeeHistoryCsvData.ProducerInReturnsResult b2bProducer = results.ProducerReturnsHistoryData.Find(x => (x.ApprovalNumber == "WEE/TE0000ST/SCH"));
                Assert.NotNull(b2bProducer);
                Assert.Equal(2000, b2bProducer.ComplianceYear);
                Assert.Equal(200, b2bProducer.Cat2B2B);
                Assert.Null(b2bProducer.Cat2B2C);
                Assert.Equal("Yes", b2bProducer.LatestData);

                Assert.Equal(4, results.ProducerReturnsHistoryData.Count);
            }
        }
        public void CreateResults_WithProducerConsecutivelyRemovedInNetUploadsbutLatesOnAdded_ReturnsEeeDataHistoryWithOneBlankDataRowforProducer()
        {
            // Arrange
            IWeeeAuthorization authorization = new AuthorizationBuilder().AllowInternalAreaAccess().Build();
            var context          = A.Fake <WeeeContext>();
            var csvWriterFactory = A.Fake <CsvWriterFactory>();
            GetProducerEeeDataHistoryCsvHandler handler = new GetProducerEeeDataHistoryCsvHandler(
                authorization,
                context,
                csvWriterFactory);

            //first upload
            ProducerEeeHistoryCsvData results = new ProducerEeeHistoryCsvData();

            ProducerEeeHistoryCsvData.ProducerInReturnsResult upload1 = CreateEeeDataForProducer("WEE/MM0841AA", "WEE/FA0000KE/SCH", "Test Scheme", 2007, 1, new DateTime(2016, 1, 1), 100, "No");
            results.ProducerReturnsHistoryData.Add(upload1);

            //producer removed in second upload
            ProducerEeeHistoryCsvData.ProducerRemovedFromReturnsResult removedUpload = CreateRemovedProducerResults("WEE/FA0000KE/SCH", 2007, new DateTime(2016, 1, 2), 1);
            results.ProducerRemovedFromReturnsData.Add(removedUpload);

            //producer removed in third upload
            ProducerEeeHistoryCsvData.ProducerRemovedFromReturnsResult removedUpload1 = CreateRemovedProducerResults("WEE/FA0000KE/SCH", 2007, new DateTime(2016, 1, 3), 1);
            results.ProducerRemovedFromReturnsData.Add(removedUpload1);

            //In this upload producer added back again with same data as first upload
            ProducerEeeHistoryCsvData.ProducerInReturnsResult upload2 = CreateEeeDataForProducer("WEE/MM0841AA", "WEE/FA0000KE/SCH", "Test Scheme", 2007, 1, new DateTime(2016, 1, 4), 200, "Yes");
            results.ProducerReturnsHistoryData.Add(upload2);

            //Act
            IEnumerable <GetProducerEeeDataHistoryCsvHandler.EeeHistoryCsvResult> csvResults = new List <GetProducerEeeDataHistoryCsvHandler.EeeHistoryCsvResult>();

            csvResults = handler.CreateResults(results);

            //Assert
            Assert.NotNull(csvResults);
            Assert.Equal(3, csvResults.Count());
            Assert.Collection(csvResults,
                              (r1) => Assert.Equal(new DateTime(2016, 1, 4), r1.SubmittedDate),
                              (r2) => Assert.Equal(new DateTime(2016, 1, 2), r2.SubmittedDate),
                              (r3) => Assert.Equal(new DateTime(2016, 1, 1), r3.SubmittedDate));

            Assert.Collection(csvResults,
                              (r1) => Assert.Equal("Yes", r1.LatestData),
                              (r2) => Assert.Equal("No", r2.LatestData),
                              (r3) => Assert.Equal("No", r3.LatestData));

            Assert.Collection(csvResults,
                              (r1) => Assert.Equal(200, r1.Cat1B2B),
                              (r2) => Assert.Equal(null, r2.Cat1B2B),
                              (r3) => Assert.Equal(100, r3.Cat1B2B));
        }
 private static ProducerEeeHistoryCsvData.ProducerInReturnsResult CreateEeeDataForProducer(string prn, string approvalNumber, string schemeName, int year,
                                                                                           int quarter, DateTime date, int cat1b2b, string latestData)
 {
     ProducerEeeHistoryCsvData.ProducerInReturnsResult eeeDatahistoryResult = new ProducerEeeHistoryCsvData.ProducerInReturnsResult();
     eeeDatahistoryResult.PRN            = prn;
     eeeDatahistoryResult.SchemeName     = schemeName;
     eeeDatahistoryResult.ApprovalNumber = approvalNumber;
     eeeDatahistoryResult.ComplianceYear = year;
     eeeDatahistoryResult.Quarter        = quarter;
     eeeDatahistoryResult.SubmittedDate  = date;
     eeeDatahistoryResult.LatestData     = latestData;
     eeeDatahistoryResult.Cat1B2B        = cat1b2b;
     return(eeeDatahistoryResult);
 }
 private static ProducerEeeHistoryCsvData.ProducerInReturnsResult CreateEeeDataForProducer(string prn, string approvalNumber, string schemeName, int year, 
     int quarter, DateTime date, int cat1b2b, string latestData)
 {          
     ProducerEeeHistoryCsvData.ProducerInReturnsResult eeeDatahistoryResult = new ProducerEeeHistoryCsvData.ProducerInReturnsResult();
     eeeDatahistoryResult.PRN = prn;
     eeeDatahistoryResult.SchemeName = schemeName;
     eeeDatahistoryResult.ApprovalNumber = approvalNumber; 
     eeeDatahistoryResult.ComplianceYear = year;
     eeeDatahistoryResult.Quarter = quarter;
     eeeDatahistoryResult.SubmittedDate = date;
     eeeDatahistoryResult.LatestData = latestData;
     eeeDatahistoryResult.Cat1B2B = cat1b2b;
     return eeeDatahistoryResult;            
 }