public void ShouldErrorWithTagsInOverseasAddress()
        {
            // Arrange
            var model = new AddressExtended()
            {
                OverseasAddress = StringWithTags
            };

            // Act
            var result = _sut.TestValidate(model);

            // Assert
            result.ShouldHaveValidationErrorFor(x => x.OverseasAddress).WithErrorCode(ErrorCodes.XssCheckFailure);
        }
        public void ShouldNotErrorValidOverseasAddress(string address)
        {
            // Arrange
            var model = new AddressExtended()
            {
                OverseasAddress = address
            };

            // Act
            var result = _sut.TestValidate(model);

            // Assert
            result.ShouldNotHaveValidationErrorFor(x => x.OverseasAddress);
        }
        public void ShouldNotErrorValidUPRN(string uprn)
        {
            // Arrange
            var model = new AddressExtended()
            {
                UPRN = uprn
            };

            // Act
            var result = _sut.TestValidate(model);

            // Arrange
            result.ShouldNotHaveValidationErrorFor(x => x.UPRN);
        }
        public void ShouldNotValidateAddressLine1WhenAddressTypeIsNotAddress()
        {
            // Arrange
            var model = new AddressExtended()
            {
                AddressLine1 = "",
            };

            // Act
            var result = _sut.TestValidate(model);

            // Assert
            result.ShouldNotHaveValidationErrorFor(x => x.AddressLine1);
        }
        public void ShouldNotValidatePostCodeWhenAddressTypeIsNotAddress()
        {
            // Arrange
            var model = new AddressExtended()
            {
                PostCode = ""
            };

            // Act
            var result = _sut.TestValidate(model);

            // Assert
            result.ShouldNotHaveValidationErrorFor(x => x.PostCode);
        }
        public void ShouldErrorPostCodeWhenAddressTypeIsAddress(string postCode)
        {
            // Arrange
            _sut = new AddressExtendedValidator(ContactType.address);

            var model = new AddressExtended()
            {
                PostCode = postCode
            };

            // Act
            var result = _sut.TestValidate(model);

            // Assert
            result.ShouldHaveValidationErrorFor(x => x.PostCode);
        }
        public void ShouldErrorAddressLine1WhenAddressTypeIsAddress(string address)
        {
            // Arrange
            _sut = new AddressExtendedValidator(ContactType.address);

            var model = new AddressExtended()
            {
                AddressLine1 = address
            };

            // Act
            var result = _sut.TestValidate(model);

            // Assert
            result.ShouldHaveValidationErrorFor(x => x.AddressLine1);
        }
        public void ShouldErrorWithTagsInAddressLineFields()
        {
            // Arrange
            var model = new AddressExtended()
            {
                AddressLine1 = StringWithTags,
                AddressLine2 = StringWithTags,
                AddressLine3 = StringWithTags,
                AddressLine4 = StringWithTags
            };

            // Act
            var result = _sut.TestValidate(model);

            // Assert
            result.ShouldHaveValidationErrorFor(x => x.AddressLine1).WithErrorCode(ErrorCodes.XssCheckFailure);
            result.ShouldHaveValidationErrorFor(x => x.AddressLine2).WithErrorCode(ErrorCodes.XssCheckFailure);
            result.ShouldHaveValidationErrorFor(x => x.AddressLine3).WithErrorCode(ErrorCodes.XssCheckFailure);
            result.ShouldHaveValidationErrorFor(x => x.AddressLine4).WithErrorCode(ErrorCodes.XssCheckFailure);
        }