summaryrefslogtreecommitdiff
path: root/members/test_forms.py
blob: e26f48d7a356511cbd9c4b625c4578dfcd6703b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from django.conf import settings
from django.core import mail
from django.test import TestCase

from .forms import CorporateMemberSignUpForm
from .models import CorporateMember
from .utils import get_temporary_image


class CorporateMemberCorporateMemberSignUpFormTests(TestCase):
    def setUp(self):
        test_image = get_temporary_image()
        self.valid_data = {
            "display_name": "Foo Widgets",
            "billing_name": "Foo Widgets, Inc.",
            "url": "http://example.com",
            "contact_name": "Joe Developer",
            "contact_email": "joe@example.com",
            "billing_email": "",
            "membership_level": 2,
            "address": "USA",
            "description": "We make widgets!",
            "django_usage": "fun",
            "amount": 2000,
        }
        self.file_data = {"logo": test_image}

    def test_submit_success(self):
        data = self.valid_data
        form = CorporateMemberSignUpForm(data, self.file_data)
        self.assertTrue(form.is_valid())
        instance = form.save()
        self.assertEqual(instance.display_name, data["display_name"])
        self.assertEqual(instance.django_usage, "fun")
        self.assertEqual(instance.invoice_set.get().amount, data["amount"])

        self.assertEqual(len(mail.outbox), 1)
        msg = mail.outbox[0]
        self.assertEqual(
            msg.subject, "Django Corporate Membership Application: Foo Widgets"
        )
        self.assertEqual(
            msg.body,
            (
                "Thanks for applying to be a corporate member of the "
                "Django Software Foundation! Your application is being reviewed, "
                "and we'll follow up a response from the board after our next "
                "monthly meeting."
            ),
        )
        self.assertEqual(msg.from_email, settings.FUNDRAISING_DEFAULT_FROM_EMAIL)
        self.assertEqual(
            msg.to,
            [
                settings.FUNDRAISING_DEFAULT_FROM_EMAIL,
                data["contact_email"],
                "treasurer@djangoproject.com",
                "dsf-board@googlegroups.com",
            ],
        )

    def test_logo_required(self):
        form = CorporateMemberSignUpForm(self.valid_data)  # missing request.FILES
        self.assertFalse(form.is_valid())
        self.assertEqual(form.errors, {"logo": ["This field is required."]})

    def test_django_usage_required(self):
        data = self.valid_data.copy()
        del data["django_usage"]
        form = CorporateMemberSignUpForm(data, self.file_data)
        self.assertFalse(form.is_valid())
        self.assertEqual(form.errors, {"django_usage": ["This field is required."]})

    def test_renewal_success(self):
        model_data = self.valid_data.copy()
        del model_data["amount"]
        member = CorporateMember.objects.create(**model_data)
        data = self.valid_data
        form = CorporateMemberSignUpForm(data, self.file_data, instance=member)
        self.assertTrue(form.is_valid())
        instance = form.save()
        self.assertEqual(instance.display_name, data["display_name"])
        self.assertEqual(instance.django_usage, "fun")
        self.assertEqual(instance.invoice_set.get().amount, data["amount"])

        self.assertEqual(len(mail.outbox), 1)
        msg = mail.outbox[0]
        self.assertEqual(
            msg.subject, "Django Corporate Membership Renewal: Foo Widgets"
        )
        self.assertEqual(
            msg.body,
            (
                "Thanks for renewing as a corporate member of the "
                "Django Software Foundation! Your renewal is received, "
                "and we'll follow up with an invoice soon."
            ),
        )
        self.assertEqual(msg.from_email, settings.FUNDRAISING_DEFAULT_FROM_EMAIL)
        self.assertEqual(
            msg.to,
            [
                settings.FUNDRAISING_DEFAULT_FROM_EMAIL,
                data["contact_email"],
                "treasurer@djangoproject.com",
                "dsf-board@googlegroups.com",
            ],
        )