def test_combines_optional_fields_properly(self):
     CombinedForm = county_form_selector.get_combined_form_class(counties=[
         Counties.OTHER, Counties.SAN_FRANCISCO, Counties.CONTRA_COSTA
     ])
     expected_optional_fields = {F.HowDidYouHear, F.AdditionalInformation}
     self.assertTrue(
         expected_optional_fields == set(CombinedForm.optional_fields))
 def test_can_combine_validators(self):
     CombinedForm = county_form_selector.get_combined_form_class(
         counties=[
             'other',
             'sanfrancisco',
             'contracosta'
         ])
     self.assertListEqual(CombinedForm.validators,
                          [gave_preferred_contact_methods]
                          )
 def test_can_combine_validators(self):
     CombinedForm = county_form_selector.get_combined_form_class(
         counties=[
             Counties.OTHER,
             Counties.SAN_FRANCISCO,
             Counties.CONTRA_COSTA
         ])
     self.assertListEqual(CombinedForm.validators,
                          [gave_preferred_contact_methods]
                          )
 def test_can_combine_validators(self):
     CombinedForm = county_form_selector.get_combined_form_class(
         counties=[
             Counties.OTHER,
             Counties.SAN_FRANCISCO,
             Counties.CONTRA_COSTA
         ])
     self.assertListEqual(CombinedForm.validators,
                          [gave_preferred_contact_methods]
                          )
 def test_can_create_with_form_orgs_and_app_id(self):
     # given an applicant, some orgs, and a validated form
     applicant = factories.ApplicantFactory()
     organizations = list(Organization.objects.all()[:2])
     Form = county_form_selector.get_combined_form_class(
         counties=ALL_COUNTY_SLUGS)
     form = Form(mock.fake.all_county_answers(), validate=True)
     # make a submission
     submission = SubmissionsService.create_submission(
         form, organizations, applicant.id)
     self.assertEqual(submission.applicant_id, applicant.id)
     self.assertEqual(set(submission.organizations.all()),
                      set(organizations))
 def test_can_create_with_form_orgs_and_app_id(self):
     # given an applicant, some orgs, and a validated form
     applicant = factories.ApplicantFactory()
     organizations = list(Organization.objects.all()[:2])
     Form = county_form_selector.get_combined_form_class(
         counties=ALL_COUNTY_SLUGS)
     form = Form(mock.fake.all_county_answers(), validate=True)
     # make a submission
     submission = SubmissionsService.create_submission(
         form, organizations, applicant.id)
     self.assertEqual(submission.applicant_id, applicant.id)
     self.assertEqual(
         set(submission.organizations.all()),
         set(organizations))
 def test_combines_optional_fields_properly(self):
     CombinedForm = county_form_selector.get_combined_form_class(
         counties=[
             'other',
             'sanfrancisco',
             'contracosta'
         ])
     expected_optional_fields = {
         F.HowDidYouHear,
         F.AdditionalInformation
     }
     self.assertTrue(
         expected_optional_fields == set(CombinedForm.optional_fields)
     )
 def test_combines_optional_fields_properly(self):
     CombinedForm = county_form_selector.get_combined_form_class(
         counties=[
             Counties.OTHER,
             Counties.SAN_FRANCISCO,
             Counties.CONTRA_COSTA
         ])
     expected_optional_fields = {
         F.HowDidYouHear,
         F.AdditionalInformation
     }
     self.assertTrue(
         expected_optional_fields == set(CombinedForm.optional_fields)
     )
 def test_records_all_fields(self):
     data = mock.fake.alameda_county_form_answers()
     alameda = models.County.objects.get(slug='alameda')
     Form = county_form_selector.get_combined_form_class(
         counties=[alameda.slug])
     input_form = Form(data)
     self.assertTrue(input_form.is_valid())
     submission = SubmissionsService.create_for_counties(
         counties=[alameda], answers=input_form.cleaned_data)
     output_form = Form(submission.answers)
     self.assertTrue(output_form.is_valid())
     for key in data:
         field = output_form.get_field_by_input_name(key)
         self.assertFalse(field.is_empty(),
                          "couldn't find" + field.context_key)
Beispiel #10
0
 def test_records_all_fields(self):
     data = mock.fake.alameda_county_form_answers()
     alameda = models.County.objects.get(slug=constants.Counties.ALAMEDA)
     Form = county_form_selector.get_combined_form_class(
         counties=[alameda.slug])
     input_form = Form(data)
     self.assertTrue(input_form.is_valid())
     submission = SubmissionsService.create_for_counties(
         counties=[alameda], answers=input_form.cleaned_data)
     output_form = Form(submission.answers)
     self.assertTrue(output_form.is_valid())
     for key in data:
         field = output_form.get_field_by_input_name(key)
         self.assertFalse(
             field.is_empty(), "couldn't find" + field.context_key)
Beispiel #11
0
 def test_create_sub_with_existing_duplicate(self):
     applicant = factories.ApplicantFactory()
     answers = mock.fake.all_county_answers()
     org = Organization.objects.filter(is_receiving_agency=True).first()
     Form = county_form_selector.get_combined_form_class(
         counties=ALL_COUNTY_SLUGS)
     form = Form(answers, validate=True)
     a = SubmissionsService.create_submission(form, [org], applicant.id)
     self.assertFalse(a.duplicate_set_id)
     answers['last_name'] += 's'
     form = Form(answers, validate=True)
     b = SubmissionsService.create_submission(form, [org], applicant.id)
     self.assertTrue(b.duplicate_set_id)
     dup_set_subs = list(b.duplicate_set.submissions.all())
     for sub in (a, b):
         self.assertIn(sub, dup_set_subs)
 def test_create_sub_with_existing_duplicate(self):
     applicant = factories.ApplicantFactory()
     answers = mock.fake.all_county_answers()
     org = Organization.objects.filter(is_receiving_agency=True).first()
     Form = county_form_selector.get_combined_form_class(
         counties=ALL_COUNTY_SLUGS)
     form = Form(answers, validate=True)
     a = SubmissionsService.create_submission(form, [org], applicant.id)
     self.assertFalse(a.duplicate_set_id)
     answers['last_name'] += 's'
     form = Form(answers, validate=True)
     b = SubmissionsService.create_submission(form, [org], applicant.id)
     self.assertTrue(b.duplicate_set_id)
     dup_set_subs = list(b.duplicate_set.submissions.all())
     for sub in (a, b):
         self.assertIn(sub, dup_set_subs)
Beispiel #13
0
 def test_displays_all_fields(self):
     data = mock.fake.alameda_pubdef_answers()
     alameda = models.County.objects.get(slug=constants.Counties.ALAMEDA)
     Form = county_form_selector.get_combined_form_class(
         counties=[alameda.slug])
     input_form = Form(data)
     input_form.is_valid()
     submission = SubmissionsService.create_for_counties(
         counties=[alameda], answers=input_form.cleaned_data)
     user = User.objects.get(username="******")
     display_form, letter_display = \
         submission.get_display_form_for_user(user)
     page_data = str(display_form) + str(letter_display)
     for key in data:
         field = display_form.get_field_by_input_name(key)
         self.assertIn(field.get_html_class_name(), page_data,
                       "couldn't find " + field.get_html_class_name())
def populate_answer_lookup():
    from user_accounts.models import Organization
    from formation.forms import county_form_selector, DeclarationLetterFormSpec
    letter_form_class = DeclarationLetterFormSpec().build_form_class()
    for org in Organization.objects.filter(is_receiving_agency=True):
        answer_mock_method_name = org.slug + '_answers'
        if not hasattr(fake, answer_mock_method_name):
            raise AttributeError(
                'There is no mock form answers method for {}'.format(org.slug))
        form_class = county_form_selector.get_combined_form_class(
            counties=[org.county.slug])
        mock_method_form_pairs = {}
        mock_method_form_pairs[answer_mock_method_name] = form_class
        if org.requires_declaration_letter:
            mock_method_form_pairs.update(
                declaration_letter_answers=letter_form_class)
        answer_lookup[org.slug] = AnswerGenerator(mock_method_form_pairs)
Beispiel #15
0
def populate_answer_lookup():
    from user_accounts.models import Organization
    from formation.forms import county_form_selector, DeclarationLetterFormSpec
    letter_form_class = DeclarationLetterFormSpec().build_form_class()
    for org in Organization.objects.filter(is_receiving_agency=True):
        answer_mock_method_name = org.slug + '_answers'
        if not hasattr(fake, answer_mock_method_name):
            raise AttributeError(
                'There is no mock form answers method for {}'.format(org.slug))
        form_class = county_form_selector.get_combined_form_class(
            counties=[org.county.slug])
        mock_method_form_pairs = {}
        mock_method_form_pairs[answer_mock_method_name] = form_class
        if org.requires_declaration_letter:
            mock_method_form_pairs.update(
                declaration_letter_answers=letter_form_class)
        answer_lookup[org.slug] = AnswerGenerator(mock_method_form_pairs)
Beispiel #16
0
 def test_displays_all_fields(self):
     data = mock.fake.alameda_pubdef_answers()
     alameda = models.County.objects.get(slug=constants.Counties.ALAMEDA)
     Form = county_form_selector.get_combined_form_class(
         counties=[alameda.slug])
     input_form = Form(data)
     input_form.is_valid()
     submission = SubmissionsService.create_for_counties(
         counties=[alameda], answers=input_form.cleaned_data)
     user = User.objects.get(username="******")
     display_form, letter_display = \
         submission.get_display_form_for_user(user)
     page_data = str(display_form) + str(letter_display)
     for key in data:
         field = display_form.get_field_by_input_name(key)
         self.assertIn(
             field.get_html_class_name(), page_data,
             "couldn't find " + field.get_html_class_name())
Beispiel #17
0
 def test_can_create_with_form_orgs_and_app_id(self):
     # given an applicant, some orgs, and a validated form
     applicant = Applicant()
     applicant.save()
     organizations = list(Organization.objects.all()[:2])
     Form = county_form_selector.get_combined_form_class(
         counties=ALL_COUNTY_SLUGS)
     form = Form(mock.fake.all_county_answers(), validate=True)
     # make a submission
     submission = SubmissionsService.create_submission(
         form, organizations, applicant.id)
     # assert that the correct event was created
     events = ApplicationEvent.objects.filter(
         applicant_id=applicant.id).all()
     self.assertEqual(len(events), 1)
     self.assertEqual(events[0].name,
                      ApplicationEvent.APPLICATION_SUBMITTED)
     self.assertEqual(submission.applicant_id, applicant.id)
     self.assertEqual(set(submission.organizations.all()),
                      set(organizations))
Beispiel #18
0
 def get_sf_form(self, *args):
     form_class = county_form_selector.get_combined_form_class(
         counties=[Counties.SAN_FRANCISCO])
     return form_class(*args)
Beispiel #19
0
 def get_sf_form(self, *args):
     form_class = county_form_selector.get_combined_form_class(
         counties=['sanfrancisco'])
     return form_class(*args)
Beispiel #20
0
 def get_form_class(self):
     session_data = self.get_session_data()
     counties = session_data.getlist('counties')
     return county_form_selector.get_combined_form_class(counties=counties)
Beispiel #21
0
 def get_sf_form(self, *args):
     form_class = county_form_selector.get_combined_form_class(
         counties=[Counties.SAN_FRANCISCO])
     return form_class(*args)
Beispiel #22
0
def build_seed_submissions():
    create_seed_users()
    from user_accounts.models import Organization
    from formation.forms import county_form_selector
    cc_pubdef = Organization.objects.get(
        slug=constants.Organizations.COCO_PUBDEF)
    a_pubdef = Organization.objects.get(
        slug=constants.Organizations.ALAMEDA_PUBDEF)
    ebclc = Organization.objects.get(
        slug=constants.Organizations.EBCLC)
    sf_pubdef = Organization.objects.get(
        slug=constants.Organizations.SF_PUBDEF)
    monterey_pubdef = Organization.objects.get(
        slug=constants.Organizations.MONTEREY_PUBDEF)
    solano_pubdef = Organization.objects.get(
        slug=constants.Organizations.SOLANO_PUBDEF)
    san_diego_pubdef = Organization.objects.get(
        slug=constants.Organizations.SAN_DIEGO_PUBDEF)
    san_joaquin_pubdef = Organization.objects.get(
        slug=constants.Organizations.SAN_JOAQUIN_PUBDEF)
    santa_clara_pubdef = Organization.objects.get(
        slug=constants.Organizations.SANTA_CLARA_PUBDEF)
    fresno_pubdef = Organization.objects.get(
        slug=constants.Organizations.FRESNO_PUBDEF)
    receiving_orgs = [
        cc_pubdef, a_pubdef, ebclc, sf_pubdef, monterey_pubdef,
        solano_pubdef, san_diego_pubdef, san_joaquin_pubdef,
        santa_clara_pubdef, fresno_pubdef]
    answer_pairs = {
        sf_pubdef.slug: fake.sf_county_form_answers,
        cc_pubdef.slug: fake.contra_costa_county_form_answers,
        ebclc.slug: fake.ebclc_answers,
        a_pubdef.slug: fake.alameda_pubdef_answers,
        monterey_pubdef.slug: fake.monterey_pubdef_answers,
        solano_pubdef.slug: fake.solano_pubdef_answers,
        san_diego_pubdef.slug: fake.san_diego_pubdef_answers,
        san_joaquin_pubdef.slug: fake.san_joaquin_pubdef_answers,
        santa_clara_pubdef.slug: fake.santa_clara_pubdef_answers,
        fresno_pubdef.slug: fake.fresno_pubdef_answers,
    }
    form_pairs = {
        org.slug: county_form_selector.get_combined_form_class(
            counties=[org.county.slug])
        for org in receiving_orgs
    }
    # make 2 submissions to each org
    applicants = []
    subs = []
    for org in receiving_orgs:
        for i in range(2):
            raw_answers = answer_pairs[org.slug]()
            Form = form_pairs[org.slug]
            form = Form(raw_answers, validate=True)
            applicant = models.Applicant()
            applicant.save()
            applicants.append(applicant)
            sub = models.FormSubmission(
                applicant=applicant,
                answers=form.cleaned_data
                )
            if org in (a_pubdef, santa_clara_pubdef, monterey_pubdef):
                letter = fake.declaration_letter_answers()
                sub.answers.update(letter)
            sub.save()
            application = models.Application(
                organization=org, form_submission=sub)
            application.save()
            StatusUpdateFactory.create(
                application=application, author=org.profiles.first().user)
            subs.append(sub)
    # make 1 submission to multiple orgs
    target_orgs = [
        a_pubdef, cc_pubdef, sf_pubdef, monterey_pubdef, solano_pubdef,
        san_diego_pubdef, san_joaquin_pubdef, santa_clara_pubdef,
        fresno_pubdef]
    answers = fake.all_county_answers()
    Form = county_form_selector.get_combined_form_class(
        counties=[org.county.slug for org in target_orgs])
    form = Form(answers, validate=True)
    applicant = models.Applicant()
    applicant.save()
    applicants.append(applicant)
    multi_org_sub = models.FormSubmission(
            applicant=applicant, answers=form.cleaned_data)
    multi_org_sub.answers.update(fake.declaration_letter_answers())
    multi_org_sub.save()
    applications = [
        models.Application(organization=org, form_submission=multi_org_sub)
        for org in target_orgs
    ]
    models.Application.objects.bulk_create(applications)
    subs.append(multi_org_sub)
    # fake the date received for each sub
    for sub in subs:
        sub.date_received = local(fake.date_time_between('-2w', 'now'))
        sub.save()
    # make a bundle for each org
    for org in receiving_orgs:
        org_subs = []
        for sub in subs:
            has_app = sub.applications.filter(organization=org).exists()
            if has_app and sub != multi_org_sub:
                org_subs.append(sub)
        bundle = BundlesService.create_bundle_from_submissions(
            organization=org,
            submissions=org_subs,
            skip_pdf=True)
        # save bundle
        filename = 'mock_1_bundle_to_' + org.slug + ".json"
        dump_as_json([bundle], fixture_path(filename))
        filename = 'mock_{}_submissions_to_{}.json'.format(
            len(org_subs), org.slug)
        serialize_subs(org_subs, fixture_path(filename))
    serialize_subs(
        [multi_org_sub],
        fixture_path('mock_1_submission_to_multiple_orgs.json'))
    events = []
    for applicant in applicants:
        events.extend(
            make_mock_submission_event_sequence(applicant))
    dump_as_json(events, fixture_path('mock_application_events.json'))
 def test_can_combine_validators(self):
     CombinedForm = county_form_selector.get_combined_form_class(
         counties=['other', 'sanfrancisco', 'contracosta'])
     self.assertListEqual(CombinedForm.validators,
                          [gave_preferred_contact_methods])
 def get_form_class(self):
     return county_form_selector.get_combined_form_class(
         counties=self.county_slugs)
 def get_form_class(self):
     return county_form_selector.get_combined_form_class(
         counties=self.county_slugs)
 def test_combines_optional_fields_properly(self):
     CombinedForm = county_form_selector.get_combined_form_class(
         counties=['other', 'sanfrancisco', 'contracosta'])
     expected_optional_fields = {F.HowDidYouHear, F.AdditionalInformation}
     self.assertTrue(
         expected_optional_fields == set(CombinedForm.optional_fields))