|
| 1 | +from datetime import timedelta |
| 2 | + |
1 | 3 | from django.test import TestCase |
| 4 | +from django.utils import timezone |
2 | 5 | from rest_framework.test import APIRequestFactory, force_authenticate |
3 | 6 |
|
4 | | -from projects.models import Project |
| 7 | +from partner_programs.models import PartnerProgram, PartnerProgramProject |
| 8 | +from projects.models import Collaborator, Project |
5 | 9 | from tests.constants import USER_CREATE_DATA |
6 | 10 |
|
7 | 11 | from users.views import UserList |
@@ -112,6 +116,51 @@ def test_invites_creation_with_empty_data(self): |
112 | 116 |
|
113 | 117 | self.assertEqual(response.status_code, 400) |
114 | 118 |
|
| 119 | + def test_invites_creation_for_existing_collaborator(self): |
| 120 | + sender = self._user_create("sender@example.com") |
| 121 | + recipient = self._user_create("recipient@example.com") |
| 122 | + project = self._project_create(sender) |
| 123 | + Collaborator.objects.create(user=recipient, project=project, role="Developer") |
| 124 | + |
| 125 | + create_user = self.invite_create_data.copy() |
| 126 | + create_user["user"] = recipient.id |
| 127 | + create_user["project"] = project.id |
| 128 | + request = self.factory.post("invites/", create_user, format="json") |
| 129 | + force_authenticate(request, user=sender) |
| 130 | + |
| 131 | + response = self.invite_list_view(request) |
| 132 | + |
| 133 | + self.assertEqual(response.status_code, 400) |
| 134 | + self.assertIn("user", response.data) |
| 135 | + |
| 136 | + def test_invites_creation_for_non_program_member(self): |
| 137 | + sender = self._user_create("sender@example.com") |
| 138 | + recipient = self._user_create("recipient@example.com") |
| 139 | + project = self._project_create(sender) |
| 140 | + now = timezone.now() |
| 141 | + program = PartnerProgram.objects.create( |
| 142 | + name="Test program", |
| 143 | + tag="test", |
| 144 | + city="Moscow", |
| 145 | + datetime_registration_ends=now + timedelta(days=1), |
| 146 | + datetime_started=now, |
| 147 | + datetime_finished=now + timedelta(days=30), |
| 148 | + ) |
| 149 | + PartnerProgramProject.objects.create( |
| 150 | + partner_program=program, project=project |
| 151 | + ) |
| 152 | + |
| 153 | + create_user = self.invite_create_data.copy() |
| 154 | + create_user["user"] = recipient.id |
| 155 | + create_user["project"] = project.id |
| 156 | + request = self.factory.post("invites/", create_user, format="json") |
| 157 | + force_authenticate(request, user=sender) |
| 158 | + |
| 159 | + response = self.invite_list_view(request) |
| 160 | + |
| 161 | + self.assertEqual(response.status_code, 400) |
| 162 | + self.assertIn("user", response.data) |
| 163 | + |
115 | 164 | def test_accept_invite_by_intended_user(self): |
116 | 165 | sender = self._user_create("sender@example.com") |
117 | 166 | recipient = self._user_create("recipient@example.com") |
|
0 commit comments