public void CreateResults_WithNoDeliveredAmounts_PopulatesTotalAsNull()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult
            {
                SchemeId = Guid.NewGuid()
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                A.Dummy <IWeeeAuthorization>(),
                A.Dummy <CsvWriterFactory>());

            // Act
            IEnumerable <GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                new List <string>()
            {
                "AATF1"
            },
                new List <string>()
            {
                "AE1"
            });

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(null, result1.TotalDelivered);
        }
        public async Task HandleAsync_WithSchemeSpecified_GeneratesCorrectFileName()
        {
            IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights();

            IStoredProcedures storedProcedures = A.Fake <IStoredProcedures>();

            SpgSchemeWeeeCsvResult storedProcedureResult = new SpgSchemeWeeeCsvResult();

            storedProcedureResult.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId       = new Guid("C5AD2FF9-941D-4D6F-B68B-9805DD7E1FD1"),
                ApprovalNumber = "WEE/AA1111AA/SCH"
            });

            A.CallTo(() => storedProcedures.SpgSchemeWeeeCsvAsync(A <int> ._, A <Guid?> ._, A <string> ._))
            .Returns(storedProcedureResult);

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                storedProcedures,
                authorization,
                A.Dummy <CsvWriterFactory>());

            GetSchemeWeeeCsv request = new GetSchemeWeeeCsv(2016, new Guid("C5AD2FF9-941D-4D6F-B68B-9805DD7E1FD1"), ObligationType.B2C);

            // Act
            SystemTime.Freeze(new DateTime(2016, 12, 31, 23, 59, 0));
            FileInfo result = await handler.HandleAsync(request);

            SystemTime.Unfreeze();

            // Assert
            Assert.Equal("2016_WEEAA1111AASCH_B2C_schemeWEEE_31122016_2359.csv", result.FileName);
        }
        public void CreateResults_WithCollectedAmountWithSourceType2_PopulatesFinalHoldersWithValue()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2")
            });

            data.CollectedAmounts.Add(new SpgSchemeWeeeCsvResult.CollectedAmountResult()
            {
                SchemeId     = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType  = 1,
                WeeeCategory = 1,
                SourceType   = 2,
                Tonnage      = 123.456m
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                A.Dummy <IWeeeAuthorization>(),
                A.Dummy <CsvWriterFactory>());

            // Act
            IEnumerable <GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                A.Dummy <IEnumerable <string> >(),
                A.Dummy <IEnumerable <string> >());

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(123.456m, result1.FinalHolders);
        }
        public void CreateResults_WithNoCollectedAmounts_PopulatesFinalHoldersAsNull()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult
            {
                SchemeId = Guid.NewGuid()
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                A.Dummy <IWeeeAuthorization>(),
                A.Dummy <CsvWriterFactory>());

            // Act
            IEnumerable <GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                A.Dummy <IEnumerable <string> >(),
                A.Dummy <IEnumerable <string> >());

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(null, result1.FinalHolders);
        }
        public async Task HandleAsync_WithNonInternalUser_ThrowsSecurityException()
        {
            // Arrange
            IWeeeAuthorization authorization = new AuthorizationBuilder().DenyInternalAreaAccess().Build();

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                authorization,
                A.Dummy <CsvWriterFactory>());

            GetSchemeWeeeCsv request = new GetSchemeWeeeCsv(A.Dummy <int>(), A.Dummy <Guid?>(), A.Dummy <ObligationType>());

            // Act
            Func <Task <FileInfo> > testCode = async() => await handler.HandleAsync(request);

            // Assert
            await Assert.ThrowsAsync <SecurityException>(testCode);
        }
        public async Task HandleAsync_WithNonInternalUser_ThrowsSecurityException()
        {
            // Arrange
            IWeeeAuthorization authorization = new AuthorizationBuilder().DenyInternalAreaAccess().Build();

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                authorization,
                A.Dummy<CsvWriterFactory>());

            GetSchemeWeeeCsv request = new GetSchemeWeeeCsv(A.Dummy<int>(), A.Dummy<Guid?>(), A.Dummy<ObligationType>());

            // Act
            Func<Task<FileInfo>> testCode = async () => await handler.HandleAsync(request);

            // Assert
            await Assert.ThrowsAsync<SecurityException>(testCode);
        }
        public void CreateResults_WithDeliveredAmountForLocationType1_PopulatesAeAmountAndTotal()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2")
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId               = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType            = 1,
                WeeeCategory           = 1,
                LocationType           = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 123.456m
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                A.Dummy <IWeeeAuthorization>(),
                A.Dummy <CsvWriterFactory>());

            // Act
            IEnumerable <GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                new List <string>()
            {
                "AATF1"
            },
                new List <string>()
            {
                "AE1"
            });

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(123.456m, result1.AeTonnage["AE1"]);
            Assert.Equal(123.456m, result1.TotalDelivered);
        }
        public async Task HandleAsync_WithNoSchemeSpecified_GeneratesCorrectFileName()
        {
            // Arrange
            IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights();

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                authorization,
                A.Dummy<CsvWriterFactory>());

            GetSchemeWeeeCsv request = new GetSchemeWeeeCsv(2016, null, ObligationType.B2C);

            // Act
            SystemTime.Freeze(new DateTime(2016, 12, 31, 23, 59, 0));
            FileInfo result = await handler.HandleAsync(request);
            SystemTime.Unfreeze();

            // Assert
            Assert.Equal("2016_B2C_schemeWEEE_31122016_2359.csv", result.FileName);
        }
        public void CreateResults_WithOneScheme_CreatesAResultForEachCategoryAndEachQuarter()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult
            {
                SchemeId = Guid.NewGuid()
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                A.Dummy <IWeeeAuthorization>(),
                A.Dummy <CsvWriterFactory>());

            // Act
            IEnumerable <GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                A.Dummy <IEnumerable <string> >(),
                A.Dummy <IEnumerable <string> >());

            // Assert
            Assert.Equal(56, results.Count());
            Assert.Collection(results.Take(15), // Just examine the first 15 rows
                              r => { Assert.Equal(1, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(2, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(3, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(4, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(5, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(6, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(7, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(8, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(9, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(10, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(11, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(12, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(13, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(14, r.Category); Assert.Equal(1, r.QuarterType); },
                              r => { Assert.Equal(1, r.Category); Assert.Equal(2, r.QuarterType); });
            // etc...
        }
        public void CreateWriter_WithB2C_CreatesExpectedColumns()
        {
            // Arrange
            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                A.Dummy <IWeeeAuthorization>(),
                A.Dummy <CsvWriterFactory>());

            List <string> aatfLocations = new List <string>()
            {
                "AATF1",
                "AATF2"
            };

            List <string> aaeLocations = new List <string>()
            {
                "AE1",
                "AE2"
            };

            // Act
            CsvWriter <GetSchemeWeeeCsvHandler.CsvResult> result = handler.CreateWriter(
                ObligationType.B2C,
                aatfLocations,
                aaeLocations);

            // Assert
            Assert.Collection(result.ColumnTitles,
                              title => Assert.Equal("Scheme name", title),
                              title => Assert.Equal("Scheme approval No", title),
                              title => Assert.Equal("Quarter", title),
                              title => Assert.Equal("Category", title),
                              title => Assert.Equal("DCF (t)", title),
                              title => Assert.Equal("Distributors (t)", title),
                              title => Assert.Equal("Final holders (t)", title),
                              title => Assert.Equal("Total AATF/AE (t)", title),
                              title => Assert.Equal("AATF1 (t)", title),
                              title => Assert.Equal("AATF2 (t)", title),
                              title => Assert.Equal("AE1 (t)", title),
                              title => Assert.Equal("AE2 (t)", title));
        }
        public async Task HandleAsync_WithNoSchemeSpecified_GeneratesCorrectFileName()
        {
            // Arrange
            IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights();

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                authorization,
                A.Dummy <CsvWriterFactory>());

            GetSchemeWeeeCsv request = new GetSchemeWeeeCsv(2016, null, ObligationType.B2C);

            // Act
            SystemTime.Freeze(new DateTime(2016, 12, 31, 23, 59, 0));
            FileInfo result = await handler.HandleAsync(request);

            SystemTime.Unfreeze();

            // Assert
            Assert.Equal("2016_B2C_schemeWEEE_31122016_2359.csv", result.FileName);
        }
        public void CreateResults_WithMultipleSchemes_OrdersSchemesBySchemeName()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeName = "Scheme B",
                SchemeId   = Guid.NewGuid()
            });

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeName = "Scheme A",
                SchemeId   = Guid.NewGuid()
            });

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeName = "Scheme C",
                SchemeId   = Guid.NewGuid()
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                A.Dummy <IWeeeAuthorization>(),
                A.Dummy <CsvWriterFactory>());

            // Act
            IEnumerable <GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                A.Dummy <IEnumerable <string> >(),
                A.Dummy <IEnumerable <string> >());

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal("Scheme A", result1.SchemeName);
        }
Пример #13
0
        public async void GivenVariousDifferingParameters_RunningTimeIsUnderTenSeconds(int complianceYear, ObligationType obligationType)
        {
            using (var databaseWrapper = new DatabaseWrapper())
            {
                // Arrange
                Stopwatch stopWatch = new Stopwatch();

                GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                    databaseWrapper.WeeeContext.StoredProcedures,
                    AuthorizationBuilder.CreateUserWithAllRights(),
                    new CsvWriterFactory(new NoFormulaeExcelSanitizer()));

                // Act
                GetSchemeWeeeCsv request = new GetSchemeWeeeCsv(complianceYear, null, obligationType);

                stopWatch.Start();
                await handler.HandleAsync(request);

                stopWatch.Stop();

                // Assert
                Assert.InRange(stopWatch.ElapsedMilliseconds, 0, 10000);
            }
        }
        public async Task HandleAsync_WithSchemeSpecified_GeneratesCorrectFileName()
        {
            IWeeeAuthorization authorization = AuthorizationBuilder.CreateUserWithAllRights();

            IStoredProcedures storedProcedures = A.Fake<IStoredProcedures>();

            SpgSchemeWeeeCsvResult storedProcedureResult = new SpgSchemeWeeeCsvResult();
            storedProcedureResult.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId = new Guid("C5AD2FF9-941D-4D6F-B68B-9805DD7E1FD1"),
                ApprovalNumber = "WEE/AA1111AA/SCH"
            });

            A.CallTo(() => storedProcedures.SpgSchemeWeeeCsvAsync(A<int>._, A<Guid?>._, A<string>._))
                .Returns(storedProcedureResult);

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                storedProcedures,
                authorization,
                A.Dummy<CsvWriterFactory>());

            GetSchemeWeeeCsv request = new GetSchemeWeeeCsv(2016, new Guid("C5AD2FF9-941D-4D6F-B68B-9805DD7E1FD1"), ObligationType.B2C);

            // Act
            SystemTime.Freeze(new DateTime(2016, 12, 31, 23, 59, 0));
            FileInfo result = await handler.HandleAsync(request);
            SystemTime.Unfreeze();

            // Assert
            Assert.Equal("2016_WEEAA1111AASCH_B2C_schemeWEEE_31122016_2359.csv", result.FileName);
        }
        public void CreateResults_WithDeliveredAmountsForVariousSchemesCategoriesAndQuarters_SumsAmountsAndPopulatesTotals()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                SchemeName = "Scheme 1"
            });

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId = new Guid("9E1EE29C-5FFD-4137-BA55-98C0F0F7212D"),
                SchemeName = "Scheme 2"
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType = 1,
                WeeeCategory = 1,
                LocationType = 0,
                LocationApprovalNumber = "AATF1",
                Tonnage = 1
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType = 1,
                WeeeCategory = 1,
                LocationType = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 2
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType = 4,
                WeeeCategory = 1,
                LocationType = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 9999
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType = 1,
                WeeeCategory = 14,
                LocationType = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 9999
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId = new Guid("9E1EE29C-5FFD-4137-BA55-98C0F0F7212D"),
                QuarterType = 1,
                WeeeCategory = 1,
                LocationType = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 9999
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                A.Dummy<IWeeeAuthorization>(),
                A.Dummy<CsvWriterFactory>());

            // Act
            IEnumerable<GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                new List<string>() { "AATF1" },
                new List<string>() { "AE1" });

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(3, result1.TotalDelivered);
        }
        public void CreateResults_WithMultipleSchemes_OrdersSchemesBySchemeName()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeName = "Scheme B",
                SchemeId = Guid.NewGuid()
            });

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeName = "Scheme A",
                SchemeId = Guid.NewGuid()
            });

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeName = "Scheme C",
                SchemeId = Guid.NewGuid()
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                A.Dummy<IWeeeAuthorization>(),
                A.Dummy<CsvWriterFactory>());

            // Act
            IEnumerable<GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                A.Dummy<IEnumerable<string>>(),
                A.Dummy<IEnumerable<string>>());

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal("Scheme A", result1.SchemeName);
        }
        public void CreateResults_WithDeliveredAmountsForVariousSchemesCategoriesAndQuarters_SumsAmountsAndPopulatesTotals()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId   = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                SchemeName = "Scheme 1"
            });

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId   = new Guid("9E1EE29C-5FFD-4137-BA55-98C0F0F7212D"),
                SchemeName = "Scheme 2"
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId               = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType            = 1,
                WeeeCategory           = 1,
                LocationType           = 0,
                LocationApprovalNumber = "AATF1",
                Tonnage = 1
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId               = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType            = 1,
                WeeeCategory           = 1,
                LocationType           = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 2
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId               = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType            = 4,
                WeeeCategory           = 1,
                LocationType           = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 9999
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId               = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType            = 1,
                WeeeCategory           = 14,
                LocationType           = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 9999
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId               = new Guid("9E1EE29C-5FFD-4137-BA55-98C0F0F7212D"),
                QuarterType            = 1,
                WeeeCategory           = 1,
                LocationType           = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 9999
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy <IStoredProcedures>(),
                A.Dummy <IWeeeAuthorization>(),
                A.Dummy <CsvWriterFactory>());

            // Act
            IEnumerable <GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                new List <string>()
            {
                "AATF1"
            },
                new List <string>()
            {
                "AE1"
            });

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(3, result1.TotalDelivered);
        }
        public void CreateResults_WithDeliveredAmountForLocationType1_PopulatesAeAmountAndTotal()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2")
            });

            data.DeliveredAmounts.Add(new SpgSchemeWeeeCsvResult.DeliveredAmountResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType = 1,
                WeeeCategory = 1,
                LocationType = 1,
                LocationApprovalNumber = "AE1",
                Tonnage = 123.456m
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                A.Dummy<IWeeeAuthorization>(),
                A.Dummy<CsvWriterFactory>());

            // Act
            IEnumerable<GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                new List<string>() { "AATF1" },
                new List<string>() { "AE1" });

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(123.456m, result1.AeTonnage["AE1"]);
            Assert.Equal(123.456m, result1.TotalDelivered);
        }
        public void CreateResults_WithNoDeliveredAmounts_PopulatesTotalAsNull()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();
            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult
            {
                SchemeId = Guid.NewGuid()
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                A.Dummy<IWeeeAuthorization>(),
                A.Dummy<CsvWriterFactory>());

            // Act
            IEnumerable<GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                new List<string>() { "AATF1" },
                new List<string>() { "AE1" });

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(null, result1.TotalDelivered);
        }
        public void CreateResults_WithCollectedAmountWithSourceType2_PopulatesFinalHoldersWithValue()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();

            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2")
            });

            data.CollectedAmounts.Add(new SpgSchemeWeeeCsvResult.CollectedAmountResult()
            {
                SchemeId = new Guid("3E299215-BA37-403F-B398-EB345371F3D2"),
                QuarterType = 1,
                WeeeCategory = 1,
                SourceType = 2,
                Tonnage = 123.456m
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                A.Dummy<IWeeeAuthorization>(),
                A.Dummy<CsvWriterFactory>());

            // Act
            IEnumerable<GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                A.Dummy<IEnumerable<string>>(),
                A.Dummy<IEnumerable<string>>());

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(123.456m, result1.FinalHolders);
        }
        public void CreateResults_WithNoCollectedAmounts_PopulatesFinalHoldersAsNull()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();
            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult
            {
                SchemeId = Guid.NewGuid()
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                A.Dummy<IWeeeAuthorization>(),
                A.Dummy<CsvWriterFactory>());

            // Act
            IEnumerable<GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                A.Dummy<IEnumerable<string>>(),
                A.Dummy<IEnumerable<string>>());

            // Assert
            GetSchemeWeeeCsvHandler.CsvResult result1 = results.First();
            Assert.Equal(null, result1.FinalHolders);
        }
        public void CreateWriter_WithB2B_CreatesExpectedColumns()
        {
            // Arrange
            List<string> aatfLocations = new List<string>()
            {
                "AATF1",
                "AATF2"
            };

            List<string> aaeLocations = new List<string>()
            {
                "AE1",
                "AE2"
            };

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                A.Dummy<IWeeeAuthorization>(),
                A.Dummy<CsvWriterFactory>());

            // Act
            CsvWriter<GetSchemeWeeeCsvHandler.CsvResult> result = handler.CreateWriter(
                ObligationType.B2B,
                aatfLocations,
                aaeLocations);

            // Assert
            Assert.Collection(result.ColumnTitles,
                title => Assert.Equal("Scheme name", title),
                title => Assert.Equal("Scheme approval No", title),
                title => Assert.Equal("Quarter", title),
                title => Assert.Equal("Category", title),
                title => Assert.Equal("DCF (t)", title),
                title => Assert.Equal("Total AATF/AE (t)", title),
                title => Assert.Equal("AATF1 (t)", title),
                title => Assert.Equal("AATF2 (t)", title),
                title => Assert.Equal("AE1 (t)", title),
                title => Assert.Equal("AE2 (t)", title));
        }
        public void CreateResults_WithOneScheme_CreatesAResultForEachCategoryAndEachQuarter()
        {
            // Arrange
            SpgSchemeWeeeCsvResult data = new SpgSchemeWeeeCsvResult();
            data.Schemes.Add(new SpgSchemeWeeeCsvResult.SchemeResult
            {
                SchemeId = Guid.NewGuid()
            });

            GetSchemeWeeeCsvHandler handler = new GetSchemeWeeeCsvHandler(
                A.Dummy<IStoredProcedures>(),
                A.Dummy<IWeeeAuthorization>(),
                A.Dummy<CsvWriterFactory>());

            // Act
            IEnumerable<GetSchemeWeeeCsvHandler.CsvResult> results = handler.CreateResults(
                data,
                A.Dummy<IEnumerable<string>>(),
                A.Dummy<IEnumerable<string>>());

            // Assert
            Assert.Equal(56, results.Count());
            Assert.Collection(results.Take(15), // Just examine the first 15 rows
                r => { Assert.Equal(1, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(2, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(3, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(4, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(5, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(6, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(7, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(8, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(9, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(10, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(11, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(12, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(13, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(14, r.Category); Assert.Equal(1, r.QuarterType); },
                r => { Assert.Equal(1, r.Category); Assert.Equal(2, r.QuarterType); });
            // etc...
        }