3030 delete_divisions_period ,
3131 delete_period ,
3232 delete_period_groups ,
33+ get_period_users ,
3334 get_user_curator_periods ,
3435 get_user_divisions_periods ,
3536 get_user_participant_periods ,
@@ -158,7 +159,7 @@ def test_user_periods_without_perm(self) -> None:
158159 )
159160
160161 def _create_curator_periods (self , project : Project ) -> list [Period ]:
161- """Создание периодов для проекта c кураторской группой."""
162+ """Создание периодов для проекта с кураторской группой."""
162163 periods : list [Period ] = []
163164 for _ in range (3 ):
164165 organization = Organization .objects .create (attributes = '' )
@@ -171,6 +172,71 @@ def _create_curator_periods(self, project: Project) -> list[Period]:
171172 return periods
172173
173174
175+ class PeriodUsersTestCase (TestCase ):
176+ """Тестирование получения пользователей периода."""
177+
178+ def setUp (self ) -> None :
179+ """Создание данных для тестирования."""
180+ self .organization_content_type = ContentType .objects .get_for_model (Organization )
181+
182+ self .project_creator = User .objects .create (username = 'project_creator' , email = 'project_creator@gmail.com' )
183+ self .period_creator = User .objects .create (username = 'period_creator' , email = 'period_creator@gmail.com' )
184+ self .period_group_users = [User .objects .create (
185+ username = f'period_group_user{ i } ' ,
186+ email = f'period_group_user{ i } @gmail.com' ,
187+ ) for i in range (1 , 4 )]
188+ self .organization_head = User .objects .create (username = 'organization_head' , email = 'organization_head@gmail.com' )
189+ self .organization_users = [User .objects .create (
190+ username = f'organization_user{ i } ' ,
191+ email = f'organization_user{ i } @gmail.com' ,
192+ ) for i in range (1 , 4 )]
193+ self .privilege_users = [User .objects .create (
194+ username = f'privilege_user{ i } ' ,
195+ email = f'privilege_user{ i } @gmail.com' ,
196+ ) for i in range (1 , 4 )]
197+ self .curators = [User .objects .create (
198+ username = f'curator{ i } ' ,
199+ email = f'curator{ i } @gmail.com' ,
200+ ) for i in range (1 , 4 )]
201+ self .extra_users = [User .objects .create (
202+ username = f'extra_user{ i } ' ,
203+ email = f'extra_user{ i } @gmail.com' ,
204+ ) for i in range (1 , 4 )]
205+
206+ self .project = Project .objects .create (user = self .project_creator , content_type = self .organization_content_type )
207+ self .period = Period .objects .create (project = self .project , user = self .period_creator )
208+ self .period_group = PeriodGroup .objects .create (name = 'Группа периода' , period = self .period )
209+ self .period_group .users .set (self .period_group_users )
210+ self .organization = Organization .objects .create (
211+ name = 'Организация периода' ,
212+ attributes = '' ,
213+ user = self .organization_head ,
214+ )
215+ self .period .division_set .create (object_id = self .organization .id )
216+ self .organization .users .set (self .organization_users )
217+ self .privilege = Privilege .objects .create (name = 'Привилегия' , key = 'privilege' )
218+ self .period_privileges = [PeriodPrivilege .objects .create (
219+ period = self .period ,
220+ privilege = self .privilege ,
221+ user = user ,
222+ ) for user in self .privilege_users ]
223+ self .curator_group = CuratorGroup .objects .create (name = 'Кураторская группа' )
224+ self .curator_group .organization .add (self .organization )
225+ self .curator_group .users .set (self .curators )
226+
227+ def test_get_period_users (self ) -> None :
228+ """Тестирование получения пользователей периода."""
229+ self .assertEqual ({
230+ self .project_creator ,
231+ self .period_creator ,
232+ * self .period_group_users ,
233+ self .organization_head ,
234+ * self .organization_users ,
235+ * self .privilege_users ,
236+ * self .curators ,
237+ }, set (get_period_users (self .period )))
238+
239+
174240class PeriodTestCase (TestCase ):
175241 """Тестирование основных действий с периодом."""
176242
0 commit comments