Skip to content

Commit 3752fa1

Browse files
committed
Fix PSF membership link (#2787) with dynamic logic
1 parent 7a8bd53 commit 3752fa1

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

templates/includes/authenticated.html

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,20 @@
77
<li class="tier-2 element-1" role="treeitem"><a href="{% url 'users:user_profile_edit' %}">Edit your user profile</a></li>
88
<li class="tier-2 element-2" role="treeitem"><a href="{% url 'account_change_password' %}">Change your password</a></li>
99
{% if request.user.has_membership %}
10-
<li class="tier-2 element-3" role="treeitem"><a href="{% url 'users:user_membership_edit' %}">Edit your PSF Basic membership</a></li>
10+
<li class="tier-2 element-3" role="treeitem">
11+
<!-- <a href="{% url 'users:user_membership_edit' %}">Edit your PSF Basic membership</a> -->
12+
{% if user.is_authenticated %}
13+
{% if user.has_membership %}
14+
<a href="{% url 'users:user_membership_edit' %}">Edit your membership</a>
15+
{% else %}
16+
<a href="{% url 'users:user_membership_create' %}">Join PSF Membership</a>
17+
{% endif %}
18+
{% else %}
19+
<a href="{% url 'account_login' %}?next=https://psfmember.org/membership/">
20+
Login to manage membership
21+
</a>
22+
{% endif %}
23+
</li>
1124
{% else %}
1225
<li class="tier-2 element-3" role="treeitem"><a href="{% url 'users:user_membership_create' %}">Become a PSF Basic member</a></li>
1326
{% endif %}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
from django.test import TestCase, RequestFactory
2+
from django.template import Context, Template
3+
from django.contrib.auth import get_user_model
4+
from django.contrib.auth.models import AnonymousUser
5+
from users.models import Membership
6+
7+
User = get_user_model()
8+
9+
class MembershipLinkTests(TestCase):
10+
11+
def setUp(self):
12+
self.factory = RequestFactory()
13+
self.user = User.objects.create_user(username='testuser', password='123')
14+
self.template = Template("""
15+
{% include 'includes/authenticated.html' %}
16+
""")
17+
18+
def render_template(self, user):
19+
request = self.factory.get('/')
20+
request.user = user
21+
return self.template.render(Context({'user': user, 'request': request}))
22+
23+
def test_anonymous_user(self):
24+
html = self.render_template(AnonymousUser())
25+
# Anonymous users should see "Sign In"
26+
self.assertIn('Sign In', html)
27+
28+
def test_logged_in_non_member(self):
29+
html = self.render_template(self.user)
30+
# Logged-in but not a member -> should see the membership join link
31+
self.assertIn('Become a PSF Basic member', html)
32+
33+
def test_logged_in_member(self):
34+
Membership.objects.create(creator=self.user)
35+
html = self.render_template(self.user)
36+
self.assertIn('Edit your PSF Basic membership', html)

0 commit comments

Comments
 (0)