示例#1
0
        public void Evaluate_Amend_MatchingProducerNotACompany_ReturnsPass()
        {
            // Arrange
            string companyNumber = "1234";

            var newProducer = new producerType()
            {
                status           = statusType.A,
                registrationNo   = "prn",
                producerBusiness = new producerBusinessType()
                {
                    Item = new companyType()
                    {
                        companyNumber = companyNumber
                    }
                }
            };

            var existingProducer = FakeProducer.Create(ObligationType.Both, "prn",
                                                       producerBusiness: new ProducerBusiness(partnership: new Partnership("PartnerShip", A.Dummy <ProducerContact>(), new List <Partner>())));

            A.CallTo(() => producerQuerySet.GetLatestProducerFromPreviousComplianceYears("prn"))
            .Returns(existingProducer);

            // Act
            var result = new CompanyRegistrationNumberChange(producerQuerySet)
                         .Evaluate(newProducer);

            // Assert
            A.CallTo(() => producerQuerySet.GetLatestProducerFromPreviousComplianceYears("prn"))
            .MustHaveHappened();

            Assert.True(result.IsValid);
        }
示例#2
0
        public void Evaluate_Amend_MatchingCompanyNumbersAfterFormatting_ReturnsPass(string newCompanyNumber, string existingCompanyNumber)
        {
            // Arrange
            var newProducer = new producerType()
            {
                status           = statusType.A,
                registrationNo   = "prn",
                producerBusiness = new producerBusinessType()
                {
                    Item = new companyType()
                    {
                        companyNumber = newCompanyNumber
                    }
                }
            };

            var existingProducer = FakeProducer.Create(ObligationType.Both, "prn",
                                                       producerBusiness: new ProducerBusiness(new Company("Company", existingCompanyNumber, null)));

            A.CallTo(() => producerQuerySet.GetLatestProducerFromPreviousComplianceYears("prn"))
            .Returns(existingProducer);

            // Act
            var result = new CompanyRegistrationNumberChange(producerQuerySet)
                         .Evaluate(newProducer);

            // Assert
            Assert.True(result.IsValid);
        }
        ProducerRegisteredMatchesComplianceYearAndObligationType_ButRegistrationNumberIsNullOrEmpty_ValidationSucceeds
            (string registrationNumber)
        {
            const string             complianceYear = "2016";
            const obligationTypeType obligationType = obligationTypeType.B2B;

            A.CallTo(() => producerQuerySet.GetProducerForOtherSchemeAndObligationType(A <string> ._, A <string> ._, A <Guid> ._, A <ObligationType> ._))
            .Returns(FakeProducer.Create(obligationType.ToDomainObligationType(), registrationNumber));

            producerType producer = new producerType()
            {
                tradingName      = "Test Trader",
                obligationType   = obligationType,
                producerBusiness = new producerBusinessType
                {
                    Item = new partnershipType
                    {
                        partnershipName = "New Producer Name"
                    }
                }
            };

            schemeType scheme = new schemeType()
            {
                complianceYear = complianceYear,
                producerList   = new[]
                {
                    producer
                }
            };
            var result = Rule().Evaluate(scheme, producer, A.Dummy <Guid>());

            Assert.True(result.IsValid);
        }
        public void Evaluate_Insert_MatchingCompanyRegistrationNumber_DoesNotPerformMigratedProducerCompanyRegistrationNumberCheck()
        {
            string companyName   = "Test company name";
            string companyNumber = "1234";

            var newProducer = new producerType()
            {
                status           = statusType.I,
                producerBusiness = new producerBusinessType()
                {
                    Item = new companyType()
                    {
                        companyName = companyName, companyNumber = companyNumber
                    }
                }
            };

            var existingProducer = FakeProducer.Create(ObligationType.Both, "prn",
                                                       producerBusiness: new ProducerBusiness(new Company(companyName, companyNumber, null)));

            A.CallTo(() => producerQuerySet.GetLatestCompanyProducers()).Returns(new List <ProducerSubmission>()
            {
                existingProducer
            });

            new CompanyAlreadyRegistered(producerQuerySet, migratedProducerQuerySet).Evaluate(newProducer);

            A.CallTo(() => producerQuerySet.GetLatestCompanyProducers()).MustHaveHappened();
            A.CallTo(() => migratedProducerQuerySet.GetAllMigratedProducers()).MustNotHaveHappened();
        }
        public void Evaluate_Insert_MatchingCompanyRegistrationNumber_ReturnsError()
        {
            string companyNumber = "1234";

            var newProducer = new producerType()
            {
                status           = statusType.I,
                producerBusiness = new producerBusinessType()
                {
                    Item = new companyType()
                    {
                        companyNumber = companyNumber
                    }
                }
            };

            var existingProducer = FakeProducer.Create(ObligationType.Both, "prn",
                                                       producerBusiness: new ProducerBusiness(new Company("Company", companyNumber, null)));

            A.CallTo(() => producerQuerySet.GetLatestCompanyProducers()).Returns(new List <ProducerSubmission>()
            {
                existingProducer
            });

            var result = new CompanyAlreadyRegistered(producerQuerySet, migratedProducerQuerySet).Evaluate(newProducer);

            Assert.False(result.IsValid);
            Assert.Equal(Core.Shared.ErrorLevel.Error, result.ErrorLevel);
        }
示例#6
0
        public void Evaluate_Amend_MatchingProducerDifferentCompanyNumber_ReturnsWarning()
        {
            // Arrange
            var newProducer = new producerType()
            {
                status           = statusType.A,
                registrationNo   = "prn",
                producerBusiness = new producerBusinessType()
                {
                    Item = new companyType()
                    {
                        companyNumber = "1111"
                    }
                }
            };

            var existingProducer = FakeProducer.Create(ObligationType.Both, "prn",
                                                       producerBusiness: new ProducerBusiness(new Company("Company", "1234", null)));

            A.CallTo(() => producerQuerySet.GetLatestProducerFromPreviousComplianceYears("prn"))
            .Returns(existingProducer);

            // Act
            var result = new CompanyRegistrationNumberChange(producerQuerySet)
                         .Evaluate(newProducer);

            // Assert
            A.CallTo(() => producerQuerySet.GetLatestProducerFromPreviousComplianceYears("prn"))
            .MustHaveHappened();

            Assert.False(result.IsValid);
            Assert.Equal(Core.Shared.ErrorLevel.Warning, result.ErrorLevel);
        }
        public void Evaluate_Insert_NonMatchingCompanyNumbersAfterFormatting_ReturnsPass(string newCompanyNumber, string existingCompanyNumber)
        {
            var newProducer = new producerType()
            {
                status           = statusType.I,
                producerBusiness = new producerBusinessType()
                {
                    Item = new companyType()
                    {
                        companyNumber = newCompanyNumber
                    }
                }
            };

            var existingProducer = FakeProducer.Create(ObligationType.Both, "prn",
                                                       producerBusiness: new ProducerBusiness(new Company("Company", existingCompanyNumber, null)));

            A.CallTo(() => producerQuerySet.GetLatestCompanyProducers()).Returns(new List <ProducerSubmission>()
            {
                existingProducer
            });

            var result = new CompanyAlreadyRegistered(producerQuerySet, migratedProducerQuerySet).Evaluate(newProducer);

            Assert.True(result.IsValid);
        }
示例#8
0
            public void GivenMultipleSubscriptionsThenCallsEachSubscriberOnNextMessage()
            {
                var subscriber1 = new Mock <IObserver <string> >();
                var subscriber2 = new Mock <IObserver <string> >();
                var producer    = new FakeProducer();

                using (var target = new MessageBroker <string>(new[] { subscriber1.Object, subscriber2.Object }, new[] { producer }, new Mock <ILogger <ManagedObservable <string> > >().Object))
                    producer.Trigger();

                subscriber1.Verify(x => x.OnNext("test"), Times.Once);
                subscriber2.Verify(x => x.OnNext("test"), Times.Once);
            }
示例#9
0
        public void GetLatestProducerFromPreviousComplianceYears_PrnDoesNotMatch_ReturnsNull(string thisPrn, string existingPrn)
        {
            var producer = FakeProducer.Create(ObligationType.Both, existingPrn, Guid.NewGuid(), 2016);

            A.CallTo(() => currentProducersByRegistrationNumber.Run())
            .Returns(new Dictionary <string, List <ProducerSubmission> >
            {
                { existingPrn, new List <ProducerSubmission> {
                      producer
                  } }
            });

            var result = ProducerQuerySet().GetLatestProducerFromPreviousComplianceYears(thisPrn);

            Assert.Null(result);
        }
示例#10
0
        public void Insert_AndProducerExistsWithMatchingPrnInComplianceYearAndScheme_ReturnsPass()
        {
            A.CallTo(() => producerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .Returns(FakeProducer.Create(ObligationType.Both, "ABC12345"));

            var result = Rule().Evaluate(new schemeType(), new producerType
            {
                status           = statusType.I,
                producerBusiness = new producerBusinessType
                {
                    Item = new partnershipType
                    {
                        partnershipName = "New Producer Name"
                    }
                }
            }, A.Dummy <Guid>());

            Assert.True(result.IsValid);
        }
示例#11
0
        public void GetLatestProducerForComplianceYearAndScheme_ComplianceYearDoesNotMatch_ReturnsNull(int thisComplianceYear, int existingComplianceYear)
        {
            var schemeOrganisationId = Guid.NewGuid();
            var registrationNumber   = "ABC12345";

            var producer = FakeProducer.Create(ObligationType.Both, registrationNumber, schemeOrganisationId, existingComplianceYear);

            A.CallTo(() => currentProducersByRegistrationNumber.Run())
            .Returns(new Dictionary <string, List <ProducerSubmission> >
            {
                { registrationNumber, new List <ProducerSubmission> {
                      producer
                  } }
            });

            var result = ProducerQuerySet().GetLatestProducerForComplianceYearAndScheme(registrationNumber, thisComplianceYear.ToString(), schemeOrganisationId);

            Assert.Null(result);
        }
示例#12
0
        public void GetLatestProducerForComplianceYearAndScheme_PrnDoesNotMatch_ReturnsNull(string thisPrn, string existingPrn)
        {
            var schemeOrganisationId = Guid.NewGuid();
            var complianceYear       = 2016;

            var producer = FakeProducer.Create(ObligationType.Both, existingPrn, schemeOrganisationId, complianceYear);

            A.CallTo(() => currentProducersByRegistrationNumber.Run())
            .Returns(new Dictionary <string, List <ProducerSubmission> >
            {
                { existingPrn, new List <ProducerSubmission> {
                      producer
                  } }
            });

            var result = ProducerQuerySet().GetLatestProducerForComplianceYearAndScheme(thisPrn, complianceYear.ToString(), schemeOrganisationId);

            Assert.Null(result);
        }
示例#13
0
        GetLatestProducerFromPreviousComplianceYears_TwoProducerEntriesIn2015_ReturnsLatestProducerByUploadDate()
        {
            const string prn = "ABC12345";

            var oldestProducer = FakeProducer.Create(ObligationType.Both, prn, Guid.NewGuid(), 2015);
            var newestProducer = FakeProducer.Create(ObligationType.Both, prn, Guid.NewGuid(), 2015);

            A.CallTo(() => currentProducersByRegistrationNumber.Run())
            .Returns(new Dictionary <string, List <ProducerSubmission> >
            {
                { prn, new List <ProducerSubmission> {
                      oldestProducer, newestProducer
                  } },
            });

            var result = ProducerQuerySet().GetLatestProducerFromPreviousComplianceYears(prn);

            Assert.Equal(newestProducer, result);
        }
示例#14
0
        public void Should_read_entire_request_body_when_there_is_a_continuation()
        {
            var requestBody             = Encoding.ASCII.GetBytes("This is some request body content");
            var fakeRequestBodyDelegate = new FakeProducer(true, requestBody, 5, false);

            this.environment["owin.RequestBody"] = (BodyDelegate)fakeRequestBodyDelegate;
            Request request = null;

            A.CallTo(() => this.fakeEngine.HandleRequest(A <Request> .Ignored, A <Action <NancyContext> > .Ignored, A <Action <Exception> > .Ignored))
            .Invokes(i => request = (Request)i.Arguments[0]);

            this.host.ProcessRequest(environment, fakeResponseCallback, fakeErrorCallback);
            fakeRequestBodyDelegate.SendAll();

            var read   = new StreamReader(request.Body);
            var output = read.ReadToEnd();

            output.ShouldEqual("This is some request body content");
        }
示例#15
0
        public void GetLatestProducerFromCurrentComplianceYearForAnotherSchemeSameObligationType_ReturnsAnotherSchemeProducer()
        {
            const string prn                   = "ABC12345";
            Guid         schemeOrgId           = Guid.NewGuid();
            var          anotherSchemeProducer = FakeProducer.Create(ObligationType.B2B, prn, schemeOrgId, 2016);
            var          currentSchemeProducer = FakeProducer.Create(ObligationType.B2B, prn, Guid.NewGuid(), 2016);

            A.CallTo(() => currentProducersByRegistrationNumber.Run())
            .Returns(new Dictionary <string, List <ProducerSubmission> >
            {
                { prn, new List <ProducerSubmission> {
                      anotherSchemeProducer, currentSchemeProducer
                  } }
            });

            var result = ProducerQuerySet().GetProducerForOtherSchemeAndObligationType(prn, "2016", schemeOrgId, ObligationType.B2B);

            Assert.Equal(anotherSchemeProducer, result);
        }
示例#16
0
        public void GetLatestProducerForComplianceYearAndScheme_AllParametersMatch_ReturnsProducer()
        {
            var schemeOrganisationId = Guid.NewGuid();
            var registrationNumber   = "ABC12345";
            var complianceYear       = 2016;

            var producer = FakeProducer.Create(ObligationType.Both, registrationNumber, schemeOrganisationId, complianceYear);

            A.CallTo(() => currentProducersByRegistrationNumber.Run())
            .Returns(new Dictionary <string, List <ProducerSubmission> >
            {
                { registrationNumber, new List <ProducerSubmission> {
                      producer
                  } }
            });

            var result = ProducerQuerySet().GetLatestProducerForComplianceYearAndScheme(registrationNumber, complianceYear.ToString(), schemeOrganisationId);

            Assert.Equal(producer, result);
        }
示例#17
0
        GetProducerForOtherSchemeAndObligationType_ProducerExistsInOtherSchemesWithB2bAndB2cObligationTypes_ReturnsProducer(ObligationType obligationType)
        {
            const string prn = "ABC12345";

            var producer1 = FakeProducer.Create(ObligationType.B2B, prn, Guid.NewGuid());
            var producer2 = FakeProducer.Create(ObligationType.B2C, prn, Guid.NewGuid());

            A.CallTo(() => currentProducersByRegistrationNumber.Run())
            .Returns(new Dictionary <string, List <ProducerSubmission> >
            {
                { prn, new List <ProducerSubmission> {
                      producer1, producer2
                  } }
            });

            var result = ProducerQuerySet()
                         .GetProducerForOtherSchemeAndObligationType(prn, "2016", Guid.NewGuid(), obligationType);

            Assert.NotNull(result);
        }
示例#18
0
        public void Amendment_AndProducerExistsWithMatchingPrnInPreviousComplianceYear_ReturnsFailAsWarning_AndIncludesProducerNamesInErrorMessage()
        {
            A.CallTo(() => producerQuerySet.GetLatestProducerFromPreviousComplianceYears(A <string> ._))
            .Returns(FakeProducer.Create(ObligationType.Both, "ABC12345"));

            var result = Rule().Evaluate(new schemeType(), new producerType
            {
                status           = statusType.A,
                producerBusiness = new producerBusinessType
                {
                    Item = new partnershipType
                    {
                        partnershipName = "New Producer Name"
                    }
                }
            }, A.Dummy <Guid>());

            Assert.False(result.IsValid);
            Assert.Equal(Core.Shared.ErrorLevel.Warning, result.ErrorLevel);
        }
        ProducerAlreadyRegisteredForSameComplianceYearAndObligationType_ValidationFails_AndMessageIncludesPrnAndObligationType_AndErrorLevelIsError
            (obligationTypeType existingObligationType, obligationTypeType xmlObligationType)
        {
            var schemeId = Guid.NewGuid();

            A.CallTo(() => producerQuerySet.GetProducerForOtherSchemeAndObligationType(A <string> ._, A <string> ._, schemeId, A <ObligationType> ._))
            .Returns(FakeProducer.Create(existingObligationType.ToDomainObligationType(), "ABC12345"));

            const string complianceYear     = "2016";
            const string registrationNumber = "ABC12345";

            var producer = new producerType()
            {
                tradingName      = "Test Trader",
                obligationType   = xmlObligationType,
                registrationNo   = registrationNumber,
                status           = statusType.A,
                producerBusiness = new producerBusinessType
                {
                    Item = new partnershipType
                    {
                        partnershipName = "New Producer Name"
                    }
                }
            };

            schemeType scheme = new schemeType()
            {
                complianceYear = complianceYear,
                producerList   = new[]
                {
                    producer
                }
            };
            var result = Rule().Evaluate(scheme, producer, schemeId);

            Assert.False(result.IsValid);
            Assert.Contains(registrationNumber, result.Message);
            Assert.Contains(existingObligationType.ToDomainObligationType().ToString(), result.Message);
            Assert.Equal(Core.Shared.ErrorLevel.Error, result.ErrorLevel);
        }
示例#20
0
        GetProducerForOtherSchemeAndObligationType_ProducerForAnotherSchemeHasMatchingObligationType_ReturnsProducer(
            ObligationType existingProducerObligationType, ObligationType obligationType)
        {
            const string prn = "ABC12345";
            var          schemeOrgansationId = Guid.NewGuid();

            var producer = FakeProducer.Create(existingProducerObligationType, prn, Guid.NewGuid());

            A.CallTo(() => currentProducersByRegistrationNumber.Run())
            .Returns(new Dictionary <string, List <ProducerSubmission> >
            {
                { prn, new List <ProducerSubmission> {
                      producer
                  } }
            });

            var result = ProducerQuerySet()
                         .GetProducerForOtherSchemeAndObligationType(prn, "2016", schemeOrgansationId, obligationType);

            Assert.NotNull(result);
        }
示例#21
0
        public void Evaluate_Amend_NonMatchingEmptyCompanyRegistrationNumber_WarningMessage_ContainsProducerNameAndOldCompanyRegistrationNumberOnly()
        {
            // Arrange
            string registrationNumber    = "prn";
            string existingCompanyName   = "Existing company name";
            string existingCompanyNumber = "1234";
            string newCompanyNumber      = "000";

            var newProducer = new producerType()
            {
                status           = statusType.A,
                registrationNo   = registrationNumber,
                producerBusiness = new producerBusinessType()
                {
                    Item = new companyType()
                    {
                        companyName = "new company name", companyNumber = newCompanyNumber
                    }
                }
            };

            var existingProducer = FakeProducer.Create(ObligationType.Both, registrationNumber,
                                                       producerBusiness: new ProducerBusiness(new Company(existingCompanyName, existingCompanyNumber, null)));

            A.CallTo(() => producerQuerySet.GetLatestProducerFromPreviousComplianceYears(registrationNumber))
            .Returns(existingProducer);

            // Act
            var result = new CompanyRegistrationNumberChange(producerQuerySet)
                         .Evaluate(newProducer);

            // Assert
            Assert.False(result.IsValid);
            Assert.Equal(Core.Shared.ErrorLevel.Warning, result.ErrorLevel);
            Assert.Contains(existingCompanyName, result.Message);
            Assert.Contains(registrationNumber, result.Message);
            Assert.Contains(existingCompanyNumber, result.Message);
            Assert.DoesNotContain(newCompanyNumber, result.Message);
        }
        public void ProducerRegisteredForSameComplianceYearAndObligationTypeButPartOfSameScheme_ValidationSucceeds()
        {
            const string             complianceYear     = "2016";
            const string             registrationNumber = "ABC12345";
            var                      organisationId     = Guid.NewGuid();
            const obligationTypeType obligationType     = obligationTypeType.B2B;

            A.CallTo(() => producerQuerySet.GetProducerForOtherSchemeAndObligationType(A <string> ._, A <string> ._, A <Guid> ._, A <ObligationType> ._))
            .Returns(FakeProducer.Create(obligationType.ToDomainObligationType(), "ABC12345", organisationId));

            producerType producer = new producerType()
            {
                tradingName      = "Test Trader",
                obligationType   = obligationType,
                registrationNo   = registrationNumber,
                status           = statusType.I,
                producerBusiness = new producerBusinessType
                {
                    Item = new partnershipType
                    {
                        partnershipName = "New Producer Name"
                    }
                }
            };

            schemeType scheme = new schemeType()
            {
                complianceYear = complianceYear,
                approvalNo     = "Test approval number 1",
                producerList   = new[]
                {
                    producer
                }
            };
            var result = Rule().Evaluate(scheme, producer, A.Dummy <Guid>());

            Assert.True(result.IsValid);
        }
        public void ProducerAlreadyRegisteredForSameComplianceYearButObligationTypeDiffers_ValidationSucceeds(
            obligationTypeType existingObligationType, obligationTypeType xmlObligationType)
        {
            A.CallTo(() => producerQuerySet.GetProducerForOtherSchemeAndObligationType(A <string> ._, A <string> ._, A <Guid> ._, A <ObligationType> ._))
            .Returns(FakeProducer.Create(existingObligationType.ToDomainObligationType(), "ABC12345"));

            const string complianceYear     = "2016";
            const string registrationNumber = "ABC12345";

            producerType producer = new producerType()
            {
                tradingName      = "Test Trader",
                obligationType   = xmlObligationType,
                registrationNo   = registrationNumber,
                status           = statusType.I,
                producerBusiness = new producerBusinessType
                {
                    Item = new partnershipType
                    {
                        partnershipName = "New Producer Name"
                    }
                }
            };

            schemeType scheme = new schemeType()
            {
                complianceYear = complianceYear,
                producerList   = new[]
                {
                    producer
                }
            };
            var result = Rule().Evaluate(scheme, producer, A.Dummy <Guid>());

            Assert.True(result.IsValid);
        }
示例#24
0
        public void Should_read_entire_request_body_when_there_is_a_continuation()
        {
            var requestBody = Encoding.ASCII.GetBytes("This is some request body content");
            var fakeRequestBodyDelegate = new FakeProducer(true, requestBody, 5, false);
            this.environment["owin.RequestBody"] = (BodyDelegate)fakeRequestBodyDelegate;
            Request request = null;
            A.CallTo(() => this.fakeEngine.HandleRequest(A<Request>.Ignored, A<Action<NancyContext>>.Ignored, A<Action<Exception>>.Ignored))
                .Invokes(i => request = (Request)i.Arguments[0]);

            this.host.ProcessRequest(environment, fakeResponseCallback, fakeErrorCallback);
            fakeRequestBodyDelegate.SendAll();

            var read = new StreamReader(request.Body);
            var output = read.ReadToEnd();
            output.ShouldEqual("This is some request body content");
        }