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); }
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); }
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); }
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); }
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); }
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; }
private void PopulateProducerList(ProducerList producerList, XElement xmlProducerList) { foreach (Producer producer in producerList.Producers) { XElement xmlProducer = new XElement(XmlNamespace.MemberRegistration + "producer"); xmlProducerList.Add(xmlProducer); PopulateProducer(producer, xmlProducer); } }
private void InitViewModels() { var producerList = controller.GetAllProducers(); ProducerList.Clear(); foreach (var producer in producerList) { ProducerList.Add(new ProducerViewModel(producer)); } }
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); }
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); }
public async Task <PcsXmlFile> HandleAsync(GeneratePcsXmlFile message) { ProducerList producerList = await producerListFactory.CreateAsync(message.Settings); XDocument xml = xmlGenerator.GenerateXml(producerList, message.Settings); string fileName = string.Format("PCS Member Upload XML - {0:yyyy MM dd HH mm ss}.xml", SystemTime.UtcNow); byte[] data; if (message.Settings.IncludeMalformedSchema) { string badXml; using (StringWriter stringWriter = new StringWriter()) { using (BrokenXmlWriter xmlWriter = new BrokenXmlWriter(stringWriter, "scheme")) { xml.Save(xmlWriter); } badXml = stringWriter.ToString(); } data = Encoding.UTF8.GetBytes(badXml); } else { using (MemoryStream stream = new MemoryStream()) { xml.Save(stream); data = stream.ToArray(); } } PcsXmlFile file = new PcsXmlFile(fileName, data); return(file); }
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; }
private void PopulateScheme(ProducerList producerList, XElement xmlScheme) { XElement xmlXSDVersion = new XElement(XmlNamespace.MemberRegistration + "XSDVersion"); xmlScheme.Add(xmlXSDVersion); switch (producerList.SchemaVersion) { case MemberRegistrationSchemaVersion.Version_3_04: xmlXSDVersion.Value = "3.04"; break; case MemberRegistrationSchemaVersion.Version_3_06: xmlXSDVersion.Value = "3.06"; break; case MemberRegistrationSchemaVersion.Version_3_07: xmlXSDVersion.Value = "3.07"; break; default: throw new NotSupportedException(); } XElement xmlApprovalNo = new XElement(XmlNamespace.MemberRegistration + "approvalNo"); xmlScheme.Add(xmlApprovalNo); xmlApprovalNo.Value = producerList.ApprovalNumber ?? string.Empty; XElement xmlComplianceYear = new XElement(XmlNamespace.MemberRegistration + "complianceYear"); xmlScheme.Add(xmlComplianceYear); xmlComplianceYear.Value = producerList.ComplianceYear.ToString(); XElement xmlTradingName = new XElement(XmlNamespace.MemberRegistration + "tradingName"); xmlScheme.Add(xmlTradingName); xmlTradingName.Value = producerList.TradingName ?? string.Empty; XElement xmlSchemeBusiness = new XElement(XmlNamespace.MemberRegistration + "schemeBusiness"); xmlScheme.Add(xmlSchemeBusiness); if (producerList.SchemeBusiness.Company != null) { XElement xmlCompany = new XElement(XmlNamespace.MemberRegistration + "company"); xmlSchemeBusiness.Add(xmlCompany); XElement xmlCompanyName = new XElement(XmlNamespace.MemberRegistration + "companyName"); xmlCompany.Add(xmlCompanyName); xmlCompanyName.Value = producerList.SchemeBusiness.Company.CompanyName ?? string.Empty; XElement xmlCompanyNumber = new XElement(XmlNamespace.MemberRegistration + "companyNumber"); xmlCompany.Add(xmlCompanyNumber); xmlCompanyNumber.Value = producerList.SchemeBusiness.Company.CompanyNumber ?? string.Empty; } if (producerList.SchemeBusiness.Partnership != null) { XElement xmlPartnership = new XElement(XmlNamespace.MemberRegistration + "partnership"); xmlSchemeBusiness.Add(xmlPartnership); XElement xmlPartnershipName = new XElement(XmlNamespace.MemberRegistration + "partnershipName"); xmlPartnership.Add(xmlPartnershipName); xmlPartnershipName.Value = producerList.SchemeBusiness.Partnership.PartnershipName ?? string.Empty; XElement xmlPartnershipList = new XElement(XmlNamespace.MemberRegistration + "partnershipList"); xmlPartnership.Add(xmlPartnershipList); foreach (string partner in producerList.SchemeBusiness.Partnership.PartnershipList) { XElement xmlPartner = new XElement(XmlNamespace.MemberRegistration + "partner"); xmlPartnershipList.Add(xmlPartner); xmlPartner.Value = partner ?? string.Empty; } } XElement xmlProducerList = new XElement(XmlNamespace.MemberRegistration + "producerList"); xmlScheme.Add(xmlProducerList); PopulateProducerList(producerList, xmlProducerList); }