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 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 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 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 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 async Task <PcsXmlFile> GenerateXml(ProducerListSettings settings) { using (IWeeeClient client = apiClient()) { return(await client.SendAsync( User.GetAccessToken(), new GeneratePcsXmlFile(settings))); } }
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 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 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")); }
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_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 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); }
private async Task<PcsXmlFile> GenerateXml(ProducerListSettings settings) { using (IWeeeClient client = apiClient()) { return await client.SendAsync( User.GetAccessToken(), new GeneratePcsXmlFile(settings)); } }
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"); }
public GeneratePcsXmlFile(ProducerListSettings settings) { Settings = settings; }