コード例 #1
0
 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__"])
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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))
コード例 #5
0
    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)
コード例 #6
0
    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")
コード例 #7
0
    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)
コード例 #8
0
    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())