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 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_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);
        }