|
| 1 | +from types import SimpleNamespace |
| 2 | + |
1 | 3 | from django.test import TestCase |
2 | 4 | from rest_framework import status |
3 | 5 | from rest_framework.test import APIClient |
4 | 6 |
|
| 7 | +from invites.filters import InviteFilter |
5 | 8 | from invites.models import Invite |
6 | 9 | from invites.tests.helpers import ( |
7 | 10 | add_collaborator, |
@@ -224,6 +227,40 @@ def test_project_leader_can_list_project_invites_by_project_filter(self): |
224 | 227 | {first_invite.id, second_invite.id}, |
225 | 228 | ) |
226 | 229 |
|
| 230 | + def test_project_leader_can_list_invite_after_creating_via_api(self): |
| 231 | + leader = create_user(prefix="leader") |
| 232 | + recipient = create_user(prefix="recipient") |
| 233 | + project = create_project(leader=leader) |
| 234 | + self.client.force_authenticate(leader) |
| 235 | + |
| 236 | + create_response = self.client.post( |
| 237 | + "/invites/", |
| 238 | + invite_payload(project, recipient), |
| 239 | + format="json", |
| 240 | + ) |
| 241 | + list_response = self.client.get("/invites/", {"project": project.id}) |
| 242 | + |
| 243 | + self.assertEqual(create_response.status_code, status.HTTP_201_CREATED) |
| 244 | + self.assertEqual(list_response.status_code, status.HTTP_200_OK) |
| 245 | + self.assertEqual( |
| 246 | + [item["id"] for item in list_response.data], |
| 247 | + [create_response.data["id"]], |
| 248 | + ) |
| 249 | + |
| 250 | + def test_project_filter_handles_scalar_multi_digit_project_id(self): |
| 251 | + leader = create_user(prefix="leader") |
| 252 | + projects = [create_project(leader=leader) for _ in range(12)] |
| 253 | + target_project = projects[-1] |
| 254 | + invite = create_invite(project=target_project) |
| 255 | + |
| 256 | + filtered = InviteFilter( |
| 257 | + data={"project": str(target_project.id)}, |
| 258 | + queryset=Invite.objects.all(), |
| 259 | + request=SimpleNamespace(user=leader), |
| 260 | + ).qs |
| 261 | + |
| 262 | + self.assertEqual(list(filtered), [invite]) |
| 263 | + |
227 | 264 | def test_project_leader_cannot_use_user_any_filter(self): |
228 | 265 | leader = create_user(prefix="leader") |
229 | 266 | project = create_project(leader=leader) |
|
0 commit comments