def test_invalidate_form_if_no_primary_contact(self): self.data.pop("contact-0-primary") user = baker.make(settings.AUTH_USER_MODEL) form = SponsorshipApplicationForm(self.data, self.files, user=user) self.assertFalse(form.is_valid()) msg = "You have to mark at least one contact as the primary one." self.assertIn(msg, form.errors["__all__"])
def test_create_sponsor_with_valid_data(self): user = baker.make(settings.AUTH_USER_MODEL) form = SponsorshipApplicationForm(self.data, self.files, user=user) self.assertTrue(form.is_valid(), form.errors) sponsor = form.save() self.assertTrue(sponsor.pk) self.assertEqual(sponsor.name, "CompanyX") self.assertTrue(sponsor.web_logo) self.assertEqual(sponsor.primary_phone, "+14141413131") self.assertEqual(sponsor.mailing_address_line_1, "4th street") self.assertEqual(sponsor.mailing_address_line_2, "424") self.assertEqual(sponsor.city, "New York") self.assertEqual(sponsor.state, "NY") self.assertEqual(sponsor.postal_code, "10212") self.assertEqual(sponsor.country, "US") self.assertEqual(sponsor.country.name, "United States of America") self.assertEqual(sponsor.description, "") self.assertIsNone(sponsor.print_logo.name) self.assertEqual(sponsor.landing_page_url, "") contact = sponsor.contacts.get() self.assertEqual(contact.name, "Bernardo") self.assertEqual(contact.email, "*****@*****.**") self.assertEqual(contact.phone, "+1999999999") self.assertIsNone(contact.user)
def test_required_fields(self): required_fields = [ "name", "web_logo", "primary_phone", "mailing_address_line_1", "city", "postal_code", "country", "__all__", ] form = SponsorshipApplicationForm( { "contact-TOTAL_FORMS": 0, "contact-MAX_NUM_FORMS": 5, "contact-MIN_NUM_FORMS": 1, "contact-INITIAL_FORMS": 1, } ) self.assertFalse(form.is_valid()) self.assertEqual(len(required_fields), len(form.errors), msg=form.errors) for required in required_fields: self.assertIn(required, form.errors)
def test_invalidate_form_if_user_selects_sponsort_from_other_user(self): contact = baker.make(SponsorContact, user__email="*****@*****.**") self.data = {"sponsor": contact.sponsor.id} other_user = baker.make(settings.AUTH_USER_MODEL) form = SponsorshipApplicationForm(self.data, self.files, user=other_user) self.assertFalse(form.is_valid()) self.assertFalse(form.user_with_previous_sponsors) self.assertIn("sponsor", form.errors) self.assertEqual(1, len(form.errors))
def test_use_previous_user_sponsor(self): contact = baker.make(SponsorContact, user__email="*****@*****.**") self.data = {"sponsor": contact.sponsor.id} form = SponsorshipApplicationForm(self.data, self.files, user=contact.user) self.assertTrue(form.is_valid(), form.errors) saved_sponsor = form.save() self.assertTrue(form.user_with_previous_sponsors) self.assertEqual(saved_sponsor, contact.sponsor) self.assertEqual(Sponsor.objects.count(), 1) self.assertEqual(saved_sponsor.contacts.get(), contact)
def test_create_sponsor_with_valid_data_for_non_required_inputs(self, ): self.data["description"] = "Important company" self.data["landing_page_url"] = "https://companyx.com" self.files["print_logo"] = get_static_image_file_as_upload( "psf-logo_print.png", "logo_print.png") form = SponsorshipApplicationForm(self.data, self.files) self.assertTrue(form.is_valid(), form.errors) sponsor = form.save() self.assertEqual(sponsor.description, "Important company") self.assertTrue(sponsor.print_logo) self.assertFalse(form.user_with_previous_sponsors) self.assertEqual(sponsor.landing_page_url, "https://companyx.com")
def test_create_multiple_contacts_and_user_contact(self): user_email = "*****@*****.**" self.data.update({ "contact-1-name": "Secondary", "contact-1-email": user_email, "contact-1-phone": "+1123123123", "contact-TOTAL_FORMS": 2, }) user = baker.make(settings.AUTH_USER_MODEL, email=user_email.upper()) form = SponsorshipApplicationForm(self.data, self.files, user=user) self.assertTrue(form.is_valid(), form.errors) sponsor = form.save() self.assertEqual(2, sponsor.contacts.count()) c1, c2 = sorted(sponsor.contacts.all(), key=lambda c: c.name) self.assertEqual(c1.name, "Bernardo") self.assertTrue(c1.primary) # first contact should be the primary one self.assertIsNone(c1.user) self.assertEqual(c2.name, "Secondary") self.assertFalse(c2.primary) self.assertEqual(c2.user, user)
def test_invalidate_form_if_sponsor_with_sponsorships(self): contact = baker.make(SponsorContact, user__email="*****@*****.**") self.data = {"sponsor": contact.sponsor.id} prev_sponsorship = baker.make("sponsors.Sponsorship", sponsor=contact.sponsor) form = SponsorshipApplicationForm(self.data, self.files, user=contact.user) self.assertFalse(form.is_valid()) self.assertIn("sponsor", form.errors) prev_sponsorship.status = prev_sponsorship.FINALIZED prev_sponsorship.save() form = SponsorshipApplicationForm(self.data, self.files, user=contact.user) self.assertTrue(form.is_valid())