mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 07:49:57 +01:00 
			
		
		
		
	- /apps/activity/api/serializers.py - /apps/activity/api/urls.py - /apps/activity/api/views.py - /apps/activity/tests/test_activities.py - /apps/activity/__init__.py - /apps/activity/admin.py - /apps/activity/apps.py - /apps/activity/forms.py - /apps/activity/tables.py - /apps/activity/urls.py - /apps/activity/views.py - /apps/api/__init__.py - /apps/api/apps.py - /apps/api/serializers.py - /apps/api/tests.py - /apps/api/urls.py - /apps/api/views.py - /apps/api/viewsets.py - /apps/logs/signals.py - /apps/logs/apps.py - /apps/logs/__init__.py - /apps/logs/api/serializers.py - /apps/logs/api/urls.py - /apps/logs/api/views.py - /apps/member/api/serializers.py - /apps/member/api/urls.py - /apps/member/api/views.py - /apps/member/templatetags/memberinfo.py - /apps/member/__init__.py - /apps/member/admin.py - /apps/member/apps.py - /apps/member/auth.py - /apps/member/forms.py - /apps/member/hashers.py - /apps/member/signals.py - /apps/member/tables.py - /apps/member/urls.py - /apps/member/views.py - /apps/note/api/serializers.py - /apps/note/api/urls.py - /apps/note/api/views.py - /apps/note/models/__init__.py - /apps/note/static/note/js/consos.js - /apps/note/templates/note/mails/negative_balance.txt - /apps/note/templatetags/getenv.py - /apps/note/templatetags/pretty_money.py - /apps/note/tests/test_transactions.py - /apps/note/__init__.py - /apps/note/admin.py - /apps/note/apps.py - /apps/note/forms.py - /apps/note/signals.py - /apps/note/tables.py - /apps/note/urls.py - /apps/note/views.py - /apps/permission/api/serializers.py - /apps/permission/api/urls.py - /apps/permission/api/views.py - /apps/permission/templatetags/perms.py - /apps/permission/tests/test_oauth2.py - /apps/permission/tests/test_permission_denied.py - /apps/permission/tests/test_permission_queries.py - /apps/permission/tests/test_rights_page.py - /apps/permission/__init__.py - /apps/permission/admin.py - /apps/permission/backends.py - /apps/permission/apps.py - /apps/permission/decorators.py - /apps/permission/permissions.py - /apps/permission/scopes.py - /apps/permission/signals.py - /apps/permission/tables.py - /apps/permission/urls.py - /apps/permission/views.py - /apps/registration/tests/test_registration.py - /apps/registration/__init__.py - /apps/registration/apps.py - /apps/registration/forms.py - /apps/registration/tables.py - /apps/registration/tokens.py - /apps/registration/urls.py - /apps/registration/views.py - /apps/treasury/api/serializers.py - /apps/treasury/api/urls.py - /apps/treasury/api/views.py - /apps/treasury/templatetags/escape_tex.py - /apps/treasury/tests/test_treasury.py - /apps/treasury/__init__.py - /apps/treasury/admin.py - /apps/treasury/apps.py - /apps/treasury/forms.py - /apps/treasury/signals.py - /apps/treasury/tables.py - /apps/treasury/urls.py - /apps/treasury/views.py - /apps/wei/api/serializers.py - /apps/wei/api/urls.py - /apps/wei/api/views.py - /apps/wei/forms/surveys/__init__.py - /apps/wei/forms/surveys/base.py - /apps/wei/forms/surveys/wei2021.py - /apps/wei/forms/surveys/wei2022.py - /apps/wei/forms/surveys/wei2023.py - /apps/wei/forms/__init__.py - /apps/wei/forms/registration.py - /apps/wei/management/commands/export_wei_registrations.py - /apps/wei/management/commands/import_scores.py - /apps/wei/management/commands/wei_algorithm.py - /apps/wei/templates/wei/weilist_sample.tex - /apps/wei/tests/test_wei_algorithm_2021.py - /apps/wei/tests/test_wei_algorithm_2022.py - /apps/wei/tests/test_wei_algorithm_2023.py - /apps/wei/tests/test_wei_registration.py - /apps/wei/__init__.py - /apps/wei/admin.py - /apps/wei/apps.py - /apps/wei/tables.py - /apps/wei/urls.py - /apps/wei/views.py - /note_kfet/settings/__init__.py - /note_kfet/settings/base.py - /note_kfet/settings/development.py - /note_kfet/settings/secrets_example.py - /note_kfet/static/js/base.js - /note_kfet/admin.py - /note_kfet/inputs.py - /note_kfet/middlewares.py - /note_kfet/urls.py - /note_kfet/views.py - /note_kfet/wsgi.py - /entrypoint.sh
		
			
				
	
	
		
			234 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			234 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (C) 2018-2024 by BDE ENS Paris-Saclay
 | |
| # SPDX-License-Identifier: GPL-3.0-or-later
 | |
| 
 | |
| from datetime import timedelta
 | |
| 
 | |
| from api.tests import TestAPI
 | |
| from django.contrib.auth.models import User
 | |
| from django.test import TestCase
 | |
| from django.urls import reverse
 | |
| from django.utils import timezone
 | |
| from member.models import Club
 | |
| 
 | |
| from ..api.views import ActivityTypeViewSet, ActivityViewSet, EntryViewSet, GuestViewSet
 | |
| from ..models import Activity, ActivityType, Guest, Entry
 | |
| 
 | |
| 
 | |
| class TestActivities(TestCase):
 | |
|     """
 | |
|     Test activities
 | |
|     """
 | |
|     fixtures = ('initial',)
 | |
| 
 | |
|     def setUp(self):
 | |
|         self.user = User.objects.create_superuser(
 | |
|             username="admintoto",
 | |
|             password="tototototo",
 | |
|             email="toto@example.com"
 | |
|         )
 | |
|         self.client.force_login(self.user)
 | |
| 
 | |
|         sess = self.client.session
 | |
|         sess["permission_mask"] = 42
 | |
|         sess.save()
 | |
| 
 | |
|         self.activity = Activity.objects.create(
 | |
|             name="Activity",
 | |
|             description="This is a test activity\non two very very long lines\nbecause this is very important.",
 | |
|             location="Earth",
 | |
|             activity_type=ActivityType.objects.get(name="Pot"),
 | |
|             creater=self.user,
 | |
|             organizer=Club.objects.get(name="Kfet"),
 | |
|             attendees_club=Club.objects.get(name="Kfet"),
 | |
|             date_start=timezone.now(),
 | |
|             date_end=timezone.now() + timedelta(days=2),
 | |
|             valid=True,
 | |
|         )
 | |
| 
 | |
|         self.guest = Guest.objects.create(
 | |
|             activity=self.activity,
 | |
|             inviter=self.user.note,
 | |
|             last_name="GUEST",
 | |
|             first_name="Guest",
 | |
|         )
 | |
| 
 | |
|     def test_activity_list(self):
 | |
|         """
 | |
|         Display the list of all activities
 | |
|         """
 | |
|         response = self.client.get(reverse("activity:activity_list"))
 | |
|         self.assertEqual(response.status_code, 200)
 | |
| 
 | |
|     def test_activity_create(self):
 | |
|         """
 | |
|         Create a new activity
 | |
|         """
 | |
|         response = self.client.get(reverse("activity:activity_create"))
 | |
|         self.assertEqual(response.status_code, 200)
 | |
| 
 | |
|         response = self.client.post(reverse("activity:activity_create"), data=dict(
 | |
|             name="Activity created",
 | |
|             description="This activity was successfully created.",
 | |
|             location="Earth",
 | |
|             activity_type=ActivityType.objects.get(name="Soirée de club").id,
 | |
|             creater=self.user.id,
 | |
|             organizer=Club.objects.get(name="Kfet").id,
 | |
|             attendees_club=Club.objects.get(name="Kfet").id,
 | |
|             date_start="{:%Y-%m-%d %H:%M}".format(timezone.now()),
 | |
|             date_end="{:%Y-%m-%d %H:%M}".format(timezone.now() + timedelta(days=2)),
 | |
|             valid=True,
 | |
|         ))
 | |
|         self.assertTrue(Activity.objects.filter(name="Activity created").exists())
 | |
|         activity = Activity.objects.get(name="Activity created")
 | |
|         self.assertRedirects(response, reverse("activity:activity_detail", args=(activity.pk,)), 302, 200)
 | |
| 
 | |
|     def test_activity_detail(self):
 | |
|         """
 | |
|         Display the detail of an activity
 | |
|         """
 | |
|         response = self.client.get(reverse("activity:activity_detail", args=(self.activity.pk,)))
 | |
|         self.assertEqual(response.status_code, 200)
 | |
| 
 | |
|     def test_activity_update(self):
 | |
|         """
 | |
|         Update an activity
 | |
|         """
 | |
|         response = self.client.get(reverse("activity:activity_update", args=(self.activity.pk,)))
 | |
|         self.assertEqual(response.status_code, 200)
 | |
| 
 | |
|         response = self.client.post(reverse("activity:activity_update", args=(self.activity.pk,)), data=dict(
 | |
|             name=str(self.activity) + " updated",
 | |
|             description="This activity was successfully updated.",
 | |
|             location="Earth",
 | |
|             activity_type=ActivityType.objects.get(name="Autre").id,
 | |
|             creater=self.user.id,
 | |
|             organizer=Club.objects.get(name="Kfet").id,
 | |
|             attendees_club=Club.objects.get(name="Kfet").id,
 | |
|             date_start="{:%Y-%m-%d %H:%M}".format(timezone.now()),
 | |
|             date_end="{:%Y-%m-%d %H:%M}".format(timezone.now() + timedelta(days=2)),
 | |
|             valid=True,
 | |
|         ))
 | |
|         self.assertTrue(Activity.objects.filter(name="Activity updated").exists())
 | |
|         self.assertRedirects(response, reverse("activity:activity_detail", args=(self.activity.pk,)), 302, 200)
 | |
| 
 | |
|     def test_activity_entry(self):
 | |
|         """
 | |
|         Create some entries
 | |
|         """
 | |
|         self.activity.open = True
 | |
|         self.activity.save()
 | |
| 
 | |
|         response = self.client.get(reverse("activity:activity_entry", args=(self.activity.pk,)))
 | |
|         self.assertEqual(response.status_code, 200)
 | |
|         response = self.client.get(reverse("activity:activity_entry", args=(self.activity.pk,)) + "?search=guest")
 | |
|         self.assertEqual(response.status_code, 200)
 | |
|         response = self.client.get(reverse("activity:activity_entry", args=(self.activity.pk,)) + "?search=admin")
 | |
|         self.assertEqual(response.status_code, 200)
 | |
| 
 | |
|         # User entry
 | |
|         response = self.client.post("/api/activity/entry/", data=dict(
 | |
|             activity=self.activity.id,
 | |
|             note=self.user.note.id,
 | |
|             guest="",
 | |
|         ))
 | |
|         self.assertEqual(response.status_code, 201)     # 201 = Created
 | |
|         self.assertTrue(Entry.objects.filter(note=self.user.note, guest=None, activity=self.activity).exists())
 | |
| 
 | |
|         # Guest entry
 | |
|         response = self.client.post("/api/activity/entry/", data=dict(
 | |
|             activity=self.activity.id,
 | |
|             note=self.user.note.id,
 | |
|             guest=self.guest.id,
 | |
|         ))
 | |
|         self.assertEqual(response.status_code, 201)     # 201 = Created
 | |
|         self.assertTrue(Entry.objects.filter(note=self.user.note, guest=self.guest.id, activity=self.activity).exists())
 | |
| 
 | |
|     def test_activity_invite(self):
 | |
|         """
 | |
|         Try to invite people to an activity
 | |
|         """
 | |
|         response = self.client.get(reverse("activity:activity_invite", args=(self.activity.pk,)))
 | |
|         self.assertEqual(response.status_code, 200)
 | |
| 
 | |
|         # The activity is started, can't invite
 | |
|         response = self.client.post(reverse("activity:activity_invite", args=(self.activity.pk,)), data=dict(
 | |
|             activity=self.activity.id,
 | |
|             inviter=self.user.note.id,
 | |
|             last_name="GUEST2",
 | |
|             first_name="Guest",
 | |
|         ))
 | |
|         self.assertEqual(response.status_code, 200)
 | |
| 
 | |
|         self.activity.date_start += timedelta(days=1)
 | |
|         self.activity.save()
 | |
| 
 | |
|         response = self.client.post(reverse("activity:activity_invite", args=(self.activity.pk,)), data=dict(
 | |
|             activity=self.activity.id,
 | |
|             inviter=self.user.note.id,
 | |
|             last_name="GUEST2",
 | |
|             first_name="Guest",
 | |
|         ))
 | |
|         self.assertRedirects(response, reverse("activity:activity_detail", args=(self.activity.pk,)), 302, 200)
 | |
| 
 | |
|     def test_activity_ics(self):
 | |
|         """
 | |
|         Render the ICS calendar
 | |
|         """
 | |
|         response = self.client.get(reverse("activity:calendar_ics"))
 | |
|         self.assertEqual(response.status_code, 200)
 | |
| 
 | |
| 
 | |
| class TestActivityAPI(TestAPI):
 | |
|     def setUp(self) -> None:
 | |
|         super().setUp()
 | |
| 
 | |
|         self.activity = Activity.objects.create(
 | |
|             name="Activity",
 | |
|             description="This is a test activity\non two very very long lines\nbecause this is very important.",
 | |
|             location="Earth",
 | |
|             activity_type=ActivityType.objects.get(name="Pot"),
 | |
|             creater=self.user,
 | |
|             organizer=Club.objects.get(name="Kfet"),
 | |
|             attendees_club=Club.objects.get(name="Kfet"),
 | |
|             date_start=timezone.now(),
 | |
|             date_end=timezone.now() + timedelta(days=2),
 | |
|             valid=True,
 | |
|         )
 | |
| 
 | |
|         self.guest = Guest.objects.create(
 | |
|             activity=self.activity,
 | |
|             inviter=self.user.note,
 | |
|             last_name="GUEST",
 | |
|             first_name="Guest",
 | |
|         )
 | |
| 
 | |
|         self.entry = Entry.objects.create(
 | |
|             activity=self.activity,
 | |
|             note=self.user.note,
 | |
|             guest=self.guest,
 | |
|         )
 | |
| 
 | |
|     def test_activity_api(self):
 | |
|         """
 | |
|         Load Activity API page and test all filters and permissions
 | |
|         """
 | |
|         self.check_viewset(ActivityViewSet, "/api/activity/activity/")
 | |
| 
 | |
|     def test_activity_type_api(self):
 | |
|         """
 | |
|         Load ActivityType API page and test all filters and permissions
 | |
|         """
 | |
|         self.check_viewset(ActivityTypeViewSet, "/api/activity/type/")
 | |
| 
 | |
|     def test_entry_api(self):
 | |
|         """
 | |
|         Load Entry API page and test all filters and permissions
 | |
|         """
 | |
|         self.check_viewset(EntryViewSet, "/api/activity/entry/")
 | |
| 
 | |
|     def test_guest_api(self):
 | |
|         """
 | |
|         Load Guest API page and test all filters and permissions
 | |
|         """
 | |
|         self.check_viewset(GuestViewSet, "/api/activity/guest/")
 |