This commit is contained in:
imperosol committed 2026-10-02 15:35:29 +02:00
1 parent 7ab412a59b
commit 87d247dbb4
6 files changed
+73 -1

No files matched your search

@@ -0,0 +1,6 @@
{% extends 'core/base.jinja' %}
{% block content %}
{% endblock %}
-1
View File
@@ -1 +0,0 @@
# Create your tests here.
View File
Whitespace-only changes.
+20
View File
@@ -0,0 +1,20 @@
from django.test import TestCase
from django.urls import reverse
from core.baker_recipes import subscriber_user
from timetable.models import TimetableSlot
class TestSaveTimetable(TestCase):
@classmethod
def setUpTestData(cls) -> None:
cls.user = subscriber_user.make()
cls.payload = {
"is_viewable": True,
"slots": [
{"weekday": TimetableSlot.WeekDay.MONDAY, "start_at": 32, "end_at": 40},
{"weekday": TimetableSlot.WeekDay.MONDAY, "start_at": 41, "end_at": 49},
{"weekday": TimetableSlot.WeekDay.FRIDAY, "start_at": 52, "end_at": 64},
],
}
cls.url = reverse("api:timetable:save", kwargs={"user_id": cls.user.id})
+32
View File
@@ -0,0 +1,32 @@
import pytest
from bs4 import BeautifulSoup
from django.contrib.auth.models import Permission
from django.test import Client
from django.urls import reverse
from model_bakery import baker
from core.baker_recipes import subscriber_user
from core.models import User
# class TestGenerator(TestCase)
@pytest.mark.django_db
@pytest.mark.parametrize(
"can_save", [True, False]
)
def test_generator_ok(client: Client, can_save):
user = baker.make(User)
if can_save:
user.user_permissions.add(Permission.objects.get(codename="add_self_timetable"))
client.force_login(user)
res = client.get(reverse("timetable:generator"))
assert res.status_code == 200
soup = BeautifulSoup(res.text, "lxml")
elem = soup.find(id="timetable-save")
if can_save:
assert elem is not None
else:
assert elem is None
+15
View File
@@ -1,6 +1,21 @@
# Create your views here. # Create your views here.
from django.contrib.auth.mixins import UserPassesTestMixin
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django.views.generic.detail import DetailView
from core.models import User
class GeneratorView(TemplateView): class GeneratorView(TemplateView):
template_name = "timetable/generator.jinja" template_name = "timetable/generator.jinja"
class UserTimetableView(UserPassesTestMixin, DetailView):
model = User
pk_url_kwarg = "user_id"
template_name = "timetable/user_timetable.jinja"
def test_func(self) -> bool | None:
return self.request.user.id == self.kwargs[
"user_id"
] or self.request.user.has_perm("timetable.view_timetable")