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); } }
/// <summary> /// Creates memberupload errors and warnings /// </summary> /// <param name="memberUpload"></param> /// <returns></returns> public MemberUploadError CreateMemberUploadError(MemberUpload memberUpload) { int memberUploadErrorId = GetNextId(); MemberUploadError memberUploadError = new MemberUploadError { Id = IntegerToGuid(memberUploadErrorId), MemberUploadId = memberUpload.Id, ErrorLevel = ErrorLevel.Warning.Value, ErrorType = UploadErrorType.Business.Value, Description = "Test Warning" }; model.MemberUploadErrors.Add(memberUploadError); return(memberUploadError); }
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); }
/// <summary> /// Creates a member upload associated with the specified scheme. /// After creation, the ComplianceYear and IsSubmitted properties /// should be explicitly set by the test. /// </summary> /// <param name="scheme"></param> /// <returns></returns> public MemberUpload CreateMemberUpload(Scheme scheme) { int memberUploadId = GetNextId(); MemberUpload memberUpload = new MemberUpload { Id = IntegerToGuid(memberUploadId), OrganisationId = scheme.OrganisationId, Organisation = scheme.Organisation, Scheme = scheme, SchemeId = scheme.Id, Data = string.Format("<memberUpload{0} />", memberUploadId), CreatedById = GetOrCreateUser("Testuser").Id, CreatedDate = DateTime.UtcNow, ProcessTime = new TimeSpan(0), ComplianceYear = 2016, HasAnnualCharge = false }; model.MemberUploads.Add(memberUpload); return(memberUpload); }
/// <summary> /// Creates a producer associated with the specified member upload. /// The producer's business will not be populated. I.e. The producer is a sole trader. /// </summary> /// <param name="memberUpload"></param> /// <returns></returns> public ProducerSubmission CreateProducerAsSoleTrader(MemberUpload memberUpload, string registrationNumber, string obligationType) { return CreateProducerWithEmptyBusiness(memberUpload, registrationNumber, "B2B"); }
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; }
/// <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 not be populated. I.e. The producer is a sole trader. /// </summary> /// <param name="memberUpload"></param> /// <returns></returns> public ProducerSubmission CreateProducerAsSoleTrader(MemberUpload memberUpload, string registrationNumber) { return CreateProducerAsSoleTrader(memberUpload, registrationNumber, "B2B"); }
/// <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; }
/// <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) { return CreateProducerAsPartnership(memberUpload, registrationNumber, "B2B"); }
/// <summary> /// Creates memberupload errors and warnings /// </summary> /// <param name="memberUpload"></param> /// <returns></returns> public MemberUploadError CreateMemberUploadError(MemberUpload memberUpload) { int memberUploadErrorId = GetNextId(); MemberUploadError memberUploadError = new MemberUploadError { Id = IntegerToGuid(memberUploadErrorId), MemberUploadId = memberUpload.Id, ErrorLevel = ErrorLevel.Warning.Value, ErrorType = UploadErrorType.Business.Value, Description = "Test Warning" }; model.MemberUploadErrors.Add(memberUploadError); return memberUploadError; }
/// <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) { return CreateProducerAsCompany(memberUpload, registrationNumber, "B2B"); }
/// <summary> /// Creates a member upload associated with the specified scheme. /// After creation, the ComplianceYear and IsSubmitted properties /// should be explicitly set by the test. /// </summary> /// <param name="scheme"></param> /// <returns></returns> public MemberUpload CreateMemberUpload(Scheme scheme) { int memberUploadId = GetNextId(); MemberUpload memberUpload = new MemberUpload { Id = IntegerToGuid(memberUploadId), OrganisationId = scheme.OrganisationId, Organisation = scheme.Organisation, Scheme = scheme, SchemeId = scheme.Id, Data = string.Format("<memberUpload{0} />", memberUploadId), CreatedById = GetOrCreateUser("Testuser").Id, CreatedDate = DateTime.UtcNow, ProcessTime = new TimeSpan(0), ComplianceYear = 2016 }; model.MemberUploads.Add(memberUpload); return memberUpload; }
/// <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) { return(CreateProducerAsCompany(memberUpload, registrationNumber, "B2B")); }
/// <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) { return(CreateProducerAsPartnership(memberUpload, registrationNumber, "B2B")); }
/// <summary> /// Creates a producer associated with the specified member upload. /// The producer's business will not be populated. I.e. The producer is a sole trader. /// </summary> /// <param name="memberUpload"></param> /// <returns></returns> public ProducerSubmission CreateProducerAsSoleTrader(MemberUpload memberUpload, string registrationNumber) { return(CreateProducerAsSoleTrader(memberUpload, registrationNumber, "B2B")); }
/// <summary> /// Creates a producer associated with the specified member upload. /// The producer's business will not be populated. I.e. The producer is a sole trader. /// </summary> /// <param name="memberUpload"></param> /// <returns></returns> public ProducerSubmission CreateProducerAsSoleTrader(MemberUpload memberUpload, string registrationNumber, string obligationType) { return(CreateProducerWithEmptyBusiness(memberUpload, registrationNumber, "B2B")); }