private static ProducerEeeHistoryCsvData.ProducerRemovedFromReturnsResult CreateRemovedProducerResults(string approvalnumber, int year, DateTime date, int quarter)
 {
     ProducerEeeHistoryCsvData.ProducerRemovedFromReturnsResult removedResult = new ProducerEeeHistoryCsvData.ProducerRemovedFromReturnsResult();
     removedResult.ApprovalNumber = approvalnumber;
     removedResult.ComplianceYear = year;
     removedResult.SubmittedDate  = date;
     removedResult.Quarter        = quarter;
     return(removedResult);
 }
        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.ProducerRemovedFromReturnsResult CreateRemovedProducerResults(string approvalnumber, int year, DateTime date, int quarter)
 {
     ProducerEeeHistoryCsvData.ProducerRemovedFromReturnsResult removedResult = new ProducerEeeHistoryCsvData.ProducerRemovedFromReturnsResult();
     removedResult.ApprovalNumber = approvalnumber;
     removedResult.ComplianceYear = year;
     removedResult.SubmittedDate = date;
     removedResult.Quarter = quarter;
     return removedResult;
 }