public async Task Validate_WithValidPRN_ButIncorrectProducerDetails_ReturnsExpectedErrors()
        {
            // Arrange
            var builder = new EeeValidatorBuilder();
            builder.Year = 2016;

            // Setup producer that exists in scheme for compliance year
            var prn = "Test PRN";
            var producerName = "Test Producer Name";
            var obligationType = ObligationType.B2C;

            var producerSubmission = A.Fake<ProducerSubmission>();
            A.CallTo(() => producerSubmission.OrganisationName)
                .Returns(producerName);

            var producer = A.Fake<RegisteredProducer>(x => x.WithArgumentsForConstructor(() => new RegisteredProducer(prn, 2016, builder.Scheme)));
            A.CallTo(() => producer.CurrentSubmission)
                .Returns(producerSubmission);
            A.CallTo(() => producerSubmission.ObligationType)
                .Returns(obligationType);

            A.CallTo(() => builder.DataAccess.GetRegisteredProducer(prn))
                .Returns(producer);

            // Act
            var errors = await builder.InvokeValidate(prn, "Incorrect Name", ObligationType.B2B);

            // Assert
            Assert.Equal(2, errors.Count);
        }
Example #2
0
        public async Task Validate_WithValidPRN_ButIncorrectProducerDetails_ReturnsExpectedErrors()
        {
            // Arrange
            var builder = new EeeValidatorBuilder();

            builder.Year = 2016;

            // Setup producer that exists in scheme for compliance year
            var prn            = "Test PRN";
            var producerName   = "Test Producer Name";
            var obligationType = ObligationType.B2C;

            var producerSubmission = A.Fake <ProducerSubmission>();

            A.CallTo(() => producerSubmission.OrganisationName)
            .Returns(producerName);

            var producer = A.Fake <RegisteredProducer>(x => x.WithArgumentsForConstructor(() => new RegisteredProducer(prn, 2016, builder.Scheme)));

            A.CallTo(() => producer.CurrentSubmission)
            .Returns(producerSubmission);
            A.CallTo(() => producerSubmission.ObligationType)
            .Returns(obligationType);

            A.CallTo(() => builder.DataAccess.GetRegisteredProducer(prn))
            .Returns(producer);

            // Act
            var errors = await builder.InvokeValidate(prn, "Incorrect Name", ObligationType.B2B);

            // Assert
            Assert.Equal(2, errors.Count);
        }
Example #3
0
        public void ValidateProducerObligationType_WithIncorrectObligationType_ReturnsError(ObligationType registeredObligationType, ObligationType eeeObligationType)
        {
            // Arrange
            var builder = new EeeValidatorBuilder();

            var producerSubmission = A.Fake <ProducerSubmission>();

            A.CallTo(() => producerSubmission.ObligationType)
            .Returns(registeredObligationType);

            var registeredProducer = A.Fake <RegisteredProducer>();

            A.CallTo(() => registeredProducer.CurrentSubmission)
            .Returns(producerSubmission);

            // Act
            var error = builder.Build().ValidateProducerObligationType(registeredProducer, "PRN1234", "TestProducerName", eeeObligationType);

            // Assert
            Assert.NotNull(error);
            Assert.Equal(ErrorLevel.Error, error.ErrorLevel);
            Assert.Contains("for one or more categories but is only registered for", error.Description);
            Assert.Contains("PRN1234", error.Description);
            Assert.Contains("TestProducerName", error.Description);
            Assert.Contains(eeeObligationType.ToString(), error.Description);
            Assert.Contains(registeredObligationType.ToString(), error.Description);
        }
Example #4
0
        public void ValidateProducerName_WithIncorrectProducerName_ReturnsError()
        {
            // Arrange
            var builder = new EeeValidatorBuilder();

            builder.Year = 2016;

            var producerSubmission = A.Fake <ProducerSubmission>();

            A.CallTo(() => producerSubmission.OrganisationName)
            .Returns("ProducerName123");

            var registeredProducer = A.Fake <RegisteredProducer>();

            A.CallTo(() => registeredProducer.CurrentSubmission)
            .Returns(producerSubmission);

            // Act
            var error = builder.Build().ValidateProducerName(registeredProducer, "PRN1234", "IncorrectProducerName");

            // Assert
            Assert.NotNull(error);
            Assert.Equal(ErrorLevel.Error, error.ErrorLevel);
            Assert.Contains("does not match the registered producer name of", error.Description);
            Assert.Contains("ProducerName123", error.Description);
            Assert.Contains("IncorrectProducerName", error.Description);
            Assert.Contains("PRN1234", error.Description);
            Assert.Contains("2016", error.Description);
        }
Example #5
0
        public void ValidateProducerObligationType_WithCorrectObligationType_DoesNotReturnError(ObligationType registeredObligationType, ObligationType eeeObligationType)
        {
            // Arrange
            var builder = new EeeValidatorBuilder();

            var producerSubmission = A.Fake <ProducerSubmission>();

            A.CallTo(() => producerSubmission.ObligationType)
            .Returns(registeredObligationType);

            var registeredProducer = A.Fake <RegisteredProducer>();

            A.CallTo(() => registeredProducer.CurrentSubmission)
            .Returns(producerSubmission);

            // Act
            var error = builder.Build().ValidateProducerObligationType(registeredProducer, A.Dummy <string>(), A.Dummy <string>(), eeeObligationType);

            // Assert
            Assert.Null(error);
        }
Example #6
0
        public async Task Validate_WithProducerNotRegisteredWithScheme_ReturnsError()
        {
            // Arrange
            var builder = new EeeValidatorBuilder();

            builder.Year = 2016;

            var prn = "Non-existent PRN";

            A.CallTo(() => builder.DataAccess.GetRegisteredProducer(A <string> ._))
            .Returns((RegisteredProducer)null);

            // Act
            var errors = await builder.InvokeValidate(prn);

            // Assert
            Assert.Equal(1, errors.Count);
            ErrorData error = errors[0];

            Assert.Equal(ErrorLevel.Error, error.ErrorLevel);
            Assert.Contains(prn, error.Description);
            Assert.Contains("2016", error.Description);
        }
Example #7
0
        public void ValidateProducerName_WithProducerNamesDifferentCase_DoesNotReturnError()
        {
            // Arrange
            var builder = new EeeValidatorBuilder();

            builder.Year = 2016;

            var producerSubmission = A.Fake <ProducerSubmission>();

            A.CallTo(() => producerSubmission.OrganisationName)
            .Returns("producer name aaa");

            var registeredProducer = A.Fake <RegisteredProducer>();

            A.CallTo(() => registeredProducer.CurrentSubmission)
            .Returns(producerSubmission);

            // Act
            var error = builder.Build().ValidateProducerName(registeredProducer, A.Dummy <string>(), "Producer NamE AAA");

            // Assert
            Assert.Null(error);
        }
        public async Task Validate_WithProducerNotRegisteredWithScheme_ReturnsError()
        {
            // Arrange
            var builder = new EeeValidatorBuilder();
            builder.Year = 2016;

            var prn = "Non-existent PRN";

            A.CallTo(() => builder.DataAccess.GetRegisteredProducer(A<string>._))
                .Returns((RegisteredProducer)null);

            // Act
            var errors = await builder.InvokeValidate(prn);

            // Assert
            Assert.Equal(1, errors.Count);
            ErrorData error = errors[0];
            Assert.Equal(ErrorLevel.Error, error.ErrorLevel);
            Assert.Contains(prn, error.Description);
            Assert.Contains("2016", error.Description);
        }
        public void ValidateProducerObligationType_WithCorrectObligationType_DoesNotReturnError(ObligationType registeredObligationType, ObligationType eeeObligationType)
        {
            // Arrange
            var builder = new EeeValidatorBuilder();

            var producerSubmission = A.Fake<ProducerSubmission>();
            A.CallTo(() => producerSubmission.ObligationType)
                .Returns(registeredObligationType);

            var registeredProducer = A.Fake<RegisteredProducer>();
            A.CallTo(() => registeredProducer.CurrentSubmission)
                .Returns(producerSubmission);

            // Act
            var error = builder.Build().ValidateProducerObligationType(registeredProducer, A.Dummy<string>(), A.Dummy<string>(), eeeObligationType);

            // Assert
            Assert.Null(error);
        }
        public void ValidateProducerObligationType_WithIncorrectObligationType_ReturnsError(ObligationType registeredObligationType, ObligationType eeeObligationType)
        {
            // Arrange
            var builder = new EeeValidatorBuilder();

            var producerSubmission = A.Fake<ProducerSubmission>();
            A.CallTo(() => producerSubmission.ObligationType)
                .Returns(registeredObligationType);

            var registeredProducer = A.Fake<RegisteredProducer>();
            A.CallTo(() => registeredProducer.CurrentSubmission)
                .Returns(producerSubmission);

            // Act
            var error = builder.Build().ValidateProducerObligationType(registeredProducer, "PRN1234", "TestProducerName", eeeObligationType);

            // Assert
            Assert.NotNull(error);
            Assert.Equal(ErrorLevel.Error, error.ErrorLevel);
            Assert.Contains("for one or more categories but is only registered for", error.Description);
            Assert.Contains("PRN1234", error.Description);
            Assert.Contains("TestProducerName", error.Description);
            Assert.Contains(eeeObligationType.ToString(), error.Description);
            Assert.Contains(registeredObligationType.ToString(), error.Description);
        }
        public void ValidateProducerName_WithProducerNamesDifferentCase_DoesNotReturnError()
        {
            // Arrange
            var builder = new EeeValidatorBuilder();
            builder.Year = 2016;

            var producerSubmission = A.Fake<ProducerSubmission>();
            A.CallTo(() => producerSubmission.OrganisationName)
                .Returns("producer name aaa");

            var registeredProducer = A.Fake<RegisteredProducer>();
            A.CallTo(() => registeredProducer.CurrentSubmission)
                .Returns(producerSubmission);

            // Act
            var error = builder.Build().ValidateProducerName(registeredProducer, A.Dummy<string>(), "Producer NamE AAA");

            // Assert
            Assert.Null(error);
        }
        public void ValidateProducerName_WithIncorrectProducerName_ReturnsError()
        {
            // Arrange
            var builder = new EeeValidatorBuilder();
            builder.Year = 2016;

            var producerSubmission = A.Fake<ProducerSubmission>();
            A.CallTo(() => producerSubmission.OrganisationName)
                .Returns("ProducerName123");

            var registeredProducer = A.Fake<RegisteredProducer>();
            A.CallTo(() => registeredProducer.CurrentSubmission)
                .Returns(producerSubmission);

            // Act
            var error = builder.Build().ValidateProducerName(registeredProducer, "PRN1234", "IncorrectProducerName");

            // Assert
            Assert.NotNull(error);
            Assert.Equal(ErrorLevel.Error, error.ErrorLevel);
            Assert.Contains("does not match the registered producer name of", error.Description);
            Assert.Contains("ProducerName123", error.Description);
            Assert.Contains("IncorrectProducerName", error.Description);
            Assert.Contains("PRN1234", error.Description);
            Assert.Contains("2016", error.Description);
        }