From 173d5a5585b1baf173280504353b485450dfe3c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com>
Date: Tue, 31 Jan 2023 10:10:50 +0100
Subject: [PATCH] Settup for tests with test only models

---
 majak/settings/test.py              |  3 +++
 pytest.ini                          |  2 +-
 tests/calendar_utils/conftest.py    | 19 -------------------
 tests/calendar_utils/test_models.py | 21 +++++++++++----------
 tests/models.py                     |  5 +++++
 5 files changed, 20 insertions(+), 30 deletions(-)
 create mode 100644 majak/settings/test.py
 create mode 100644 tests/models.py

diff --git a/majak/settings/test.py b/majak/settings/test.py
new file mode 100644
index 00000000..c31108db
--- /dev/null
+++ b/majak/settings/test.py
@@ -0,0 +1,3 @@
+from .dev import *
+
+INSTALLED_APPS += ["tests"]
diff --git a/pytest.ini b/pytest.ini
index d56649df..581d3757 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -1,3 +1,3 @@
 [pytest]
-addopts = --ds=majak.settings.dev -p no:warnings --nomigrations
+addopts = --ds=majak.settings.test -p no:warnings --nomigrations
 python_files = test_*.py
diff --git a/tests/calendar_utils/conftest.py b/tests/calendar_utils/conftest.py
index dff52c42..d8e3018a 100644
--- a/tests/calendar_utils/conftest.py
+++ b/tests/calendar_utils/conftest.py
@@ -3,11 +3,8 @@ from datetime import datetime
 from pathlib import Path
 
 import pytest
-from django.db import connection
 from icalevnt.icalparser import Event
 
-from calendar_utils.models import CalendarMixin
-
 
 @pytest.fixture(scope="session")
 def sample_response():
@@ -60,19 +57,3 @@ def sample_future_events():
         event_dict["start"] = datetime.fromisoformat(event_dict["start"])
         event_dict["end"] = datetime.fromisoformat(event_dict["end"])
     return event_dict_list
-
-
-class DummyModel(CalendarMixin):
-    class Meta:
-        app_label = "__tests"
-
-
-@pytest.fixture(scope="session")
-def Dummy(django_db_setup, django_db_blocker):
-    with django_db_blocker.unblock():
-        with connection.schema_editor() as editor:
-            editor.create_model(DummyModel)
-    yield DummyModel
-    with django_db_blocker.unblock():
-        with connection.schema_editor() as editor:
-            editor.delete_model(DummyModel)
diff --git a/tests/calendar_utils/test_models.py b/tests/calendar_utils/test_models.py
index 62b2245e..7b2f62c4 100644
--- a/tests/calendar_utils/test_models.py
+++ b/tests/calendar_utils/test_models.py
@@ -4,6 +4,7 @@ import pytz
 from faker import Faker
 
 from calendar_utils.models import Calendar
+from tests.models import DummyCalendarModel
 
 pytestmark = pytest.mark.django_db
 
@@ -86,16 +87,16 @@ def test_calendar__save_and_load_events__no_values():
     assert cal.future_events is None
 
 
-def test_calendar_mixin__no_calendar_url(Dummy):
-    obj = Dummy.objects.create()
+def test_calendar_mixin__no_calendar_url():
+    obj = DummyCalendarModel.objects.create()
     assert obj.calendar is None
 
 
-def test_calendar_mixin__set_calendar_url(Dummy, mocker):
+def test_calendar_mixin__set_calendar_url(mocker):
     m_update = mocker.patch.object(Calendar, "update_source")
     url = fake.url()
 
-    obj = Dummy.objects.create(calendar_url=url)
+    obj = DummyCalendarModel.objects.create(calendar_url=url)
 
     obj.refresh_from_db()
     assert obj.calendar_url == url
@@ -103,9 +104,9 @@ def test_calendar_mixin__set_calendar_url(Dummy, mocker):
     assert m_update.call_count == 1
 
 
-def test_calendar_mixin__update_calendar_url(Dummy, mocker):
+def test_calendar_mixin__update_calendar_url(mocker):
     m_update = mocker.patch.object(Calendar, "update_source")
-    obj = Dummy.objects.create(calendar_url=fake.url())
+    obj = DummyCalendarModel.objects.create(calendar_url=fake.url())
     url = fake.url()
     m_update.reset_mock()
 
@@ -118,10 +119,10 @@ def test_calendar_mixin__update_calendar_url(Dummy, mocker):
     assert m_update.call_count == 1
 
 
-def test_calendar_mixin__unchanged_calendar_url(Dummy, mocker):
+def test_calendar_mixin__unchanged_calendar_url(mocker):
     m_update = mocker.patch.object(Calendar, "update_source")
     url = fake.url()
-    obj = Dummy.objects.create(calendar_url=url)
+    obj = DummyCalendarModel.objects.create(calendar_url=url)
     m_update.reset_mock()
 
     obj.save()
@@ -132,9 +133,9 @@ def test_calendar_mixin__unchanged_calendar_url(Dummy, mocker):
     assert m_update.call_count == 1
 
 
-def test_calendar_mixin__clear_calendar_url(Dummy, mocker):
+def test_calendar_mixin__clear_calendar_url(mocker):
     m_update = mocker.patch.object(Calendar, "update_source")
-    obj = Dummy.objects.create(calendar_url=fake.url())
+    obj = DummyCalendarModel.objects.create(calendar_url=fake.url())
     m_update.reset_mock()
 
     obj.calendar_url = None
diff --git a/tests/models.py b/tests/models.py
new file mode 100644
index 00000000..5c6da8b8
--- /dev/null
+++ b/tests/models.py
@@ -0,0 +1,5 @@
+from calendar_utils.models import CalendarMixin
+
+
+class DummyCalendarModel(CalendarMixin):
+    pass
-- 
GitLab