Beispiel #1
0
        public async void GenerateProducerData_AmendProducer_WithMatchingExistingProducer_AndDetailsNotEqual_ReturnsNewProducer()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.Status             = statusType.A;
            builder.RegistrationNumber = "Test Registration Number";

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

            A.CallTo(() => registeredProducer.CurrentSubmission)
            .Returns(new AlwaysUnequalProducer());

            A.CallTo(() => registeredProducer.ProducerRegistrationNumber)
            .Returns("Test Registration Number");

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A <string> ._))
            .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A <string> ._, A <int> ._, A <Guid> ._))
            .Returns(registeredProducer);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
        }
        public async void GenerateProducerData_WithNoProducerChargesForProducer_ThrowsApplicationException()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.ProducerCharges = new Dictionary<string, ProducerCharge>();

            await Assert.ThrowsAsync<ApplicationException>(() => builder.InvokeGenerateProducerDataWithSingleResult());
        }
        public async void GenerateProducerData_WithNullProducerCharges_ThrowsApplicationException()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.ProducerCharges = null;

            await Assert.ThrowsAsync<ApplicationException>(() => builder.InvokeGenerateProducerDataWithSingleResult());
        }
Beispiel #4
0
        public async void GenerateProducerData_WithProducerBusiness_ReturnsProducerWithMatchingProducerBusiness()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.ProducerBusiness = new producerBusinessType()
            {
                correspondentForNotices = new optionalContactDetailsContainerType(),
                Item = new companyType()
                {
                    companyName      = "Test company",
                    companyNumber    = "Test CRN",
                    registeredOffice = new contactDetailsContainerType()
                    {
                        contactDetails = new contactDetailsType()
                        {
                            address = new addressType()
                            {
                                country = countryType.UKENGLAND
                            }
                        }
                    }
                }
            };
            builder.ProducerCharges.Add("Test company", new ProducerCharge()
            {
                ChargeBandAmount = new ChargeBandAmount()
            });

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test company", result.ProducerBusiness.CompanyDetails.Name);
            Assert.Equal("Test CRN", result.ProducerBusiness.CompanyDetails.CompanyNumber);
        }
Beispiel #5
0
        public async void GenerateProducerData_WithNullProducerCharges_ThrowsApplicationException()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.ProducerCharges = null;

            await Assert.ThrowsAsync <ApplicationException>(() => builder.InvokeGenerateProducerDataWithSingleResult());
        }
Beispiel #6
0
        public async void GenerateProducerData_WithNoProducerChargesForProducer_ThrowsApplicationException()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.ProducerCharges = new Dictionary <string, ProducerCharge>();

            await Assert.ThrowsAsync <ApplicationException>(() => builder.InvokeGenerateProducerDataWithSingleResult());
        }
Beispiel #7
0
        public async void GenerateProducerData_WithEEEPlacedOnMarketBand_ReturnsProducerWithMatchingEEEPlacedOnMarketBand()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.EEEPlacedOnMarketBandType = eeePlacedOnMarketBandType.Lessthan5TEEEplacedonmarket;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(1, result.EEEPlacedOnMarketBandType);
        }
Beispiel #8
0
        public async void GenerateProducerData_WithSellingTechnique_ReturnsProducerWithMatchingSellingTechnique()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.SellingTechnique = sellingTechniqueType.Both;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(2, result.SellingTechniqueType);
        }
Beispiel #9
0
        public async void GenerateProducerData_WithObligationType_ReturnsProducerWithMatchingObligationType()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.ObligationType = obligationTypeType.B2B;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(Domain.Obligation.ObligationType.B2B, result.ObligationType);
        }
Beispiel #10
0
        public async void GenerateProducerData_WithAnnualTurnOverBandType_ReturnsProducerWithMatchingAnnualTurnOverBandType()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.AnnualTurnoverBandType = annualTurnoverBandType.Greaterthanonemillionpounds;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(1, result.AnnualTurnOverBandType);
        }
Beispiel #11
0
        public async void GenerateProducerData_WithCeaseDate_ReturnsProducerWithMatchingCeaseDate()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.CeaseDate = new DateTime(2015, 10, 1);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(new DateTime(2015, 10, 1), result.CeaseToExist);
        }
Beispiel #12
0
        public async void GenerateProducerData_WithAnnualTurnover_ReturnsProducerWithMatchingAnnualTurnover()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.AnnualTurnover = 11100;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(11100, result.AnnualTurnover);
        }
Beispiel #13
0
        public async void GenerateProducerData_WithVatRegistered_ReturnsProducerWithMatchingVatRegistered(bool vatRegistered)
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.VatRegistered = vatRegistered;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(vatRegistered, result.VATRegistered);
        }
Beispiel #14
0
        public async void GenerateProducerData_WithManyProducers_AllInserts_ReturnsSameNumberOfProducers()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.Status = statusType.I;

            var result = await builder.InvokeGenerateProducerData(10);

            Assert.Equal(10, result.Count());
        }
        public async void GenerateProducerData_InsertProducer_WithScheme_ReturnsRegisteredProducerWithMatchingSchemeId()
        {
            var schemeId = Guid.NewGuid();

            var builder = new GenerateProducerDataTestsBuilder();
            builder.Status = statusType.I;
            builder.SchemeId = schemeId;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(schemeId, result.RegisteredProducer.Scheme.Id);
        }
Beispiel #16
0
        public async void GenerateProducerData_WithBrandNames_ReturnsProducerWithMatchingBrandNames()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.BrandNames = new[] { "BrandName1", "BrandName2" };

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Collection(result.BrandNames,
                              r1 => Assert.Equal("BrandName1", r1.Name),
                              r2 => Assert.Equal("BrandName2", r2.Name));
        }
Beispiel #17
0
        public async void GenerateProducerData_WithGeneratedRegistrationNumberForInsertion_ReturnsProducerWithMatchingRegistrationNumber()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.Status = statusType.I;
            builder.GeneratedPrns.Clear();
            builder.GeneratedPrns.Enqueue("Test Generated Registration Number");

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test Generated Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
        }
Beispiel #18
0
        public async void GenerateProducerData_InsertProducer_WithScheme_ReturnsRegisteredProducerWithMatchingSchemeId()
        {
            var schemeId = Guid.NewGuid();

            var builder = new GenerateProducerDataTestsBuilder();

            builder.Status   = statusType.I;
            builder.SchemeId = schemeId;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(schemeId, result.RegisteredProducer.Scheme.Id);
        }
Beispiel #19
0
        public async void GenerateProducerData_WithTradingName_ReturnsProducerWithMatchingTradingName()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.TradingName = "Test producer trading name";
            builder.ProducerCharges.Add("Test producer trading name", new ProducerCharge()
            {
                ChargeBandAmount = new ChargeBandAmount()
            });

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test producer trading name", result.TradingName);
        }
Beispiel #20
0
        public async void GenerateProducerData_WithAuthorisedRepresentative_ReturnsProducerWithMatchingAuthorisedRepresentative()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.AuthorisedRepresentative = new authorisedRepresentativeType()
            {
                overseasProducer = new overseasProducerType()
                {
                    overseasProducerName = "Test overseas producer"
                }
            };

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test overseas producer", result.AuthorisedRepresentative.OverseasProducerName);
        }
Beispiel #21
0
        public async void GenerateProducerData_WithMemberUpload_ReturnsProducerWithMatchingMemberUpload()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            var data         = "Test data";
            var fileName     = "Test filename";
            var memberUpload = new MemberUpload(Guid.NewGuid(), data, A.Dummy <List <MemberUploadError> >(), 0, 2015, A.Dummy <Scheme>(), fileName, null, false);

            builder.MemberUpload = memberUpload;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(data, result.MemberUpload.RawData.Data);
            Assert.Equal(fileName, result.MemberUpload.FileName);
            Assert.Same(memberUpload, result.MemberUpload);
        }
Beispiel #22
0
        public async void GenerateProducerData_AmendProducer_WithNoMatchingExistingProducer_AndMigratedProducer_ThrowsInvalidOperationException()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.Status = statusType.A;

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A <string> ._))
            .Returns(false);

            A.CallTo(() => builder.DataAccess.MigratedProducerExists(A <string> ._))
            .Returns(false);

            Func <Task> action = async() => await builder.InvokeGenerateProducerData(1);

            await Assert.ThrowsAsync <InvalidOperationException>(action);
        }
        public async void GenerateProducerData_WithMemberUpload_ReturnsProducerWithMatchingMemberUpload()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            var data = "Test data";
            var fileName = "Test filename";
            var memberUpload = new MemberUpload(Guid.NewGuid(), data, A.Dummy<List<MemberUploadError>>(), 0, 2015, A.Dummy<Scheme>(), fileName);

            builder.MemberUpload = memberUpload;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(data, result.MemberUpload.RawData.Data);
            Assert.Equal(fileName, result.MemberUpload.FileName);
            Assert.Same(memberUpload, result.MemberUpload);
        }
        public async void GenerateProducerData_WithProducerCharges_ReturnsProducerWithMatchingProducerCharges()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            var chargeBoundAmound = new ChargeBandAmount(Guid.NewGuid(), ChargeBand.A, 20);
            builder.ProducerCharges[builder.TradingName] = new ProducerCharge()
            {
                Amount = 100,
                ChargeBandAmount = chargeBoundAmound
            };

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(100, result.ChargeThisUpdate);
            Assert.Equal(20, result.ChargeBandAmount.Amount);
            Assert.Equal(chargeBoundAmound.Id, result.ChargeBandAmount.Id);
        }
Beispiel #25
0
        public async void GenerateProducerData_WithProducerCharges_ReturnsProducerWithMatchingProducerCharges()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            var chargeBoundAmound = new ChargeBandAmount(Guid.NewGuid(), ChargeBand.A, 20);

            builder.ProducerCharges[builder.TradingName] = new ProducerCharge()
            {
                Amount           = 100,
                ChargeBandAmount = chargeBoundAmound
            };

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(100, result.ChargeThisUpdate);
            Assert.Equal(20, result.ChargeBandAmount.Amount);
            Assert.Equal(chargeBoundAmound.Id, result.ChargeBandAmount.Id);
        }
Beispiel #26
0
        public async void GenerateProducerData_AmendProducer_WithMatchingExistingProducerFromAnotherScheme_ReturnsNewProducer()
        {
            var schemeId = Guid.NewGuid();

            var builder = new GenerateProducerDataTestsBuilder();

            builder.Status             = statusType.A;
            builder.RegistrationNumber = "Test Registration Number";
            builder.SchemeId           = schemeId;

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A <string> ._))
            .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A <string> ._, A <int> ._, A <Guid> ._))
            .Returns((RegisteredProducer)null);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
            Assert.Equal(schemeId, result.RegisteredProducer.Scheme.Id);
        }
Beispiel #27
0
        public async void GenerateProducerData_WithRegistrationNumberForAmendment_ReturnsProducerWithMatchingRegistrationNumber()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.Status             = statusType.A;
            builder.RegistrationNumber = "Test Registration Number";

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

            A.CallTo(() => registeredProducer.ProducerRegistrationNumber)
            .Returns("Test Registration Number");

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A <string> ._))
            .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A <string> ._, A <int> ._, A <Guid> ._))
            .Returns(registeredProducer);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
        }
Beispiel #28
0
        public async void GenerateProducerData_AmendProducer_WithMatchingMigratedProducer_ReturnsNewProducer()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.Status             = statusType.A;
            builder.RegistrationNumber = "Test Registration Number";

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A <string> ._))
            .Returns(false);

            A.CallTo(() => builder.DataAccess.MigratedProducerExists(A <string> ._))
            .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A <string> ._, A <int> ._, A <Guid> ._))
            .Returns((RegisteredProducer)null);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            A.CallTo(() => builder.DataAccess.MigratedProducerExists(A <string> ._))
            .MustHaveHappened();

            Assert.Equal("Test Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
        }
Beispiel #29
0
        public async void GenerateProducerData_AmendProducer_WithMatchingExistingProducer_AndDetailsEqual_DoesNotReturnNewProducer()
        {
            var builder = new GenerateProducerDataTestsBuilder();

            builder.Status = statusType.A;

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

            A.CallTo(() => registeredProducer.CurrentSubmission)
            .Returns(new AlwaysEqualProducer());

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A <string> ._))
            .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A <string> ._, A <int> ._, A <Guid> ._))
            .Returns(registeredProducer);

            var result = await builder.InvokeGenerateProducerData(1);

            A.CallTo(() => builder.DataAccess.MigratedProducerExists(A <string> ._))
            .MustNotHaveHappened();

            Assert.Equal(0, result.Count());
        }
        public async void GenerateProducerData_AmendProducer_WithMatchingExistingProducer_AndDetailsNotEqual_ReturnsNewProducer()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.Status = statusType.A;
            builder.RegistrationNumber = "Test Registration Number";

            RegisteredProducer registeredProducer = A.Fake<RegisteredProducer>();
            A.CallTo(() => registeredProducer.CurrentSubmission)
                .Returns(new AlwaysUnequalProducer());

            A.CallTo(() => registeredProducer.ProducerRegistrationNumber)
                .Returns("Test Registration Number");

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A<string>._))
                .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A<string>._, A<int>._, A<Guid>._))
                .Returns(registeredProducer);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
        }
        public async void GenerateProducerData_WithObligationType_ReturnsProducerWithMatchingObligationType()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.ObligationType = obligationTypeType.B2B;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(Domain.Obligation.ObligationType.B2B, result.ObligationType);
        }
        public async void GenerateProducerData_WithVatRegistered_ReturnsProducerWithMatchingVatRegistered(bool vatRegistered)
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.VatRegistered = vatRegistered;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(vatRegistered, result.VATRegistered);
        }
        public async void GenerateProducerData_WithAnnualTurnOverBandType_ReturnsProducerWithMatchingAnnualTurnOverBandType()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.AnnualTurnoverBandType = annualTurnoverBandType.Greaterthanonemillionpounds;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(1, result.AnnualTurnOverBandType);
        }
        public async void GenerateProducerData_WithRegistrationNumberForAmendment_ReturnsProducerWithMatchingRegistrationNumber()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.Status = statusType.A;
            builder.RegistrationNumber = "Test Registration Number";

            RegisteredProducer registeredProducer = A.Fake<RegisteredProducer>();
            A.CallTo(() => registeredProducer.ProducerRegistrationNumber)
                .Returns("Test Registration Number");

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A<string>._))
                .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A<string>._, A<int>._, A<Guid>._))
                .Returns(registeredProducer);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
        }
        public async void GenerateProducerData_WithSellingTechnique_ReturnsProducerWithMatchingSellingTechnique()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.SellingTechnique = sellingTechniqueType.Both;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(2, result.SellingTechniqueType);
        }
        public async void GenerateProducerData_AmendProducer_WithMatchingExistingProducerFromAnotherScheme_ReturnsNewProducer()
        {
            var schemeId = Guid.NewGuid();

            var builder = new GenerateProducerDataTestsBuilder();
            builder.Status = statusType.A;
            builder.RegistrationNumber = "Test Registration Number";
            builder.SchemeId = schemeId;

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A<string>._))
                .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A<string>._, A<int>._, A<Guid>._))
                .Returns((RegisteredProducer)null);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
            Assert.Equal(schemeId, result.RegisteredProducer.Scheme.Id);
        }
        public async void GenerateProducerData_WithAuthorisedRepresentative_ReturnsProducerWithMatchingAuthorisedRepresentative()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.AuthorisedRepresentative = new authorisedRepresentativeType()
            {
                overseasProducer = new overseasProducerType()
                {
                    overseasProducerName = "Test overseas producer"
                }
            };

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test overseas producer", result.AuthorisedRepresentative.OverseasProducerName);
        }
        public async void GenerateProducerData_WithManyProducers_AllInserts_ReturnsSameNumberOfProducers()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.Status = statusType.I;

            var result = await builder.InvokeGenerateProducerData(10);

            Assert.Equal(10, result.Count());
        }
        public async void GenerateProducerData_WithGeneratedRegistrationNumberForInsertion_ReturnsProducerWithMatchingRegistrationNumber()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.Status = statusType.I;
            builder.GeneratedPrns.Clear();
            builder.GeneratedPrns.Enqueue("Test Generated Registration Number");

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test Generated Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
        }
        public async void GenerateProducerData_WithAnnualTurnover_ReturnsProducerWithMatchingAnnualTurnover()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.AnnualTurnover = 11100;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(11100, result.AnnualTurnover);
        }
        public async void GenerateProducerData_AmendProducer_WithMatchingExistingProducer_AndDetailsEqual_DoesNotReturnNewProducer()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.Status = statusType.A;

            RegisteredProducer registeredProducer = A.Fake<RegisteredProducer>();
            A.CallTo(() => registeredProducer.CurrentSubmission)
                .Returns(new AlwaysEqualProducer());

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A<string>._))
                .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A<string>._, A<int>._, A<Guid>._))
                .Returns(registeredProducer);

            var result = await builder.InvokeGenerateProducerData(1);

            A.CallTo(() => builder.DataAccess.MigratedProducerExists(A<string>._))
                .MustNotHaveHappened();

            Assert.Equal(0, result.Count());
        }
        public async void GenerateProducerData_WithCeaseDate_ReturnsProducerWithMatchingCeaseDate()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.CeaseDate = new DateTime(2015, 10, 1);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(new DateTime(2015, 10, 1), result.CeaseToExist);
        }
        public async void GenerateProducerData_AmendProducer_WithNoMatchingExistingProducer_AndMigratedProducer_ThrowsInvalidOperationException()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.Status = statusType.A;

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A<string>._))
                .Returns(false);

            A.CallTo(() => builder.DataAccess.MigratedProducerExists(A<string>._))
                .Returns(false);

            Func<Task> action = async () => await builder.InvokeGenerateProducerData(1);

            await Assert.ThrowsAsync<InvalidOperationException>(action);
        }
        public async void GenerateProducerData_WithBrandNames_ReturnsProducerWithMatchingBrandNames()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.BrandNames = new[] { "BrandName1", "BrandName2" };

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Collection(result.BrandNames,
                r1 => Assert.Equal("BrandName1", r1.Name),
                r2 => Assert.Equal("BrandName2", r2.Name));
        }
        public async void GenerateProducerData_WithEEEPlacedOnMarketBand_ReturnsProducerWithMatchingEEEPlacedOnMarketBand()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.EEEPlacedOnMarketBandType = eeePlacedOnMarketBandType.Lessthan5TEEEplacedonmarket;

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal(1, result.EEEPlacedOnMarketBandType);
        }
        public async void GenerateProducerData_WithTradingName_ReturnsProducerWithMatchingTradingName()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.TradingName = "Test producer trading name";
            builder.ProducerCharges.Add("Test producer trading name", new ProducerCharge() { ChargeBandAmount = new ChargeBandAmount() });

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test producer trading name", result.TradingName);
        }
        public async void GenerateProducerData_WithProducerBusiness_ReturnsProducerWithMatchingProducerBusiness()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.ProducerBusiness = new producerBusinessType()
            {
                correspondentForNotices = new optionalContactDetailsContainerType(),
                Item = new companyType()
                {
                    companyName = "Test company",
                    companyNumber = "Test CRN",
                    registeredOffice = new contactDetailsContainerType()
                    {
                        contactDetails = new contactDetailsType()
                        {
                            address = new addressType()
                            {
                                country = countryType.UKENGLAND
                            }
                        }
                    }
                }
            };
            builder.ProducerCharges.Add("Test company", new ProducerCharge() { ChargeBandAmount = new ChargeBandAmount() });

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            Assert.Equal("Test company", result.ProducerBusiness.CompanyDetails.Name);
            Assert.Equal("Test CRN", result.ProducerBusiness.CompanyDetails.CompanyNumber);
        }
        public async void GenerateProducerData_AmendProducer_WithMatchingMigratedProducer_ReturnsNewProducer()
        {
            var builder = new GenerateProducerDataTestsBuilder();
            builder.Status = statusType.A;
            builder.RegistrationNumber = "Test Registration Number";

            A.CallTo(() => builder.DataAccess.ProducerRegistrationExists(A<string>._))
                .Returns(false);

            A.CallTo(() => builder.DataAccess.MigratedProducerExists(A<string>._))
                .Returns(true);

            A.CallTo(() => builder.DataAccess.FetchRegisteredProducerOrDefault(A<string>._, A<int>._, A<Guid>._))
                .Returns((RegisteredProducer)null);

            var result = await builder.InvokeGenerateProducerDataWithSingleResult();

            A.CallTo(() => builder.DataAccess.MigratedProducerExists(A<string>._))
                .MustHaveHappened();

            Assert.Equal("Test Registration Number", result.RegisteredProducer.ProducerRegistrationNumber);
        }