Exemple #1
0
        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);
            }
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        /// <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;
        }
Exemple #17
0
 /// <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"));
 }
Exemple #18
0
 /// <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"));
 }
Exemple #19
0
 /// <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"));
 }
Exemple #20
0
 /// <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"));
 }