diff --git a/README.md b/README.md
index e571101..7f83f93 100644
--- a/README.md
+++ b/README.md
@@ -31,6 +31,9 @@ The package requires Wagtail 2.5 or above.
1. `poetry build`
+## Run tests
+1. `poetry install --dev`
+1. `poetry run pytest`
## Contributors
diff --git a/pyproject.toml b/pyproject.toml
index 794597c..0d9a814 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -12,6 +12,10 @@ python = "^3.6"
[tool.poetry.dev-dependencies]
pytest = "^3.0"
+wagtail = "^2.5"
+pytest-django = "^3.8"
+pytest-pythonpath = "^0.7.3"
+wagtail-factories = "^2.0"
[build-system]
requires = ["poetry>=0.12"]
diff --git a/tests/fixtures.py b/tests/fixtures.py
index 3410018..95ca655 100644
--- a/tests/fixtures.py
+++ b/tests/fixtures.py
@@ -1,8 +1,17 @@
import pytest
+from wagtail.core.models import Site
+
+from tests.testapp import factories
@pytest.fixture
def site():
- from wagtail.core.models import Site
site = Site.objects.get(is_default_site=True)
return site
+
+
+@pytest.fixture()
+def advert():
+ advert = factories.AdvertFactory(text="advert", url="https://www.example.com")
+ advert.save()
+ yield advert
diff --git a/tests/test_settings.py b/tests/test_settings.py
index cb232f6..a05e410 100644
--- a/tests/test_settings.py
+++ b/tests/test_settings.py
@@ -2,85 +2,74 @@ import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-ADMINS = (
- ('test@example.com', 'TEST-R'),
-)
+ADMINS = (("test@example.com", "TEST-R"),)
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': 'tests.db',
- },
-}
+DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": "tests.db"}}
-SECRET_KEY = '_uobce43e5osp8xgsffssffsds2_16%y$sf*5(12vfg25hpnxik_*'
+SECRET_KEY = "_uobce43e5osp8xgsffssffsds2_16%y$sf*5(12vfg25hpnxik_*"
INSTALLED_APPS = [
- 'wagtail.contrib.forms',
- 'wagtail.contrib.redirects',
- 'wagtail.embeds',
- 'wagtail.sites',
- 'wagtail.users',
- 'wagtail.snippets',
- 'wagtail.documents',
- 'wagtail.images',
- 'wagtail.search',
- 'wagtail.admin',
- 'wagtail.core',
- 'modelcluster',
- 'taggit',
-
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.messages',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.staticfiles',
-
+ "wagtail.contrib.forms",
+ "wagtail.contrib.redirects",
+ "wagtail.embeds",
+ "wagtail.sites",
+ "wagtail.users",
+ "wagtail.snippets",
+ "wagtail.documents",
+ "wagtail.images",
+ "wagtail.search",
+ "wagtail.admin",
+ "wagtail.core",
+ "modelcluster",
+ "taggit",
+ "django.contrib.admin",
+ "django.contrib.auth",
+ "django.contrib.contenttypes",
+ "django.contrib.messages",
+ "django.contrib.sessions",
+ "django.contrib.sites",
+ "django.contrib.staticfiles",
# App Under test
- 'wagtail_draftail_snippet',
+ "wagtail_draftail_snippet",
# Test app
- 'tests.testapp'
+ "tests.testapp",
]
MIDDLEWARE = (
- 'django.middleware.security.SecurityMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.locale.LocaleMiddleware',
- 'django.middleware.common.CommonMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'django.middleware.clickjacking.XFrameOptionsMiddleware',
- 'wagtail.core.middleware.SiteMiddleware',
- 'wagtail.contrib.redirects.middleware.RedirectMiddleware',
+ "django.middleware.security.SecurityMiddleware",
+ "django.contrib.sessions.middleware.SessionMiddleware",
+ "django.middleware.locale.LocaleMiddleware",
+ "django.middleware.common.CommonMiddleware",
+ "django.middleware.csrf.CsrfViewMiddleware",
+ "django.contrib.auth.middleware.AuthenticationMiddleware",
+ "django.contrib.messages.middleware.MessageMiddleware",
+ "django.middleware.clickjacking.XFrameOptionsMiddleware",
+ "wagtail.core.middleware.SiteMiddleware",
+ "wagtail.contrib.redirects.middleware.RedirectMiddleware",
)
TEMPLATES = [
{
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [
- os.path.join(BASE_DIR, 'templates'),
- ],
- 'OPTIONS': {
- 'context_processors': [
- 'django.template.context_processors.debug',
- 'django.template.context_processors.request',
- 'django.contrib.auth.context_processors.auth',
- 'django.contrib.messages.context_processors.messages',
+ "BACKEND": "django.template.backends.django.DjangoTemplates",
+ "DIRS": [os.path.join(BASE_DIR, "templates")],
+ "OPTIONS": {
+ "context_processors": [
+ "django.template.context_processors.debug",
+ "django.template.context_processors.request",
+ "django.contrib.auth.context_processors.auth",
+ "django.contrib.messages.context_processors.messages",
+ ],
+ "loaders": [
+ "django.template.loaders.filesystem.Loader",
+ "django.template.loaders.app_directories.Loader",
],
- 'loaders': [
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
- ]
},
- },
+ }
]
DEBUG = True
TEMPLATE_DEBUG = DEBUG
-ROOT_URLCONF = 'tests.urls'
+ROOT_URLCONF = "tests.urls"
-WAGTAIL_SITE_NAME = "Test Site",
+WAGTAIL_SITE_NAME = ("Test Site",)
SITE_ID = 1
diff --git a/tests/test_snippet_link_handler.py b/tests/test_snippet_link_handler.py
index bdc3cde..efa7d84 100644
--- a/tests/test_snippet_link_handler.py
+++ b/tests/test_snippet_link_handler.py
@@ -1,22 +1,28 @@
import pytest
-
-from tests.testapp import factories
from wagtail_draftail_snippet.richtext import SnippetLinkHandler
-@pytest.mark.django_db
-def test_snippet_link_handler():
- advert = factories.AdvertFactory(text='advert', url='https://www.example.com')
- advert.save()
+class TestSnippetLinkHandler:
+ @pytest.mark.django_db
+ def test_advert_setup_correctly(self, advert):
+ assert advert.text == "advert"
+ assert advert.url == "https://www.example.com"
- assert advert.text == 'advert'
- assert advert.url == 'https://www.example.com'
+ @pytest.mark.django_db
+ def test_snippet_create_empty_link_on_error(self, advert):
+ """
+ Empty link created in case of exception
+ """
- # Empty link created in case of exception
- result = SnippetLinkHandler.expand_db_attributes({'id': 0})
- assert result == ""
+ result = SnippetLinkHandler.expand_db_attributes({"id": 0})
+ assert result == ""
- # Test snippet template render correctly
- attrs = {'id': 1, 'data-app-name': 'testapp', 'data-model-name': 'Advert'}
- result = SnippetLinkHandler.expand_db_attributes(attrs)
- assert result == f''
+ @pytest.mark.django_db
+ def test_snippet_link_handler_renders(self, advert):
+ """
+ Test snippet template renders correctly
+ """
+
+ attrs = {"id": 1, "data-app-name": "testapp", "data-model-name": "Advert"}
+ result = SnippetLinkHandler.expand_db_attributes(attrs)
+ assert result == f''