Make tests more robust, use django-pytest

This commit is contained in:
2026-05-12 11:56:28 +02:00
parent 0866eb25e9
commit 37e3c69abc
10 changed files with 57 additions and 107 deletions
-19
View File
@@ -4,11 +4,6 @@ from unittest.mock import MagicMock, patch
import django
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "timetracker.settings")
django.setup()
from django.template import TemplateDoesNotExist
from django.utils.safestring import SafeText
@@ -638,14 +633,6 @@ class ModelDependentComponentsTest(django.test.TestCase):
purchase.games.set(games)
return purchase
@classmethod
def tearDownClass(cls):
super().tearDownClass()
Game.objects.all().delete()
Purchase.objects.all().delete()
Session.objects.all().delete()
Platform.objects.all().delete()
def test_name_with_icon_linkify_with_game(self):
platform = self._create_platform(name="Steam", icon="steam")
game = self._create_game(platform)
@@ -784,12 +771,6 @@ class NameWithIconPlatformTest(django.test.TestCase):
cls.platform = Platform.objects.create(name="Nintendo", icon="nintendo")
cls.game = Game.objects.create(name="Zelda", platform=cls.platform)
@classmethod
def tearDownClass(cls):
super().tearDownClass()
Game.objects.all().delete()
Platform.objects.all().delete()
def test_name_with_icon_shows_platform_icon(self):
result = components.NameWithIcon(
name="Zelda", game=self.game, linkify=True
-5
View File
@@ -1,15 +1,10 @@
import json
import os
from datetime import datetime
from zoneinfo import ZoneInfo
import django
from django.conf import settings
from django.test import TestCase, Client
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "timetracker.settings")
django.setup()
from games.models import Device, Game, Platform, Purchase, Session
from django.contrib.auth.models import User
+30 -59
View File
@@ -1,15 +1,9 @@
import os
from datetime import datetime
from zoneinfo import ZoneInfo
import django
from django.conf import settings
from django.test import TestCase
from django.urls import reverse
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "timetracker.settings")
django.setup()
from django.conf import settings
from django.contrib.auth.models import User
from games.models import Game, Platform, Purchase, Session
@@ -23,69 +17,46 @@ class PathWorksTest(TestCase):
username="testuser", email="test@example.com", password="testpass"
)
self.client.force_login(self.user)
pl = Platform(name="Test Platform")
pl.save()
g = Game(name="The Test Game")
g.save()
p = Purchase(
platform=pl,
self.platform = Platform.objects.create(name="Test Platform", icon="test")
self.game = Game.objects.create(name="Test Game", platform=self.platform)
self.purchase = Purchase.objects.create(
date_purchased=datetime(2022, 9, 26, 14, 58, tzinfo=ZONEINFO),
platform=self.platform,
)
p.save()
p.games.add(g)
p.save()
s = Session(
game=g,
timestamp_start=datetime(2022, 9, 26, 14, 58, tzinfo=ZONEINFO),
timestamp_end=datetime(2022, 9, 26, 17, 38, tzinfo=ZONEINFO),
)
s.save()
self.testSession = s
self.testGame = g
return super().setUp()
self.purchase.games.add(self.game)
def test_add_device_returns_200(self):
url = reverse("add_device")
response = self.client.get(url)
def test_index_redirects_to_tracker(self):
response = self.client.get("/")
self.assertEqual(response.status_code, 302)
def test_tracker_page_returns_200(self):
response = self.client.get("/tracker/", follow=True)
self.assertEqual(response.status_code, 200)
def test_add_platform_returns_200(self):
url = reverse("add_platform")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_add_game_returns_200(self):
url = reverse("add_game")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_add_purchase_returns_200(self):
url = reverse("add_purchase")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_add_session_returns_200(self):
url = reverse("add_session")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_edit_session_returns_200(self):
id = self.testSession.id
url = reverse("edit_session", args=[id])
response = self.client.get(url)
def test_game_list_returns_200(self):
response = self.client.get(reverse("games:list_games"), follow=True)
self.assertEqual(response.status_code, 200)
def test_view_game_returns_200(self):
url = reverse("view_game", args=[self.testGame.id])
response = self.client.get(url)
response = self.client.get(reverse("games:view_game", args=[self.game.id]))
self.assertEqual(response.status_code, 200)
def test_edit_game_returns_200(self):
url = reverse("edit_game", args=[self.testGame.id])
response = self.client.get(url)
def test_add_game_returns_200(self):
response = self.client.get(reverse("games:add_game"))
self.assertEqual(response.status_code, 200)
def test_stats_returns_200(self):
response = self.client.get(reverse("games:stats_alltime"))
self.assertEqual(response.status_code, 200)
def test_list_sessions_returns_200(self):
url = reverse("list_sessions")
response = self.client.get(url)
response = self.client.get(reverse("games:list_sessions"))
self.assertEqual(response.status_code, 200)
def test_list_playevents_returns_200(self):
response = self.client.get(reverse("games:list_playevents"))
self.assertEqual(response.status_code, 200)
def test_list_purchases_returns_200(self):
response = self.client.get(reverse("games:list_purchases"))
self.assertEqual(response.status_code, 200)
+1 -6
View File
@@ -1,13 +1,8 @@
import os
from datetime import datetime
from zoneinfo import ZoneInfo
import django
from django.test import TestCase
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "timetracker.settings")
django.setup()
from django.conf import settings
from django.test import TestCase
from games.models import Game, Purchase, Session
+1 -6
View File
@@ -1,13 +1,8 @@
import os
from datetime import datetime
from zoneinfo import ZoneInfo
import django
from django.test import TestCase
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "timetracker.settings")
django.setup()
from django.conf import settings
from django.test import TestCase
from games.models import Game, Session
-6
View File
@@ -1,10 +1,4 @@
import json
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "timetracker.settings")
django.setup()
from django.contrib.messages import constants as message_constants
from django.contrib.messages.storage.fallback import FallbackStorage
from django.http import HttpRequest, HttpResponse