Example #1
0
        public async Task Evaluate_ProducerObligationTypeUnchanged_DoesNotRetrieveProducerEeeData_AndReturnsPass()
        {
            // Arrange
            var builder = new ProducerObligationTypeChangeBuilder();

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

            A.CallTo(() => existingProducerDetails.ObligationType)
            .Returns(ObligationType.B2C);

            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .Returns(existingProducerDetails);

            var newProducerDetails = new producerType
            {
                status         = statusType.A,
                obligationType = obligationTypeType.B2C
            };

            // Act
            var result = await builder.Build().Evaluate(newProducerDetails);

            // Assert
            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .MustHaveHappened();

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A <string> ._))
            .MustNotHaveHappened();

            Assert.True(result.IsValid);
        }
        public async Task Evaluate_ProducerObligationTypeUnchanged_DoesNotRetrieveProducerEeeData_AndReturnsPass()
        {
            // Arrange
            var builder = new ProducerObligationTypeChangeBuilder();

            var existingProducerDetails = A.Fake<ProducerSubmission>();
            A.CallTo(() => existingProducerDetails.ObligationType)
                .Returns(ObligationType.B2C);

            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .Returns(existingProducerDetails);

            var newProducerDetails = new producerType
            {
                status = statusType.A,
                obligationType = obligationTypeType.B2C
            };

            // Act
            var result = await builder.Build().Evaluate(newProducerDetails);

            // Assert
            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .MustHaveHappened();

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A<string>._))
                .MustNotHaveHappened();

            Assert.True(result.IsValid);
        }
Example #3
0
        public async Task Evaluate_ProducerObligationTypeChange_NoExistingEeeDataForProducer_ReturnsWarning()
        {
            // Arrange
            var builder = new ProducerObligationTypeChangeBuilder();

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

            A.CallTo(() => existingProducerDetails.ObligationType)
            .Returns(ObligationType.B2C);

            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .Returns(existingProducerDetails);

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A <string> ._))
            .Returns((List <EeeOutputAmount>)null);

            var newProducerDetails = new producerType
            {
                status         = statusType.A,
                obligationType = obligationTypeType.B2B
            };

            // Act
            var result = await builder.Build().Evaluate(newProducerDetails);

            // Assert
            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .MustHaveHappened();

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A <string> ._))
            .MustHaveHappened();

            Assert.False(result.IsValid);
            Assert.Equal(ErrorLevel.Warning, result.ErrorLevel);
        }
Example #4
0
        public async Task Evaluate_ProducerObligationTypeChange_NoConflictWithExistingData_ReturnsDetailsInWarningMessage()
        {
            // Arrange
            var builder = new ProducerObligationTypeChangeBuilder();

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

            A.CallTo(() => existingProducerDetails.ObligationType)
            .Returns(ObligationType.B2B);

            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .Returns(existingProducerDetails);

            var eeeOutputAmount = A.Fake <EeeOutputAmount>();

            A.CallTo(() => eeeOutputAmount.ObligationType)
            .Returns(ObligationType.B2B);

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A <string> ._))
            .Returns(new List <EeeOutputAmount> {
                eeeOutputAmount
            });

            var newProducerDetails = new producerType
            {
                status         = statusType.A,
                obligationType = obligationTypeType.Both,
                tradingName    = "TestProducer",
                registrationNo = "WEE/MM0001AA"
            };

            // Act
            var result = await builder.Build().Evaluate(newProducerDetails);

            // Assert
            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .MustHaveHappened();

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A <string> ._))
            .MustHaveHappened();

            Assert.False(result.IsValid);
            Assert.Equal(ErrorLevel.Warning, result.ErrorLevel);
            Assert.Contains("TestProducer", result.Message);
            Assert.Contains("WEE/MM0001AA", result.Message);
            Assert.Contains("from B2B", result.Message);
            Assert.Contains("to Both", result.Message);
        }
Example #5
0
        public async Task Evaluate_ProducerObligationTypeChange_WithConflictDueToExistingEeeData_ReturnsExistingEeeDataObligationsInErrorMessage()
        {
            // Arrange
            var builder = new ProducerObligationTypeChangeBuilder();

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

            A.CallTo(() => existingProducerDetails.ObligationType)
            .Returns(ObligationType.B2B);

            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .Returns(existingProducerDetails);

            var eeeOutputAmount1 = A.Fake <EeeOutputAmount>();

            A.CallTo(() => eeeOutputAmount1.ObligationType)
            .Returns(ObligationType.B2B);

            var eeeOutputAmount2 = A.Fake <EeeOutputAmount>();

            A.CallTo(() => eeeOutputAmount2.ObligationType)
            .Returns(ObligationType.B2C);

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A <string> ._))
            .Returns(new List <EeeOutputAmount> {
                eeeOutputAmount1, eeeOutputAmount2
            });

            var newProducerDetails = new producerType
            {
                status         = statusType.A,
                obligationType = obligationTypeType.B2C
            };

            // Act
            var result = await builder.Build().Evaluate(newProducerDetails);

            // Assert
            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .MustHaveHappened();

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A <string> ._))
            .MustHaveHappened();

            Assert.False(result.IsValid);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
            Assert.Contains("because both B2B and B2C EEE data have already been submitted", result.Message);
        }
Example #6
0
        public async Task Evaluate_ProducerObligationTypeChange_WithConflictDueToExistingEeeData_ReturnsError
            (ObligationType existingProducerEeeDataObligationType, ObligationType existingProducerObligationType, ObligationType newProducerObligationType)
        {
            // Arrange
            var builder = new ProducerObligationTypeChangeBuilder();

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

            A.CallTo(() => existingProducerDetails.ObligationType)
            .Returns(existingProducerObligationType);

            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .Returns(existingProducerDetails);

            var eeeOutputAmount = A.Fake <EeeOutputAmount>();

            A.CallTo(() => eeeOutputAmount.ObligationType)
            .Returns(existingProducerEeeDataObligationType);

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A <string> ._))
            .Returns(new List <EeeOutputAmount> {
                eeeOutputAmount
            });

            var newProducerDetails = new producerType
            {
                status         = statusType.A,
                obligationType = newProducerObligationType.ToDeserializedXmlObligationType()
            };

            // Act
            var result = await builder.Build().Evaluate(newProducerDetails);

            // Assert
            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A <string> ._, A <string> ._, A <Guid> ._))
            .MustHaveHappened();

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A <string> ._))
            .MustHaveHappened();

            Assert.False(result.IsValid);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
        }
        public async Task Evaluate_ProducerObligationTypeChange_NoConflictWithExistingData_ReturnsDetailsInWarningMessage()
        {
            // Arrange
            var builder = new ProducerObligationTypeChangeBuilder();

            var existingProducerDetails = A.Fake<ProducerSubmission>();
            A.CallTo(() => existingProducerDetails.ObligationType)
                .Returns(ObligationType.B2B);

            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .Returns(existingProducerDetails);

            var eeeOutputAmount = A.Fake<EeeOutputAmount>();
            A.CallTo(() => eeeOutputAmount.ObligationType)
                .Returns(ObligationType.B2B);

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A<string>._))
                .Returns(new List<EeeOutputAmount> { eeeOutputAmount });

            var newProducerDetails = new producerType
            {
                status = statusType.A,
                obligationType = obligationTypeType.Both,
                tradingName = "TestProducer",
                registrationNo = "WEE/MM0001AA"
            };

            // Act
            var result = await builder.Build().Evaluate(newProducerDetails);

            // Assert
            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .MustHaveHappened();

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A<string>._))
                .MustHaveHappened();

            Assert.False(result.IsValid);
            Assert.Equal(ErrorLevel.Warning, result.ErrorLevel);
            Assert.Contains("TestProducer", result.Message);
            Assert.Contains("WEE/MM0001AA", result.Message);
            Assert.Contains("from B2B", result.Message);
            Assert.Contains("to Both", result.Message);
        }
        public async Task Evaluate_ProducerObligationTypeChange_WithConflictDueToExistingEeeData_ReturnsExistingEeeDataObligationsInErrorMessage()
        {
            // Arrange
            var builder = new ProducerObligationTypeChangeBuilder();

            var existingProducerDetails = A.Fake<ProducerSubmission>();
            A.CallTo(() => existingProducerDetails.ObligationType)
                .Returns(ObligationType.B2B);

            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .Returns(existingProducerDetails);

            var eeeOutputAmount1 = A.Fake<EeeOutputAmount>();
            A.CallTo(() => eeeOutputAmount1.ObligationType)
                .Returns(ObligationType.B2B);

            var eeeOutputAmount2 = A.Fake<EeeOutputAmount>();
            A.CallTo(() => eeeOutputAmount2.ObligationType)
                .Returns(ObligationType.B2C);

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A<string>._))
                .Returns(new List<EeeOutputAmount> { eeeOutputAmount1, eeeOutputAmount2 });

            var newProducerDetails = new producerType
            {
                status = statusType.A,
                obligationType = obligationTypeType.B2C
            };

            // Act
            var result = await builder.Build().Evaluate(newProducerDetails);

            // Assert
            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .MustHaveHappened();

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A<string>._))
                .MustHaveHappened();

            Assert.False(result.IsValid);
            Assert.Equal(ErrorLevel.Error, result.ErrorLevel);
            Assert.Contains("because both B2B and B2C EEE data have already been submitted", result.Message);
        }
        public async Task Evaluate_ProducerObligationTypeChange_NoConflictWithExistingEeeData_ReturnsWarning
            (ObligationType existingProducerEeeDataObligationType, ObligationType existingProducerObligationType, ObligationType newProducerObligationType)
        {
            // Arrange
            var builder = new ProducerObligationTypeChangeBuilder();

            var existingProducerDetails = A.Fake<ProducerSubmission>();
            A.CallTo(() => existingProducerDetails.ObligationType)
                .Returns(existingProducerObligationType);

            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .Returns(existingProducerDetails);

            var eeeOutputAmount = A.Fake<EeeOutputAmount>();
            A.CallTo(() => eeeOutputAmount.ObligationType)
                .Returns(existingProducerEeeDataObligationType);

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A<string>._))
                .Returns(new List<EeeOutputAmount> { eeeOutputAmount });

            var newProducerDetails = new producerType
            {
                status = statusType.A,
                obligationType = newProducerObligationType.ToDeserializedXmlObligationType()
            };

            // Act
            var result = await builder.Build().Evaluate(newProducerDetails);

            // Assert
            A.CallTo(() => builder.ProducerQuerySet.GetLatestProducerForComplianceYearAndScheme(A<string>._, A<string>._, A<Guid>._))
                .MustHaveHappened();

            A.CallTo(() => builder.SchemeEeeDataQuerySet.GetLatestProducerEeeData(A<string>._))
                .MustHaveHappened();

            Assert.False(result.IsValid);
            Assert.Equal(ErrorLevel.Warning, result.ErrorLevel);
        }