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)
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)
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)
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)
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)
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 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))
def get_sf_form(self, *args): form_class = county_form_selector.get_combined_form_class( counties=[Counties.SAN_FRANCISCO]) return form_class(*args)
def get_sf_form(self, *args): form_class = county_form_selector.get_combined_form_class( counties=['sanfrancisco']) return form_class(*args)
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)
def get_sf_form(self, *args): form_class = county_form_selector.get_combined_form_class( counties=[Counties.SAN_FRANCISCO]) return form_class(*args)
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))