public void RequiresApplicantBenefits_NotRequiredWhenCareLeaver() { var form = new BestStartGrantBuilder("form") .With(f => f.ApplicantDetails, ApplicantDetailsBuilder.NewValid()) .Value(); form.ApplicantDetails.DateOfBirth = null; Navigation.RequiresGuardianBenefits(form).Should().BeFalse(); form.ApplicantDetails.Over25(TestNowUtc.Value); form.ApplicantDetails.PreviouslyLookedAfter = true; BestStartGrant.ShouldAskCareQuestion(form.ApplicantDetails).Should().BeFalse("question not relevant"); Navigation.RequiresApplicantBenefits(form).Should().BeTrue("should still ask for benefits if not under 25 (despite previous care)"); form.ApplicantDetails.Aged(TestNowUtc.Value, 23); form.ApplicantDetails.PreviouslyLookedAfter = false; BestStartGrant.ShouldAskCareQuestion(form.ApplicantDetails).Should().BeTrue("ensure question is asked"); Navigation.RequiresApplicantBenefits(form).Should().BeTrue("should still ask for benefits if not previously in care"); form.ApplicantDetails.Aged(TestNowUtc.Value, 23); form.ApplicantDetails.PreviouslyLookedAfter = true; BestStartGrant.ShouldAskCareQuestion(form.ApplicantDetails).Should().BeTrue("ensure question is asked"); Navigation.RequiresApplicantBenefits(form).Should().BeFalse("should ask for guardian benefits if responded in full time education"); }
public void AddPaymentDetails_Validation() { var form = new BestStartGrantBuilder("form").Insert(); PaymentDetailsShouldBeValid(form, m => { }); PaymentDetailsShouldBeValid(form, m => { m.HasBankAccount = true; m.RollNumber = null; }); PaymentDetailsShouldBeValid(form, m => { m.HasBankAccount = false; m.NameOfAccountHolder = null; }); PaymentDetailsShouldBeValid(form, m => { m.HasBankAccount = false; m.NameOfBank = null; }); PaymentDetailsShouldBeValid(form, m => { m.HasBankAccount = false; m.SortCode = null; }); PaymentDetailsShouldBeValid(form, m => { m.HasBankAccount = false; m.AccountNumber = null; }); PaymentDetailsShouldBeValid(form, m => m.HasBankAccount = false, m => { m.NameOfAccountHolder.Should().BeNull(); m.NameOfBank.Should().BeNull(); m.SortCode.Should().BeNull(); m.AccountNumber.Should().BeNull(); m.RollNumber.Should().BeNull(); }); PaymentDetailsShouldBeInvalid(form, m => m.HasBankAccount = null); PaymentDetailsShouldBeInvalid(form, m => { m.HasBankAccount = true; m.NameOfAccountHolder = null; }); PaymentDetailsShouldBeInvalid(form, m => { m.HasBankAccount = true; m.NameOfBank = null; }); PaymentDetailsShouldBeInvalid(form, m => { m.HasBankAccount = true; m.SortCode = null; }); PaymentDetailsShouldBeInvalid(form, m => { m.HasBankAccount = true; m.AccountNumber = null; }); }
public void AddApplicantDetails_Validation() { var form = new BestStartGrantBuilder("form").Insert(); ApplicantDetailsShouldBeValid(form, m => { }); ApplicantDetailsShouldBeValid(form, m => m.Title = null); ApplicantDetailsShouldBeValid(form, m => m.OtherNames = null); ApplicantDetailsShouldBeValid(form, m => m.CurrentAddress.Line2 = null); ApplicantDetailsShouldBeValid(form, m => m.CurrentAddress.Line3 = null); ApplicantDetailsShouldBeValid(form, m => m.DateOfBirth = TestNowUtc - TimeSpan.FromDays(1)); ApplicantDetailsShouldBeValid(form, m => { m.Over25(TestNowUtc.Value); m.PreviouslyLookedAfter = null; }); ApplicantDetailsShouldBeValid(form, m => { m.Over25(TestNowUtc.Value); m.FullTimeEducation = null; }); ApplicantDetailsShouldBeValid(form, m => { m.Under16(TestNowUtc.Value); m.NationalInsuranceNumber = null; }); ApplicantDetailsShouldBeValid(form, m => { m.Over25(TestNowUtc.Value); m.PreviouslyLookedAfter = true; }, m => m.PreviouslyLookedAfter.Should().BeNull()); ApplicantDetailsShouldBeValid(form, m => { m.Over25(TestNowUtc.Value); m.FullTimeEducation = true; }, m => m.FullTimeEducation.Should().BeNull()); ApplicantDetailsShouldBeValid(form, m => { m.Under16(TestNowUtc.Value); m.NationalInsuranceNumber = "AB 12 34 56 C"; }, m => m.NationalInsuranceNumber.Should().BeNull()); ApplicantDetailsShouldBeInvalid(form, m => m.FirstName = null); ApplicantDetailsShouldBeInvalid(form, m => m.SurnameOrFamilyName = null); ApplicantDetailsShouldBeInvalid(form, m => m.DateOfBirth = null); ApplicantDetailsShouldBeInvalid(form, m => m.DateOfBirth = TestNowUtc); ApplicantDetailsShouldBeInvalid(form, m => m.PreviouslyLookedAfter = null); ApplicantDetailsShouldBeInvalid(form, m => m.FullTimeEducation = null); ApplicantDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = null); ApplicantDetailsShouldBeInvalid(form, m => m.CurrentAddress.Line1 = null); ApplicantDetailsShouldBeInvalid(form, m => m.CurrentAddress.Postcode = null); }
public void RequiresGuardianBenefits() { var form = new BestStartGrantBuilder("form") .With(f => f.ApplicantDetails, ApplicantDetailsBuilder.NewValid()) .Value(); form.ApplicantDetails.DateOfBirth = null; Navigation.RequiresGuardianBenefits(form).Should().BeFalse(); form.ApplicantDetails.Over25(TestNowUtc.Value); form.ApplicantDetails.FullTimeEducation = true; BestStartGrant.ShouldAskEducationQuestion(form.ApplicantDetails).Should().BeFalse("question not relevant"); Navigation.RequiresGuardianBenefits(form).Should().BeFalse("should not ask for guardian benefits if not 18 or 19"); form.ApplicantDetails.Aged(TestNowUtc.Value, 18); form.ApplicantDetails.FullTimeEducation = false; BestStartGrant.ShouldAskEducationQuestion(form.ApplicantDetails).Should().BeTrue("ensure question is asked"); Navigation.RequiresGuardianBenefits(form).Should().BeFalse("should not ask for guardian benefits if not in full time education"); form.ApplicantDetails.Aged(TestNowUtc.Value, 19); form.ApplicantDetails.FullTimeEducation = true; BestStartGrant.ShouldAskEducationQuestion(form.ApplicantDetails).Should().BeTrue("ensure question is asked"); Navigation.RequiresGuardianBenefits(form).Should().BeTrue("should ask for guardian benefits if responded in full time education"); }
public void AddExpectedChildren_Validation() { var form = new BestStartGrantBuilder("form").Insert(); ExpectedChildrenShouldBeValid(form, m => { }); ExpectedChildrenShouldBeValid(form, m => m.IsBabyExpected = false, m => { m.ExpectancyDate.Should().BeNull(); m.IsMoreThan1BabyExpected.Should().BeNull(); m.ExpectedBabyCount.Should().BeNull(); }); ExpectedChildrenShouldBeValid(form, m => m.IsMoreThan1BabyExpected = false, m => { m.ExpectedBabyCount.Should().BeNull(); }); ExpectedChildrenShouldBeValid(form, m => m.ExpectancyDate = TestNowUtc); ExpectedChildrenShouldBeValid(form, m => m.ExpectedBabyCount = 2); ExpectedChildrenShouldBeValid(form, m => m.ExpectedBabyCount = 10); ExpectedChildrenShouldBeInvalid(form, m => m.Invalid()); ExpectedChildrenShouldBeInvalid(form, m => { m.IsBabyExpected = true; m.ExpectancyDate = null; }); ExpectedChildrenShouldBeInvalid(form, m => { m.IsBabyExpected = true; m.IsMoreThan1BabyExpected = null; }); ExpectedChildrenShouldBeInvalid(form, m => { m.IsMoreThan1BabyExpected = true; m.ExpectedBabyCount = null; }); ExpectedChildrenShouldBeInvalid(form, m => m.ExpectancyDate = TestNowUtc - TimeSpan.FromDays(1)); ExpectedChildrenShouldBeInvalid(form, m => { m.ExpectancyDate = null; m.ExpectedBabyCount = 1; }); ExpectedChildrenShouldBeInvalid(form, m => m.ExpectedBabyCount = 1); ExpectedChildrenShouldBeInvalid(form, m => m.ExpectedBabyCount = 11); }
public void AddPartnerDetails_SetsRelationshipAutomatically() { var form = new BestStartGrantBuilder("form").Insert(); form.AddPartnerDetails(RelationDetailsBuilder.NewValid(rd => rd.RelationshipToApplicant = null)); form.PartnerDetails.RelationshipToApplicant.Should().Be("Partner"); }
public void AddGuardianPartnerBenefits_Validation() { var form = new BestStartGrantBuilder("form").Insert(); GuardianPartnerBenefitsShouldBeValid(form, m => { }); GuardianPartnerBenefitsShouldBeInvalid(form, m => m.SetEmpty()); }
public void Consent_Validation() { var form = new BestStartGrantBuilder("form").Insert(); ConsentShouldBeValid(form, m => { }); ConsentShouldBeInvalid(form, m => m.AgreedToConsent = false); }
public void Complete_DeclarationValidated() { var form = new BestStartGrantBuilder("form").Insert(); DeclarationShouldBeValid(form, m => { }); DeclarationShouldBeInvalid(form, m => m.AgreedToLegalStatement = false); }
public void AddGuardianPartnerDetails_Validation() { var form = new BestStartGrantBuilder("form").Insert(); GuardianPartnerDetailsShouldBeValid(form, m => { }); GuardianPartnerDetailsShouldBeInvalid(form, m => m.FullName = null); GuardianPartnerDetailsShouldBeInvalid(form, m => m.Address.Line1 = null); }
public void RequiresGuardianPartnerBenefits_NotRequiredWhenAnyBenefitsNotRequired() { var form = new BestStartGrantBuilder("form") .With(f => f.ApplicantDetails, ApplicantDetailsBuilder.NewValid().Under25CareLeaver(TestNowUtc.Value)) .With(f => f.GuardianBenefits, BenefitsBuilder.NewNone()) .Value(); Navigation.RequiresGuardianPartnerBenefits(form).Should().BeFalse("should not prompt for benefits when already entitled"); }
public void AddHealthProfessional_Validation() { var form = new BestStartGrantBuilder("form").Insert(); HealthProfessionalShouldBeValid(form, m => { }); HealthProfessionalShouldBeInvalid(form, m => m.Invalid()); HealthProfessionalShouldBeInvalid(form, m => m.Pin = null); }
public void ApplicantDetails_UsesEmailToIdentifyUser() { var form = new BestStartGrantBuilder("form").Insert(); var details = ApplicantDetailsBuilder.NewValid(d => d.EmailAddress = "test.email"); form.AddApplicantDetails(details); form.UserId.Should().Be("test.email"); }
public void AddGuardianPartnerDetails_FormatsNationalInsuranceNumber() { var form = new BestStartGrantBuilder("form").Insert(); var details = RelationDetailsBuilder.NewValid(d => d.NationalInsuranceNumber = "AB123456C"); form.AddGuardianPartnerDetails(details); form.GuardianPartnerDetails.NationalInsuranceNumber.Should().Be("AB 12 34 56 C"); }
public void AddPaymentDetails_AccountNumberValidated() { var form = new BestStartGrantBuilder("form").Insert(); PaymentDetailsShouldBeValid(form, m => m.AccountNumber = "0"); PaymentDetailsShouldBeValid(form, m => m.AccountNumber = "01234567"); PaymentDetailsShouldBeInvalid(form, m => m.AccountNumber = "x"); PaymentDetailsShouldBeInvalid(form, m => m.AccountNumber = " 1 "); }
public void Populate_NoPreviousSectionFromFirstSection() { var form = new BestStartGrantBuilder("form") .Value(); var detail = new BsgDetail(); Navigation.Populate(detail, Navigation.Order.First(), form); detail.PreviousSection.Should().BeNull(); }
public void AddApplicantBenefits_Validation() { var form = new BestStartGrantBuilder("form").Insert(); ApplicantBenefitsShouldBeValid(form, m => { }); ApplicantBenefitsShouldBeInvalid(form, m => m.SetEmpty()); ApplicantBenefitsShouldBeInvalid(form, m => m.SetEmpty(b => { b.Unknown = true; b.HasIncomeSupport = true; })); ApplicantBenefitsShouldBeInvalid(form, m => m.SetEmpty(b => { b.HasIncomeSupport = true; b.None = true; })); ApplicantBenefitsShouldBeInvalid(form, m => m.SetEmpty(b => { b.None = true; b.Unknown = true; })); }
public void Complete_ThrowsIfAlreadyCompleted() { var form = new BestStartGrantBuilder("form") .WithCompletedSections() .Value(); form.Completed.Should().HaveValue(); Assert.Throws <DomainException>(() => form.AddConsent(ConsentBuilder.NewValid())); }
public void Evidence_Validation() { var form = new BestStartGrantBuilder("form").Insert(); EvidenceShouldBeValid(form, m => { }); EvidenceShouldBeValid(form, m => { m.SendingByPost = true; m.Files = new List <EvidenceFile>(); }); EvidenceShouldBeValid(form, m => { m.SendingByPost = false; m.Files = new List <EvidenceFile> { new EvidenceFile() }; }); EvidenceShouldBeInvalid(form, m => { m.SendingByPost = false; m.Files = new List <EvidenceFile>(); }); }
public void Complete_SetsCompletionDate() { var form = new BestStartGrantBuilder("form") .WithCompletedSections(markAsCompleted: false) .With(f => f.Declaration, null) .Insert(); var next = form.AddDeclaration(DeclarationBuilder.NewValid()); next.Section.Should().BeNull("this should be the last section that is filled out"); form.Completed.Should().Be(TestNowUtc.Value); }
public void AddPaymentDetails_SortCodeValidated() { var form = new BestStartGrantBuilder("form").Insert(); PaymentDetailsShouldBeValid(form, m => m.SortCode = "01-02-03"); PaymentDetailsShouldBeInvalid(form, m => m.SortCode = "01-02-033"); PaymentDetailsShouldBeInvalid(form, m => m.SortCode = "01 02-03"); PaymentDetailsShouldBeInvalid(form, m => m.SortCode = "01-02.03"); PaymentDetailsShouldBeInvalid(form, m => m.SortCode = "x1-02-03"); PaymentDetailsShouldBeInvalid(form, m => m.SortCode = "01-0x-03"); PaymentDetailsShouldBeInvalid(form, m => m.SortCode = "01-02-.3"); }
public void Populate_SetsPreviousSection() { var form = new BestStartGrantBuilder("form") .With(f => f.ApplicantDetails, ApplicantDetailsBuilder.NewValid().Under16(TestNowUtc.Value)) .Value(); var detail = new BsgDetail(); Navigation.Populate(detail, Sections.GuardianDetails, form); detail.PreviousSection.Should().Be(Sections.ExistingChildren, "Navigating backwards from guardian details for a 16 year old should go back to existing children (and skip applicant benefits)"); }
public void NextSectionClearsSkippedSections() { var form = new BestStartGrantBuilder("form") .With(f => f.ApplicantDetails, ApplicantDetailsBuilder.NewValid(ad => ad.Under16(TestNowUtc.Value))) .With(f => f.ApplicantBenefits, BenefitsBuilder.NewWithBenefit()) .With(f => f.Declaration, DeclarationBuilder.NewValid()) .Insert(); form.AddExistingChildren(ExistingChildrenBuilder.NewValid()); form = Repository.Load <BestStartGrant>(form.Id); form.Declaration.Should().NotBeNull("should not be overwritten by moving to the next section"); form.ApplicantBenefits.Should().BeNull("intermediate 'ApplicantBenefits' section should be cleared based on answers"); }
public void AddGuardianDetails_Validation() { var form = new BestStartGrantBuilder("form").Insert(); GuardianDetailsShouldBeValid(form, m => { }); GuardianDetailsShouldBeValid(form, m => m.Title = null); GuardianDetailsShouldBeValid(form, m => m.Address.Line2 = null); GuardianDetailsShouldBeValid(form, m => m.Address.Line3 = null); GuardianDetailsShouldBeInvalid(form, m => m.FullName = null); GuardianDetailsShouldBeInvalid(form, m => m.DateOfBirth = null); GuardianDetailsShouldBeInvalid(form, m => m.DateOfBirth = TestNowUtc); GuardianDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = null); GuardianDetailsShouldBeInvalid(form, m => m.RelationshipToApplicant = null); GuardianDetailsShouldBeInvalid(form, m => m.Address.Line1 = null); GuardianDetailsShouldBeInvalid(form, m => m.Address.Postcode = null); }
public void AddPartnerDetails_AllowsAddressToBeInherited() { var form = new BestStartGrantBuilder("form") .With(f => f.PartnerDetails, RelationDetailsBuilder.NewValid()) .Insert(); var inheritedDetails = RelationDetailsBuilder.NewValid(rd => { rd.InheritAddress = true; rd.Address = null; }); form.AddPartnerDetails(inheritedDetails); form.PartnerDetails.InheritAddress.Should().BeTrue(); form.PartnerDetails.Address.Should().BeNull(); }
public void AddApplicantDetails_NationalInsuranceNumber_FormattedCorrectly() { var form = new BestStartGrantBuilder("form").Insert(); ApplicantDetailsShouldBeValid(form, m => m.NationalInsuranceNumber = "AB 12 34 56 C", m => m.NationalInsuranceNumber.Should().Be("AB 12 34 56 C")); ApplicantDetailsShouldBeValid(form, m => m.NationalInsuranceNumber = "ab 12 34 56 c", m => m.NationalInsuranceNumber.Should().Be("AB 12 34 56 C")); ApplicantDetailsShouldBeValid(form, m => m.NationalInsuranceNumber = "Ab123456c", m => m.NationalInsuranceNumber.Should().Be("AB 12 34 56 C")); ApplicantDetailsShouldBeValid(form, m => m.NationalInsuranceNumber = "AB/123456/c", m => m.NationalInsuranceNumber.Should().Be("AB 12 34 56 C")); ApplicantDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = "A 12 34 56 C"); ApplicantDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = "AB 12 34 56 CD"); ApplicantDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = "AB 12/34/56 C"); ApplicantDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = "A. 12 34 56 C"); ApplicantDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = "AB .2 34 56 C"); ApplicantDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = "AB 12 .4 56 C"); ApplicantDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = "AB 12 34 .6 C"); ApplicantDetailsShouldBeInvalid(form, m => m.NationalInsuranceNumber = "A5 12 34 56 ."); }
public void AddEvidenceFile() { var form = new BestStartGrantBuilder("form").Insert(); var fileBytes = Encoding.ASCII.GetBytes("some content"); form.AddEvidenceFile("FileName1.txt", fileBytes); var storedForm = Repository.Load <BestStartGrant>(form.Id); storedForm.Evidence.Files.Count.Should().Be(1); var file = storedForm.Evidence.Files[0]; file.Name.Should().Be("FileName1.txt"); CloudStore.List("bsg-" + form.Id).Should().Contain(file.CloudName); }
public void RequiresApplicantBenefits_NotRequiredWhenAskingGuardianBenefits() { var form = new BestStartGrantBuilder("form") .With(f => f.ApplicantDetails, ApplicantDetailsBuilder.NewValid()) .Value(); form.ApplicantDetails.Aged(TestNowUtc.Value, 18); form.ApplicantDetails.FullTimeEducation = false; BestStartGrant.ShouldAskEducationQuestion(form.ApplicantDetails).Should().BeTrue("ensure question is asked"); Navigation.RequiresApplicantBenefits(form).Should().BeTrue("should ask for applicant benefits if not asking for guardian benefits"); form.ApplicantDetails.Aged(TestNowUtc.Value, 19); form.ApplicantDetails.FullTimeEducation = true; BestStartGrant.ShouldAskEducationQuestion(form.ApplicantDetails).Should().BeTrue("ensure question is asked"); Navigation.RequiresApplicantBenefits(form).Should().BeFalse("should not ask for applicant benefits if asking for guardian benefits"); }
public void AddExistingChildren_Validation() { var form = new BestStartGrantBuilder("form").Insert(); ExistingChildrenShouldBeValid(form, m => { }); ExistingChildrenShouldBeValid(form, m => { m.AnyExistingChildren = false; m.Children = new List <ExistingChild>(); }); ExistingChildrenShouldBeValid(form, m => { m.Children[0].ChildBenefit = true; m.Children[0].NoChildBenefitReason = null; }); ExistingChildrenShouldBeInvalid(form, m => m.AnyExistingChildren = null); ExistingChildrenShouldBeInvalid(form, m => { m.AnyExistingChildren = true; m.Children = new List <ExistingChild>(); }); ExistingChildrenShouldBeInvalid(form, m => { m.AnyExistingChildren = false; m.Children.Count.Should().BeGreaterThan(0, "ensure we have children for this test"); }); ExistingChildrenShouldBeInvalid(form, m => m.Children[0].FirstName = null); ExistingChildrenShouldBeInvalid(form, m => m.Children[0].Surname = null); ExistingChildrenShouldBeInvalid(form, m => m.Children[0].DateOfBirth = null); ExistingChildrenShouldBeInvalid(form, m => m.Children[0].DateOfBirth = TestNowUtc); ExistingChildrenShouldBeInvalid(form, m => m.Children[0].Relationship = null); ExistingChildrenShouldBeInvalid(form, m => m.Children[0].ChildBenefit = null); ExistingChildrenShouldBeInvalid(form, m => { m.Children[0].ChildBenefit = false; m.Children[0].NoChildBenefitReason = null; }); }
public void RequiresGuardianPartnerBenefits() { var form = new BestStartGrantBuilder("form") .With(f => f.GuardianBenefits, null) .Value(); Navigation.RequiresGuardianPartnerBenefits(form).Should().BeFalse("guardian partner benefits not required if guardian benefits not asked"); Builder.Modify(form).With(f => f.GuardianBenefits, BenefitsBuilder.NewWithBenefit()); Navigation.RequiresGuardianPartnerBenefits(form).Should().BeFalse("guardian partner benefits not required if guardian benefits positive"); form.GuardianBenefits.None(); Navigation.RequiresGuardianPartnerBenefits(form).Should().BeTrue("guardian partner benefits required if guardian benefits asked but answered 'no'"); form.GuardianBenefits.Unknown(); Navigation.RequiresGuardianPartnerBenefits(form).Should().BeTrue("guardian partner benefits required if guardian benefits asked but answered 'don't know'"); }