summaryrefslogtreecommitdiff
path: root/fundraising
diff options
context:
space:
mode:
authoramichon <antoine@hashbang.coop>2025-10-30 16:41:48 +0100
committerSaptak Sengupta <saptak013@gmail.com>2025-12-18 15:06:53 +0530
commit4ff6a93bf4c5f2193e020c151ff8d6b6fe8746d2 (patch)
tree1ac9a0c059de4e4052f47f42e35da6ea2352b6e1 /fundraising
parent4875296ff8d990e72594dd9065d9032af4c7bcad (diff)
feat: Add gold members on pages foundation and community
Diffstat (limited to 'fundraising')
-rw-r--r--fundraising/templatetags/fundraising_extras.py7
-rw-r--r--fundraising/tests/test_templatetags.py49
2 files changed, 56 insertions, 0 deletions
diff --git a/fundraising/templatetags/fundraising_extras.py b/fundraising/templatetags/fundraising_extras.py
index 2d78ef9e..b5dbbe5f 100644
--- a/fundraising/templatetags/fundraising_extras.py
+++ b/fundraising/templatetags/fundraising_extras.py
@@ -118,3 +118,10 @@ def top_corporate_members():
members = CorporateMember.objects.by_membership_level()
return {"members": members["diamond"] + members["platinum"]}
+
+
+@register.inclusion_tag("fundraising/includes/gold_corporate_members.html")
+def gold_corporate_members():
+ members = CorporateMember.objects.by_membership_level()
+
+ return {"members": members["gold"]}
diff --git a/fundraising/tests/test_templatetags.py b/fundraising/tests/test_templatetags.py
index 42118779..b5ebb877 100644
--- a/fundraising/tests/test_templatetags.py
+++ b/fundraising/tests/test_templatetags.py
@@ -17,6 +17,7 @@ from ..models import (
from ..templatetags.fundraising_extras import (
display_django_heroes,
donation_form_with_heart,
+ gold_corporate_members,
top_corporate_members,
)
@@ -167,3 +168,51 @@ class TestTopCorporateMembers(TestCase):
expected = [member_5, member_4, member_6, member_2, member_1, member_3]
self.assertEqual(members, expected)
+
+
+class TestGoldCorporateMembers(TestCase):
+ past_date = date(2000, 1, 1)
+ future_date = date(3000, 1, 1)
+
+ def test_with_no_gold_members(self):
+ members = gold_corporate_members()["members"]
+ self.assertEqual(members, [])
+
+ def test_with_gold_members(self):
+ member_1 = CorporateMember.objects.create(membership_level=3)
+ member_2 = CorporateMember.objects.create(membership_level=3)
+ member_3 = CorporateMember.objects.create(membership_level=3)
+
+ member_1.invoice_set.create(amount=4, expiration_date=self.future_date)
+ member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
+ member_3.invoice_set.create(amount=2, expiration_date=self.future_date)
+
+ members = gold_corporate_members()["members"]
+
+ self.assertEqual(members, [member_2, member_1, member_3])
+
+ def test_with_gold_members_and_other_members(self):
+ member_1 = CorporateMember.objects.create(membership_level=3)
+ member_2 = CorporateMember.objects.create(membership_level=3)
+ member_3 = CorporateMember.objects.create(membership_level=4)
+
+ member_1.invoice_set.create(amount=4, expiration_date=self.future_date)
+ member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
+ member_3.invoice_set.create(amount=2, expiration_date=self.future_date)
+
+ members = gold_corporate_members()["members"]
+ self.assertEqual(members, [member_2, member_1])
+ self.assertNotIn(member_3, members)
+
+ def test_with_gold_members_and_expired_invoice(self):
+ member_1 = CorporateMember.objects.create(membership_level=3)
+ member_2 = CorporateMember.objects.create(membership_level=3)
+ member_3 = CorporateMember.objects.create(membership_level=4)
+
+ member_1.invoice_set.create(amount=4, expiration_date=self.future_date)
+ member_2.invoice_set.create(amount=8, expiration_date=self.future_date)
+ member_3.invoice_set.create(amount=2, expiration_date=self.past_date)
+
+ members = gold_corporate_members()["members"]
+ self.assertEqual(members, [member_2, member_1])
+ self.assertNotIn(member_3, members)