Skip to content

Commit ef822f9

Browse files
committed
tests refactored
1 parent e40919d commit ef822f9

File tree

8 files changed

+37
-33
lines changed

8 files changed

+37
-33
lines changed

.github/workflows/sonarcloud.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,36 @@ jobs:
1212
permissions:
1313
contents: read
1414
pull-requests: read
15+
1516
steps:
1617
- uses: actions/checkout@v4
1718
with:
1819
fetch-depth: 0
20+
1921
- uses: actions/setup-python@v5
2022
with:
2123
python-version: '3.11'
24+
2225
- name: Install uv and sync
2326
run: |
2427
pip install uv
2528
uv sync --frozen
2629
uv pip install pytest pytest-cov pytest-django
30+
2731
- name: Run tests with coverage
2832
env:
2933
DJANGO_SETTINGS_MODULE: task_manager.settings
34+
SECRET_KEY: test-secret-key
35+
DEBUG: "False"
36+
DATABASE_URL: sqlite:///./test.sqlite3
37+
ALLOWED_HOSTS: testserver,localhost,127.0.0.1
3038
run: |
3139
mkdir -p reports
32-
uv run pytest --ds=task_manager.settings --cov=task_manager --cov-report=xml:coverage.xml --junitxml=reports/junit.xml
40+
uv run pytest --ds=task_manager.settings \
41+
--cov=task_manager \
42+
--cov-report=xml:coverage.xml \
43+
--junitxml=reports/junit.xml
44+
3345
- name: SonarCloud Scan
3446
uses: SonarSource/sonarcloud-github-action@v2
3547
env:

task_manager/labels/views.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ class LabelListView(LoginRequiredMixin, ListView):
1212
model = Label
1313
template_name = "labels/index.html"
1414
context_object_name = "labels"
15-
login_url = "users:login"
15+
login_url = "login"
1616

1717

1818
class LabelCreateView(LoginRequiredMixin, CreateView):
1919
model = Label
2020
form_class = LabelForm
2121
template_name = "labels/form.html"
2222
success_url = reverse_lazy("labels:index")
23-
login_url = "users:login"
23+
login_url = "login"
2424

2525
def form_valid(self, form):
2626
messages.success(self.request, "Метка успешно создана")
@@ -32,7 +32,7 @@ class LabelUpdateView(LoginRequiredMixin, UpdateView):
3232
form_class = LabelForm
3333
template_name = "labels/form.html"
3434
success_url = reverse_lazy("labels:index")
35-
login_url = "users:login"
35+
login_url = "login"
3636

3737
def form_valid(self, form):
3838
messages.success(self.request, "Метка успешно изменена")
@@ -43,7 +43,7 @@ class LabelDeleteView(LoginRequiredMixin, DeleteView):
4343
model = Label
4444
template_name = "labels/confirm_delete.html"
4545
success_url = reverse_lazy("labels:index")
46-
login_url = "users:login"
46+
login_url = "login"
4747

4848
def post(self, request, *args, **kwargs):
4949
label = self.get_object()

task_manager/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142

143143
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
144144

145-
LOGIN_URL = '/login/'
145+
LOGIN_URL = 'login'
146146
LOGIN_REDIRECT_URL = '/'
147147
LOGOUT_REDIRECT_URL = '/'
148148

task_manager/statuses/views.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ class StatusListView(LoginRequiredMixin, ListView):
1212
model = Status
1313
template_name = "statuses/index.html"
1414
context_object_name = "statuses"
15-
login_url = "users:login"
15+
login_url = "login"
1616

1717

1818
class StatusCreateView(LoginRequiredMixin, CreateView):
1919
model = Status
2020
form_class = StatusForm
2121
template_name = "statuses/form.html"
2222
success_url = reverse_lazy("statuses:index")
23-
login_url = "users:login"
23+
login_url = "login"
2424

2525
def form_valid(self, form):
2626
messages.success(self.request, "Статус успешно создан")
@@ -32,7 +32,7 @@ class StatusUpdateView(LoginRequiredMixin, UpdateView):
3232
form_class = StatusForm
3333
template_name = "statuses/form.html"
3434
success_url = reverse_lazy("statuses:index")
35-
login_url = "users:login"
35+
login_url = "login"
3636

3737
def form_valid(self, form):
3838
messages.success(self.request, "Статус успешно изменен")
@@ -43,7 +43,7 @@ class StatusDeleteView(LoginRequiredMixin, DeleteView):
4343
model = Status
4444
template_name = "statuses/confirm_delete.html"
4545
success_url = reverse_lazy("statuses:index")
46-
login_url = "users:login"
46+
login_url = "login"
4747

4848
def post(self, request, *args, **kwargs):
4949
status = self.get_object()

task_manager/tasks/views.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class TaskListView(LoginRequiredMixin, FilterView):
1414
model = Task
1515
template_name = "tasks/index.html"
1616
context_object_name = "tasks"
17-
login_url = "users:login"
17+
login_url = "login"
1818
filterset_class = TaskFilter
1919

2020
def get_queryset(self):
@@ -30,15 +30,15 @@ class TaskDetailView(LoginRequiredMixin, DetailView):
3030
model = Task
3131
template_name = "tasks/detail.html"
3232
context_object_name = "task"
33-
login_url = "users:login"
33+
login_url = "login"
3434

3535

3636
class TaskCreateView(LoginRequiredMixin, CreateView):
3737
model = Task
3838
form_class = TaskForm
3939
template_name = "tasks/form.html"
4040
success_url = reverse_lazy("tasks:index")
41-
login_url = "users:login"
41+
login_url = "login"
4242

4343
def form_valid(self, form):
4444
form.instance.author = self.request.user
@@ -51,7 +51,7 @@ class TaskUpdateView(LoginRequiredMixin, UpdateView):
5151
form_class = TaskForm
5252
template_name = "tasks/form.html"
5353
success_url = reverse_lazy("tasks:index")
54-
login_url = "users:login"
54+
login_url = "login"
5555

5656
def form_valid(self, form):
5757
messages.success(self.request, "Задача успешно изменена")
@@ -62,7 +62,7 @@ class TaskDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
6262
model = Task
6363
template_name = "tasks/confirm_delete.html"
6464
success_url = reverse_lazy("tasks:index")
65-
login_url = "users:login"
65+
login_url = "login"
6666

6767
def test_func(self):
6868
return self.get_object().author_id == self.request.user.id

task_manager/users/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ class UserDeleteView(OnlySelfMixin, LoginRequiredMixin, DeleteView):
9393
model = User
9494
template_name = "users/confirm_delete.html"
9595
success_url = reverse_lazy("users:list")
96-
login_url = "users:login"
96+
login_url = "login"
9797

9898
def post(self, request, *args, **kwargs):
9999
user = self.get_object()

tests/test_labels_crud.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,27 @@
44
from task_manager.labels.models import Label
55
from task_manager.tasks.models import Task, Status
66

7-
87
@pytest.mark.django_db
98
def test_labels_list_requires_login(client):
109
url = reverse("labels:index")
1110
resp = client.get(url)
1211
assert resp.status_code == 302
13-
assert reverse("users:login") in resp["Location"]
12+
assert reverse("login") in resp["Location"]
1413

1514

1615
@pytest.mark.django_db
1716
def test_label_create_requires_login(client):
1817
url = reverse("labels:create")
1918
resp = client.post(url, {"name": "bug"})
2019
assert resp.status_code == 302
21-
assert reverse("users:login") in resp["Location"]
20+
assert reverse("login") in resp["Location"]
2221
assert not Label.objects.filter(name="bug").exists()
2322

2423

2524
@pytest.mark.django_db
2625
def test_label_create_ok(client, django_user_model):
2726
django_user_model.objects.create_user(username="u", password="p")
28-
client.login(username="u", password="p")
29-
27+
assert client.login(username="u", password="p")
3028
url = reverse("labels:create")
3129
resp = client.post(url, {"name": "bug"})
3230
assert resp.status_code == 302
@@ -37,31 +35,26 @@ def test_label_create_ok(client, django_user_model):
3735
@pytest.mark.django_db
3836
def test_label_update_ok(client, django_user_model):
3937
django_user_model.objects.create_user(username="u", password="p")
40-
client.login(username="u", password="p")
41-
38+
assert client.login(username="u", password="p")
4239
label = Label.objects.create(name="old")
4340
url = reverse("labels:update", args=[label.pk])
4441
resp = client.post(url, {"name": "new"})
4542
assert resp.status_code == 302
46-
4743
label.refresh_from_db()
4844
assert label.name == "new"
4945

5046

5147
@pytest.mark.django_db
5248
def test_label_delete_blocked_when_in_use(client, django_user_model):
5349
user = django_user_model.objects.create_user(username="u", password="p")
54-
client.login(username="u", password="p")
55-
50+
assert client.login(username="u", password="p")
5651
label = Label.objects.create(name="bug")
5752
status = Status.objects.create(name="open")
5853
task = Task.objects.create(name="t1", author=user, status=status)
5954
task.labels.add(label)
60-
6155
url = reverse("labels:delete", args=[label.pk])
6256
resp_get = client.get(url)
6357
assert resp_get.status_code in (200, 302)
64-
6558
resp_post = client.post(url)
6659
assert resp_post.status_code == 302
6760
assert Label.objects.filter(pk=label.pk).exists()
@@ -70,8 +63,7 @@ def test_label_delete_blocked_when_in_use(client, django_user_model):
7063
@pytest.mark.django_db
7164
def test_label_delete_when_unused_ok(client, django_user_model):
7265
django_user_model.objects.create_user(username="u", password="p")
73-
client.login(username="u", password="p")
74-
66+
assert client.login(username="u", password="p")
7567
label = Label.objects.create(name="orphan")
7668
url = reverse("labels:delete", args=[label.pk])
7769
resp = client.post(url)

tests/test_users_crud.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ def test_update_requires_auth_redirects(client, users):
7171
url = f"/users/{users['alice'].pk}/update/"
7272
r = client.get(url)
7373
assert r.status_code in (302, 301)
74-
assert r.url == f"/login/?next={url}"
74+
assert "/login/" in r.url
75+
assert f"next={url}" in r.url
7576

7677

7778
@pytest.mark.django_db
@@ -100,13 +101,12 @@ def test_user_cannot_update_other(auth_client, users):
100101
assert users["bob"].username == "bob"
101102

102103

103-
# ---- DELETE ----
104104
@pytest.mark.django_db
105105
def test_delete_requires_auth_redirects(client, users):
106106
url = f"/users/{users['alice'].pk}/delete/"
107107
r = client.get(url)
108108
assert r.status_code in (302, 301)
109-
assert r.url.startswith("/users/login/")
109+
assert "/login/" in r.url
110110

111111

112112
@pytest.mark.django_db

0 commit comments

Comments
 (0)