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); }
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); }
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_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); }