コード例 #1
0
        public async void CreateProducerList_WithSchemaVersion306_SetsSchemaVersion()
        {
            // Arrange
            var dataAccess = A.Fake <IProducerListFactoryDataAccess>();

            A.CallTo(() => dataAccess.FetchSchemeInfo(A <Guid> ._)).Returns(new List <SchemeInfo>
            {
                new SchemeInfo {
                    ApprovalNumber = "123", TradingName = "Test"
                }
            });

            ProducerListFactory producerListFactory = new ProducerListFactory(dataAccess);

            ProducerListSettings listSettings = new ProducerListSettings()
            {
                OrganisationID = new Guid("20C569E6-C4A0-40C2-9D87-120906D5434B"),
                SchemaVersion  = MemberRegistrationSchemaVersion.Version_3_06
            };

            // Act
            ProducerList producerList = await producerListFactory.CreateAsync(listSettings);

            // Assert
            Assert.Equal(MemberRegistrationSchemaVersion.Version_3_06, producerList.SchemaVersion);
        }
コード例 #2
0
        public async void CreateProducerList_With1NewProducer_And1ExistingProducer_Creates2Producers()
        {
            // Arrange
            var dataAccess = A.Fake <IProducerListFactoryDataAccess>();

            A.CallTo(() => dataAccess.FetchSchemeInfo(A <Guid> ._)).Returns(new List <SchemeInfo>
            {
                new SchemeInfo {
                    ApprovalNumber = "123", TradingName = "Test"
                }
            });
            A.CallTo(() => dataAccess.GetRegistrationNumbers(A <Guid> ._, A <int> ._, A <int> ._)).Returns(
                new List <string>
            {
                "1"
            });

            ProducerListFactory producerListFactory = new ProducerListFactory(dataAccess);

            ProducerListSettings listSettings = new ProducerListSettings()
            {
                OrganisationID            = new Guid("20C569E6-C4A0-40C2-9D87-120906D5434B"),
                NumberOfNewProducers      = 1,
                NumberOfExistingProducers = 1,
                ComplianceYear            = 2015
            };

            // Act
            ProducerList producerList = await producerListFactory.CreateAsync(listSettings);

            // Assert
            Assert.Equal(2, producerList.Producers.Count);
        }
コード例 #3
0
        public async void CreateProducerList_WithComplianceYear2015_SetsComplianceYear()
        {
            // Arrange
            var dataAccess = A.Fake <IProducerListFactoryDataAccess>();

            A.CallTo(() => dataAccess.FetchSchemeInfo(A <Guid> ._)).Returns(new List <SchemeInfo>
            {
                new SchemeInfo {
                    ApprovalNumber = "123", TradingName = "Test"
                }
            });

            ProducerListFactory producerListFactory = new ProducerListFactory(dataAccess);

            ProducerListSettings listSettings = new ProducerListSettings()
            {
                OrganisationID = new Guid("20C569E6-C4A0-40C2-9D87-120906D5434B"),
                ComplianceYear = 2015
            };

            // Act
            ProducerList producerList = await producerListFactory.CreateAsync(listSettings);

            // Assert
            Assert.Equal(2015, producerList.ComplianceYear);
        }
コード例 #4
0
ファイル: XmlGenerator.cs プロジェクト: DEFRA/prsd-weee
        public XDocument GenerateXml(ProducerList producerList, ProducerListSettings settings)
        {
            Guard.ArgumentNotNull(() => producerList, producerList);
            Guard.ArgumentNotNull(() => settings, settings);

            XDocument xmlDoc = new XDocument();

            xmlDoc.Declaration = new XDeclaration("1.0", "utf-8", "yes");

            XElement xmlScheme = new XElement(XmlNamespace.MemberRegistration + "scheme");

            xmlDoc.Add(xmlScheme);

            // If we are creating an XML document that is deliberately invalid,
            // let's include a <foo/> element iXmlNamespace.MemberRegistrationide of the root element.
            if (settings.IncludeUnexpectedFooElement)
            {
                XElement xmlFoo = new XElement(XmlNamespace.MemberRegistration + "foo");
                xmlScheme.Add(xmlFoo);
            }

            PopulateScheme(producerList, xmlScheme);

            return(xmlDoc);
        }
コード例 #5
0
        public async Task <ProducerList> CreateAsync(ProducerListSettings listSettings)
        {
            Guard.ArgumentNotNull(() => listSettings, listSettings);

            ProducerList producerList = new ProducerList();

            SchemeInfo schemeInfo = await FetchSchemeInfo(listSettings.OrganisationID);

            string approvalNumber = SanitizeApprovalNumber(schemeInfo.ApprovalNumber);
            string tradingName    = SanitizeTradingName(schemeInfo.TradingName);

            producerList.SchemaVersion  = listSettings.SchemaVersion;
            producerList.ApprovalNumber = approvalNumber;
            producerList.ComplianceYear = listSettings.ComplianceYear;
            producerList.TradingName    = tradingName;
            producerList.SchemeBusiness = SchemeBusiness.Create(listSettings);

            for (int index = 0; index < listSettings.NumberOfNewProducers; ++index)
            {
                ProducerSettings producerSettings = new ProducerSettings();

                producerSettings.SchemaVersion = listSettings.SchemaVersion;
                producerSettings.IsNew         = true;
                producerSettings.IgnoreStringLengthConditions = listSettings.IgnoreStringLengthConditions;

                Producer producer = Producer.Create(producerSettings, listSettings.NoCompaniesForNewProducers);

                producerList.Producers.Add(producer);
            }

            int numberOfExistingProducersToInclude = listSettings.NumberOfExistingProducers;

            List <string> registrationNumbers = await
                                                dataAccess.GetRegistrationNumbers(listSettings.OrganisationID, listSettings.ComplianceYear, numberOfExistingProducersToInclude);

            int numberOfExistingProducers = registrationNumbers.Count;

            if (numberOfExistingProducersToInclude > numberOfExistingProducers)
            {
                numberOfExistingProducersToInclude = numberOfExistingProducers;
            }

            for (int index = 0; index < numberOfExistingProducersToInclude; ++index)
            {
                ProducerSettings producerSettings = new ProducerSettings();

                producerSettings.SchemaVersion                = listSettings.SchemaVersion;
                producerSettings.IsNew                        = false;
                producerSettings.RegistrationNumber           = registrationNumbers[index];
                producerSettings.IgnoreStringLengthConditions = listSettings.IgnoreStringLengthConditions;

                Producer producer = Producer.Create(producerSettings, listSettings.NoCompaniesForNewProducers);

                producerList.Producers.Add(producer);
            }

            return(producerList);
        }
コード例 #6
0
        public async Task<ProducerList> CreateAsync(ProducerListSettings listSettings)
        {
            Guard.ArgumentNotNull(() => listSettings, listSettings);

            ProducerList producerList = new ProducerList();

            SchemeInfo schemeInfo = await FetchSchemeInfo(listSettings.OrganisationID);

            string approvalNumber = SanitizeApprovalNumber(schemeInfo.ApprovalNumber);
            string tradingName = SanitizeTradingName(schemeInfo.TradingName);

            producerList.SchemaVersion = listSettings.SchemaVersion;
            producerList.ApprovalNumber = approvalNumber;
            producerList.ComplianceYear = listSettings.ComplianceYear;
            producerList.TradingName = tradingName;
            producerList.SchemeBusiness = SchemeBusiness.Create(listSettings);

            for (int index = 0; index < listSettings.NumberOfNewProducers; ++index)
            {
                ProducerSettings producerSettings = new ProducerSettings();

                producerSettings.SchemaVersion = listSettings.SchemaVersion;
                producerSettings.IsNew = true;
                producerSettings.IgnoreStringLengthConditions = listSettings.IgnoreStringLengthConditions;

                Producer producer = Producer.Create(producerSettings, listSettings.NoCompaniesForNewProducers);

                producerList.Producers.Add(producer);
            }

            int numberOfExistingProducersToInclude = listSettings.NumberOfExistingProducers;

            List<string> registrationNumbers = await 
                dataAccess.GetRegistrationNumbers(listSettings.OrganisationID, listSettings.ComplianceYear, numberOfExistingProducersToInclude);

            int numberOfExistingProducers = registrationNumbers.Count;

            if (numberOfExistingProducersToInclude > numberOfExistingProducers)
            {
                numberOfExistingProducersToInclude = numberOfExistingProducers;
            }

            for (int index = 0; index < numberOfExistingProducersToInclude; ++index)
            {
                ProducerSettings producerSettings = new ProducerSettings();

                producerSettings.SchemaVersion = listSettings.SchemaVersion;
                producerSettings.IsNew = false;
                producerSettings.RegistrationNumber = registrationNumbers[index];
                producerSettings.IgnoreStringLengthConditions = listSettings.IgnoreStringLengthConditions;

                Producer producer = Producer.Create(producerSettings, listSettings.NoCompaniesForNewProducers);

                producerList.Producers.Add(producer);
            }

            return producerList;
        }
コード例 #7
0
 private async Task <PcsXmlFile> GenerateXml(ProducerListSettings settings)
 {
     using (IWeeeClient client = apiClient())
     {
         return(await client.SendAsync(
                    User.GetAccessToken(),
                    new GeneratePcsXmlFile(settings)));
     }
 }
コード例 #8
0
        public void XmlGenerator_WithValidEmptyProducerList_ReturnsCorrectXml()
        {
            // Arrange
            ProducerListSettings settings = A.Fake <ProducerListSettings>();

            ProducerList producerList = new ProducerList();

            producerList.ApprovalNumber                       = "Approval Number";
            producerList.ComplianceYear                       = 2015;
            producerList.SchemaVersion                        = MemberRegistrationSchemaVersion.Version_3_06;
            producerList.SchemeBusiness.Company               = new SchemeCompany();
            producerList.SchemeBusiness.Company.CompanyName   = "Company Name";
            producerList.SchemeBusiness.Company.CompanyNumber = "Company Number";
            producerList.TradingName = "Trading Name";

            XmlGenerator xmlGenerator = new XmlGenerator();

            // Act
            XDocument xmlDocument = xmlGenerator.GenerateXml(producerList, settings);

            string actual;

            using (MemoryStream stream = new MemoryStream())
            {
                xmlDocument.Save(stream);
                stream.Position = 0;
                using (TextReader tr = new StreamReader(stream))
                {
                    actual = tr.ReadToEnd();
                }
            }

            // Assert
            string expected =
                @"<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?>
<scheme xmlns=""http://www.environment-agency.gov.uk/WEEE/XMLSchema"">
  <XSDVersion>3.06</XSDVersion>
  <approvalNo>Approval Number</approvalNo>
  <complianceYear>2015</complianceYear>
  <tradingName>Trading Name</tradingName>
  <schemeBusiness>
    <company>
      <companyName>Company Name</companyName>
      <companyNumber>Company Number</companyNumber>
    </company>
  </schemeBusiness>
  <producerList />
</scheme>";

            Xunit.Assert.Equal(expected, actual);
        }
コード例 #9
0
        public async void CreateProducerList_WithComplianceYear2015_SetsComplianceYear()
        {
            // Arrange
            var dataAccess = A.Fake<IProducerListFactoryDataAccess>();
            A.CallTo(() => dataAccess.FetchSchemeInfo(A<Guid>._)).Returns(new List<SchemeInfo>
            {
                new SchemeInfo { ApprovalNumber = "123", TradingName = "Test" }
            });

            ProducerListFactory producerListFactory = new ProducerListFactory(dataAccess);

            ProducerListSettings listSettings = new ProducerListSettings()
            {
                OrganisationID = new Guid("20C569E6-C4A0-40C2-9D87-120906D5434B"),
                ComplianceYear = 2015
            };

            // Act
            ProducerList producerList = await producerListFactory.CreateAsync(listSettings);

            // Assert
            Assert.Equal(2015, producerList.ComplianceYear);
        }
コード例 #10
0
        public async Task <ActionResult> DownloadFile(SpecifyOptionsViewModel viewModel)
        {
            if (!await CheckOrganisationExists(viewModel.OrganisationID))
            {
                return(RedirectToAction("SelectOrganisation"));
            }

            if (!ModelState.IsValid)
            {
                return(RedirectToAction("SpecifyOptions", new { viewModel.OrganisationID }));
            }

            ProducerListSettings settings = new ProducerListSettings()
            {
                OrganisationID               = viewModel.OrganisationID,
                SchemaVersion                = viewModel.SchemaVersion,
                ComplianceYear               = viewModel.ComplianceYear,
                NumberOfNewProducers         = viewModel.NumberOfNewProducers,
                NumberOfExistingProducers    = viewModel.NumberOfExistingProducers,
                NoCompaniesForNewProducers   = viewModel.NoCompaniesForNewProducers,
                IncludeMalformedSchema       = viewModel.IncludeMalformedSchema,
                IncludeUnexpectedFooElement  = viewModel.IncludeUnexpectedFooElement,
                IgnoreStringLengthConditions = viewModel.IgnoreStringLengthConditions,
            };

            PcsXmlFile xmlFile = await GenerateXml(settings);

            ContentDisposition cd = new ContentDisposition
            {
                FileName = xmlFile.FileName,
                Inline   = false,
            };

            Response.AppendHeader("Content-Disposition", cd.ToString());

            return(File(xmlFile.Data, "application/xml"));
        }
コード例 #11
0
        public XDocument GenerateXml(ProducerList producerList, ProducerListSettings settings)
        {
            Guard.ArgumentNotNull(() => producerList, producerList);
            Guard.ArgumentNotNull(() => settings, settings);

            XDocument xmlDoc = new XDocument();

            xmlDoc.Declaration = new XDeclaration("1.0", "utf-8", "yes");

            XElement xmlScheme = new XElement(XmlNamespace.MemberRegistration + "scheme");
            xmlDoc.Add(xmlScheme);

            // If we are creating an XML document that is deliberately invalid,
            // let's include a <foo/> element iXmlNamespace.MemberRegistrationide of the root element.
            if (settings.IncludeUnexpectedFooElement)
            {
                XElement xmlFoo = new XElement(XmlNamespace.MemberRegistration + "foo");
                xmlScheme.Add(xmlFoo);
            }

            PopulateScheme(producerList, xmlScheme);

            return xmlDoc;
        }
コード例 #12
0
        public async void CreateProducerList_WithSchemaVersion306_SetsSchemaVersion()
        {
            // Arrange
            var dataAccess = A.Fake<IProducerListFactoryDataAccess>();
            A.CallTo(() => dataAccess.FetchSchemeInfo(A<Guid>._)).Returns(new List<SchemeInfo>
            {
                new SchemeInfo { ApprovalNumber = "123", TradingName = "Test" }
            });

            ProducerListFactory producerListFactory = new ProducerListFactory(dataAccess);

            ProducerListSettings listSettings = new ProducerListSettings()
            {
                OrganisationID = new Guid("20C569E6-C4A0-40C2-9D87-120906D5434B"),
                SchemaVersion = MemberRegistrationSchemaVersion.Version_3_06
            };

            // Act
            ProducerList producerList = await producerListFactory.CreateAsync(listSettings);

            // Assert
            Assert.Equal(MemberRegistrationSchemaVersion.Version_3_06, producerList.SchemaVersion);
        }
コード例 #13
0
        public async void CreateProducerList_With1NewProducer_And1ExistingProducer_Creates2Producers()
        {
            // Arrange
            var dataAccess = A.Fake<IProducerListFactoryDataAccess>();
            A.CallTo(() => dataAccess.FetchSchemeInfo(A<Guid>._)).Returns(new List<SchemeInfo>
            {
                new SchemeInfo { ApprovalNumber = "123", TradingName = "Test" }
            });
            A.CallTo(() => dataAccess.GetRegistrationNumbers(A<Guid>._, A<int>._, A<int>._)).Returns(
                new List<string>
                {
                    "1"
                });

            ProducerListFactory producerListFactory = new ProducerListFactory(dataAccess);

            ProducerListSettings listSettings = new ProducerListSettings()
            {
                OrganisationID = new Guid("20C569E6-C4A0-40C2-9D87-120906D5434B"),
                NumberOfNewProducers = 1,
                NumberOfExistingProducers = 1,
                ComplianceYear = 2015
            };

            // Act
            ProducerList producerList = await producerListFactory.CreateAsync(listSettings);

            // Assert
            Assert.Equal(2, producerList.Producers.Count);
        }
コード例 #14
0
 private async Task<PcsXmlFile> GenerateXml(ProducerListSettings settings)
 {
     using (IWeeeClient client = apiClient())
     {
         return await client.SendAsync(
             User.GetAccessToken(),
             new GeneratePcsXmlFile(settings));
     }
 }
コード例 #15
0
        public async Task<ActionResult> DownloadFile(SpecifyOptionsViewModel viewModel)
        {
            if (!await CheckOrganisationExists(viewModel.OrganisationID))
            {
                return RedirectToAction("SelectOrganisation");
            }

            if (!ModelState.IsValid)
            {
                return RedirectToAction("SpecifyOptions", new { viewModel.OrganisationID });
            }

            ProducerListSettings settings = new ProducerListSettings()
            {
                OrganisationID = viewModel.OrganisationID,
                SchemaVersion = viewModel.SchemaVersion,
                ComplianceYear = viewModel.ComplianceYear,
                NumberOfNewProducers = viewModel.NumberOfNewProducers,
                NumberOfExistingProducers = viewModel.NumberOfExistingProducers,
                NoCompaniesForNewProducers = viewModel.NoCompaniesForNewProducers,
                IncludeMalformedSchema = viewModel.IncludeMalformedSchema,
                IncludeUnexpectedFooElement = viewModel.IncludeUnexpectedFooElement,
                IgnoreStringLengthConditions = viewModel.IgnoreStringLengthConditions,
            };

            PcsXmlFile xmlFile = await GenerateXml(settings);

            ContentDisposition cd = new ContentDisposition
            {
                FileName = xmlFile.FileName,
                Inline = false,
            };

            Response.AppendHeader("Content-Disposition", cd.ToString());

            return File(xmlFile.Data, "application/xml");
        }
コード例 #16
0
 public GeneratePcsXmlFile(ProducerListSettings settings)
 {
     Settings = settings;
 }