public async Task FetchLatestProducers_WithProducerRegisteredTwiceIn2015_ReturnsOnlyLatestProducer() { using (DatabaseWrapper database = new DatabaseWrapper()) { ModelHelper helper = new ModelHelper(database.Model); // Arrange Model.Scheme scheme = helper.CreateScheme(); Model.MemberUpload memberUpload1 = helper.CreateMemberUpload(scheme); memberUpload1.ComplianceYear = 2015; memberUpload1.IsSubmitted = true; Model.ProducerSubmission producer1 = helper.CreateProducerAsCompany(memberUpload1, "AAAAA"); producer1.UpdatedDate = new DateTime(2015, 1, 1); Model.MemberUpload memberUpload2 = helper.CreateMemberUpload(scheme); memberUpload2.ComplianceYear = 2015; memberUpload2.IsSubmitted = true; Model.ProducerSubmission producer2 = helper.CreateProducerAsCompany(memberUpload2, "AAAAA"); producer2.UpdatedDate = new DateTime(2015, 1, 2); database.Model.SaveChanges(); // Act FetchProducerSearchResultsForCacheDataAccess dataAccess = new FetchProducerSearchResultsForCacheDataAccess(database.WeeeContext); var results = await dataAccess.FetchLatestProducers(); // Assert Assert.NotNull(results); Assert.Contains(results, p => p.RegistrationNumber == "AAAAA" && p.Name == producer2.Business.Company.Name); Assert.DoesNotContain(results, p => p.RegistrationNumber == "AAAAA" && p.Name == producer1.Business.Company.Name); } }
/// <summary> /// Creates a producer associated with the specified member upload. /// The producer's business will be populated with the details of a partnership. /// </summary> /// <param name="memberUpload"></param> /// <returns></returns> public ProducerSubmission CreateProducerAsPartnership(MemberUpload memberUpload, string registrationNumber, string obligationType) { ProducerSubmission producerSubmission = CreateProducerWithEmptyBusiness(memberUpload, registrationNumber, obligationType); Partnership partnership = CreatePartnership(); producerSubmission.Business.Partnership = partnership; producerSubmission.Business.PartnershipId = partnership.Id; return(producerSubmission); }
/// <summary> /// Creates a producer associated with the specified member upload. /// The producer's business will be populated with the details of a company. /// </summary> /// <param name="memberUpload"></param> /// <returns></returns> public ProducerSubmission CreateProducerAsCompany(MemberUpload memberUpload, string registrationNumber, string obligationType) { ProducerSubmission producerSubsmission = CreateProducerWithEmptyBusiness(memberUpload, registrationNumber, obligationType); Company company = CreateCompany(); producerSubsmission.Business.Company = company; producerSubsmission.Business.CompanyId = company.Id; return(producerSubsmission); }
public async Task FetchLatestProducers_WithThreeProducers_ReturnsProducersOrderedByRegistrationNumber() { using (DatabaseWrapper database = new DatabaseWrapper()) { ModelHelper helper = new ModelHelper(database.Model); // Arrange Model.Scheme scheme = helper.CreateScheme(); Model.MemberUpload memberUpload1 = helper.CreateMemberUpload(scheme); memberUpload1.ComplianceYear = 2015; memberUpload1.IsSubmitted = true; Model.ProducerSubmission producer1 = helper.CreateProducerAsCompany(memberUpload1, "AAAAA"); Model.MemberUpload memberUpload2 = helper.CreateMemberUpload(scheme); memberUpload2.ComplianceYear = 2015; memberUpload2.IsSubmitted = true; Model.ProducerSubmission producer2 = helper.CreateProducerAsCompany(memberUpload2, "CCCCC"); Model.MemberUpload memberUpload3 = helper.CreateMemberUpload(scheme); memberUpload3.ComplianceYear = 2015; memberUpload3.IsSubmitted = true; Model.ProducerSubmission producer3 = helper.CreateProducerAsCompany(memberUpload3, "BBBBB"); database.Model.SaveChanges(); // Act FetchProducerSearchResultsForCacheDataAccess dataAccess = new FetchProducerSearchResultsForCacheDataAccess(database.WeeeContext); var results = await dataAccess.FetchLatestProducers(); // Assert Assert.NotNull(results); var result1 = results.SingleOrDefault(r => r.RegistrationNumber == "AAAAA"); var result2 = results.SingleOrDefault(r => r.RegistrationNumber == "BBBBB"); var result3 = results.SingleOrDefault(r => r.RegistrationNumber == "CCCCC"); Assert.NotNull(result1); Assert.NotNull(result2); Assert.NotNull(result3); int result1index = results.IndexOf(result1); int result2index = results.IndexOf(result2); int result3index = results.IndexOf(result3); Assert.True(result1index < result2index); Assert.True(result2index < result3index); } }
public BrandName_ CreateBrandName(ProducerSubmission producerSubmission, string brandName) { var result = new BrandName_ { Id = IntegerToGuid(GetNextId()), Name = brandName, ProducerSubmissionId = producerSubmission.Id, ProducerSubmission = producerSubmission }; model.BrandName_Set.Add(result); return(result); }
private ProducerSubmission CreateProducerWithEmptyBusiness(MemberUpload memberUpload, string registrationNumber, string obligationType) { int businessId = GetNextId(); Business business = new Business { Id = IntegerToGuid(businessId), }; model.Businesses.Add(business); int producerSubmissionId = GetNextId(); RegisteredProducer registeredProducer = GetOrCreateRegisteredProducer(memberUpload.Scheme, memberUpload.ComplianceYear.Value, registrationNumber); var chargeBandAmount = FetchChargeBandAmount(ChargeBand.A); ProducerSubmission producerSubmission = new ProducerSubmission { Id = IntegerToGuid(producerSubmissionId), RegisteredProducer = registeredProducer, RegisteredProducerId = registeredProducer.Id, MemberUpload = memberUpload, MemberUploadId = memberUpload.Id, TradingName = string.Format("Producer {0} Trading Name", producerSubmissionId), UpdatedDate = new DateTime(2015, 1, 1, 0, 0, 0), Business = business, ProducerBusinessId = business.Id, AuthorisedRepresentativeId = null, ChargeBandAmountId = chargeBandAmount.Id, ChargeThisUpdate = 0, ObligationType = obligationType, Invoiced = false }; model.ProducerSubmissions.Add(producerSubmission); if (memberUpload.IsSubmitted) { registeredProducer.CurrentSubmissionId = IntegerToGuid(producerSubmissionId); registeredProducer.CurrentSubmission = producerSubmission; } return(producerSubmission); }
public BrandName_ CreateBrandName(ProducerSubmission producerSubmission, string brandName) { var result = new BrandName_ { Id = IntegerToGuid(GetNextId()), Name = brandName, ProducerSubmissionId = producerSubmission.Id, ProducerSubmission = producerSubmission }; model.BrandName_Set.Add(result); return result; }
private ProducerSubmission CreateProducerWithEmptyBusiness(MemberUpload memberUpload, string registrationNumber, string obligationType) { int businessId = GetNextId(); Business business = new Business { Id = IntegerToGuid(businessId), }; model.Businesses.Add(business); int producerSubmissionId = GetNextId(); RegisteredProducer registeredProducer = GetOrCreateRegisteredProducer(memberUpload.Scheme, memberUpload.ComplianceYear.Value, registrationNumber); var chargeBandAmount = FetchChargeBandAmount(ChargeBand.A); ProducerSubmission producerSubmission = new ProducerSubmission { Id = IntegerToGuid(producerSubmissionId), RegisteredProducer = registeredProducer, RegisteredProducerId = registeredProducer.Id, MemberUpload = memberUpload, MemberUploadId = memberUpload.Id, TradingName = string.Format("Producer {0} Trading Name", producerSubmissionId), UpdatedDate = new DateTime(2015, 1, 1, 0, 0, 0), Business = business, ProducerBusinessId = business.Id, AuthorisedRepresentativeId = null, ChargeBandAmountId = chargeBandAmount.Id, ChargeThisUpdate = 0, ObligationType = obligationType, Invoiced = false }; model.ProducerSubmissions.Add(producerSubmission); if (memberUpload.IsSubmitted) { registeredProducer.CurrentSubmissionId = IntegerToGuid(producerSubmissionId); registeredProducer.CurrentSubmission = producerSubmission; } return producerSubmission; }