public void Evaluate_ProducerHasOverseasContactInFrance_Passes()
        {
            // Arrange
            EnsureAnOverseasProducerIsNotBasedInTheUK rule = new EnsureAnOverseasProducerIsNotBasedInTheUK();

            addressType address = new addressType();

            address.country = countryType.FRANCE;

            contactDetailsType overseasContact = new contactDetailsType();

            overseasContact.address = address;

            overseasProducerType overseasProducer = new overseasProducerType();

            overseasProducer.overseasContact = overseasContact;

            authorisedRepresentativeType authorisedRepresentative = new authorisedRepresentativeType();

            authorisedRepresentative.overseasProducer = overseasProducer;

            producerType producer = new producerType();

            producer.authorisedRepresentative = authorisedRepresentative;

            // Act
            RuleResult result = rule.Evaluate(producer);

            // Assert
            Assert.Equal(true, result.IsValid);
        }
        public void Evaluate_ProducerHasOverseaseContactInEngland_FailsWithError()
        {
            // Arrange
            EnsureAnOverseasProducerIsNotBasedInTheUK rule = new EnsureAnOverseasProducerIsNotBasedInTheUK();

            addressType address = new addressType();

            address.country = countryType.UKENGLAND;

            contactDetailsType overseasContact = new contactDetailsType();

            overseasContact.address = address;

            overseasProducerType overseasProducer = new overseasProducerType();

            overseasProducer.overseasContact = overseasContact;

            authorisedRepresentativeType authorisedRepresentative = new authorisedRepresentativeType();

            authorisedRepresentative.overseasProducer = overseasProducer;

            producerType producer = new producerType();

            producer.authorisedRepresentative = authorisedRepresentative;

            // Act
            RuleResult result = rule.Evaluate(producer);

            // Assert
            Assert.Equal(false, result.IsValid);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
        }
예제 #3
0
        public async Task <ProducerContact> GetProducerContact(contactDetailsType contactDetails)
        {
            var countryName = GetCountryName(contactDetails.address.country);
            var country     = await dataAccess.GetCountry(countryName);

            ProducerAddress address = new ProducerAddress(
                contactDetails.address.primaryName,
                contactDetails.address.secondaryName,
                contactDetails.address.streetName,
                contactDetails.address.town,
                contactDetails.address.locality,
                contactDetails.address.administrativeArea,
                country,
                contactDetails.address.Item);

            ProducerContact contact = new ProducerContact(
                contactDetails.title,
                contactDetails.forename,
                contactDetails.surname,
                contactDetails.phoneLandLine,
                contactDetails.phoneMobile,
                contactDetails.fax,
                contactDetails.email,
                address);

            return(contact);
        }
예제 #4
0
        public async void GetProducerContact_ReturnsContactWithCorrectAddressDetails()
        {
            string      primary            = "Primary";
            string      secondary          = "Secondary";
            string      street             = "Street";
            string      locality           = "Locality";
            string      admimistrativeArea = "Area";
            string      postCode           = "WE3";
            countryType country            = countryType.UKENGLAND;
            string      countryName        = "UK - ENGLAND";

            var contact = new contactDetailsType()
            {
                address = new addressType()
                {
                    primaryName        = primary,
                    secondaryName      = secondary,
                    streetName         = street,
                    locality           = locality,
                    administrativeArea = admimistrativeArea,
                    Item    = postCode,
                    country = country
                }
            };

            var builder = new GenerateFromXmlBuilder();

            A.CallTo(() => builder.DataAccess.GetCountry(A <string> ._)).Returns(new Country(Guid.NewGuid(), countryName));

            var result = await builder.Build().GetProducerContact(contact);

            var resultAddress = result.Address;

            Assert.Equal(primary, resultAddress.PrimaryName);
            Assert.Equal(secondary, resultAddress.SecondaryName);
            Assert.Equal(street, resultAddress.Street);
            Assert.Equal(locality, resultAddress.Locality);
            Assert.Equal(admimistrativeArea, resultAddress.AdministrativeArea);
            Assert.Equal(postCode, resultAddress.PostCode);
            Assert.Equal(countryName, resultAddress.Country.Name);
        }
예제 #5
0
        public async void GetProducerContact_ReturnsContactWithIndividualDetails()
        {
            string title    = "title";
            string forename = "forename";
            string surname  = "surname";
            string landline = "987654";
            string mobile   = "12345";
            string fax      = "564";
            string email    = "[email protected]";

            var contact = new contactDetailsType()
            {
                address       = new addressType(),
                title         = title,
                forename      = forename,
                surname       = surname,
                phoneLandLine = landline,
                phoneMobile   = mobile,
                fax           = fax,
                email         = email
            };

            var builder = new GenerateFromXmlBuilder();

            A.CallTo(() => builder.DataAccess.GetCountry(A <string> ._)).Returns(new Country(Guid.NewGuid(), email));

            var result = await builder.Build().GetProducerContact(contact);

            Assert.Equal(title, result.Title);
            Assert.Equal(forename, result.ForeName);
            Assert.Equal(surname, result.SurName);
            Assert.Equal(landline, result.Telephone);
            Assert.Equal(mobile, result.Mobile);
            Assert.Equal(fax, result.Fax);
            Assert.Equal(email, result.Email);
        }
예제 #6
0
        public RuleResult Evaluate(producerType producer)
        {
            if (producer.authorisedRepresentative == null)
            {
                return(RuleResult.Pass());
            }

            if (producer.authorisedRepresentative.overseasProducer == null)
            {
                return(RuleResult.Pass());
            }

            if (producer.authorisedRepresentative.overseasProducer.overseasContact == null)
            {
                return(RuleResult.Pass());
            }

            contactDetailsType contact = producer.authorisedRepresentative.overseasProducer.overseasContact;

            switch (contact.address.country)
            {
            case countryType.UKENGLAND:
            case countryType.UKNORTHERNIRELAND:
            case countryType.UKSCOTLAND:
            case countryType.UKWALES:

                string errorMessage = string.Format(
                    "You have entered {0} {1} as an authorised representative of an organisation with a UK address. Authorised representatives cannot represent producers based in the UK. Review your file.",
                    producer.GetProducerName(), producer.registrationNo);

                return(RuleResult.Fail(errorMessage, Core.Shared.ErrorLevel.Error));

            default:
                return(RuleResult.Pass());
            }
        }
        public void Evaluate_ProducerHasOverseasContactInFrance_Passes()
        {
            // Arrange
            EnsureAnOverseasProducerIsNotBasedInTheUK rule = new EnsureAnOverseasProducerIsNotBasedInTheUK();

            addressType address = new addressType();
            address.country = countryType.FRANCE;

            contactDetailsType overseasContact = new contactDetailsType();
            overseasContact.address = address;

            overseasProducerType overseasProducer = new overseasProducerType();
            overseasProducer.overseasContact = overseasContact;

            authorisedRepresentativeType authorisedRepresentative = new authorisedRepresentativeType();
            authorisedRepresentative.overseasProducer = overseasProducer;

            producerType producer = new producerType();
            producer.authorisedRepresentative = authorisedRepresentative;

            // Act
            RuleResult result = rule.Evaluate(producer);

            // Assert
            Assert.Equal(true, result.IsValid);
        }
        public void Evaluate_ProducerHasOverseaseContactInEngland_FailsWithError()
        {
            // Arrange
            EnsureAnOverseasProducerIsNotBasedInTheUK rule = new EnsureAnOverseasProducerIsNotBasedInTheUK();

            addressType address = new addressType();
            address.country = countryType.UKENGLAND;

            contactDetailsType overseasContact = new contactDetailsType();
            overseasContact.address = address;

            overseasProducerType overseasProducer = new overseasProducerType();
            overseasProducer.overseasContact = overseasContact;

            authorisedRepresentativeType authorisedRepresentative = new authorisedRepresentativeType();
            authorisedRepresentative.overseasProducer = overseasProducer;

            producerType producer = new producerType();
            producer.authorisedRepresentative = authorisedRepresentative;

            // Act
            RuleResult result = rule.Evaluate(producer);

            // Assert
            Assert.Equal(false, result.IsValid);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
        }
        public async void GetProducerContact_ReturnsContactWithIndividualDetails()
        {
            string title = "title";
            string forename = "forename";
            string surname = "surname";
            string landline = "987654";
            string mobile = "12345";
            string fax = "564";
            string email = "[email protected]";

            var contact = new contactDetailsType()
            {
                address = new addressType(),
                title = title,
                forename = forename,
                surname = surname,
                phoneLandLine = landline,
                phoneMobile = mobile,
                fax = fax,
                email = email
            };

            var builder = new GenerateFromXmlBuilder();
            A.CallTo(() => builder.DataAccess.GetCountry(A<string>._)).Returns(new Country(Guid.NewGuid(), email));

            var result = await builder.Build().GetProducerContact(contact);

            Assert.Equal(title, result.Title);
            Assert.Equal(forename, result.ForeName);
            Assert.Equal(surname, result.SurName);
            Assert.Equal(landline, result.Telephone);
            Assert.Equal(mobile, result.Mobile);
            Assert.Equal(fax, result.Fax);
            Assert.Equal(email, result.Email);
        }
        public async void GetProducerContact_ReturnsContactWithCorrectAddressDetails()
        {
            string primary = "Primary";
            string secondary = "Secondary";
            string street = "Street";
            string locality = "Locality";
            string admimistrativeArea = "Area";
            string postCode = "WE3";
            countryType country = countryType.UKENGLAND;
            string countryName = "UK - ENGLAND";

            var contact = new contactDetailsType()
            {
                address = new addressType()
                {
                    primaryName = primary,
                    secondaryName = secondary,
                    streetName = street,
                    locality = locality,
                    administrativeArea = admimistrativeArea,
                    Item = postCode,
                    country = country
                }
            };

            var builder = new GenerateFromXmlBuilder();
            A.CallTo(() => builder.DataAccess.GetCountry(A<string>._)).Returns(new Country(Guid.NewGuid(), countryName));

            var result = await builder.Build().GetProducerContact(contact);
            var resultAddress = result.Address;

            Assert.Equal(primary, resultAddress.PrimaryName);
            Assert.Equal(secondary, resultAddress.SecondaryName);
            Assert.Equal(street, resultAddress.Street);
            Assert.Equal(locality, resultAddress.Locality);
            Assert.Equal(admimistrativeArea, resultAddress.AdministrativeArea);
            Assert.Equal(postCode, resultAddress.PostCode);
            Assert.Equal(countryName, resultAddress.Country.Name);
        }
예제 #11
0
        public async Task<ProducerContact> GetProducerContact(contactDetailsType contactDetails)
        {
            var countryName = GetCountryName(contactDetails.address.country);
            var country = await dataAccess.GetCountry(countryName);

            ProducerAddress address = new ProducerAddress(
                contactDetails.address.primaryName,
                contactDetails.address.secondaryName,
                contactDetails.address.streetName,
                contactDetails.address.town,
                contactDetails.address.locality,
                contactDetails.address.administrativeArea,
                country,
                contactDetails.address.Item);

            ProducerContact contact = new ProducerContact(
                contactDetails.title,
                contactDetails.forename,
                contactDetails.surname,
                contactDetails.phoneLandLine,
                contactDetails.phoneMobile,
                contactDetails.fax,
                contactDetails.email,
                address);

            return contact;
        }