Add unit tests
This commit is contained in:
parent
b893e8b64e
commit
617c34e5ba
6 changed files with 69 additions and 3 deletions
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
0
articles/tests/__init__.py
Normal file
0
articles/tests/__init__.py
Normal file
9
articles/tests/conftest.py
Normal file
9
articles/tests/conftest.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from articles.models import User
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture()
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def author():
|
||||||
|
return User.objects.create_user("gaugendre")
|
50
articles/tests/test_articles.py
Normal file
50
articles/tests/test_articles.py
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
import pytest
|
||||||
|
from django.test import Client
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
|
from articles.models import Article, Page, User
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_can_access_list(client: Client, author: User):
|
||||||
|
article = Article.objects.create(
|
||||||
|
author=author,
|
||||||
|
title="Sample published",
|
||||||
|
status=Article.PUBLISHED,
|
||||||
|
published_at=timezone.now(),
|
||||||
|
slug="sample-published",
|
||||||
|
content="Some content lorem ipsum",
|
||||||
|
)
|
||||||
|
page = Page.objects.create(
|
||||||
|
author=author,
|
||||||
|
title="Sample page published",
|
||||||
|
status=Article.PUBLISHED,
|
||||||
|
published_at=timezone.now(),
|
||||||
|
slug="sample-page-published",
|
||||||
|
content="Some page content lorem ipsum",
|
||||||
|
)
|
||||||
|
res = client.get("/")
|
||||||
|
assert res.status_code == 200
|
||||||
|
content = res.content.decode("utf-8")
|
||||||
|
for art in [article, page]:
|
||||||
|
assert art.title in content
|
||||||
|
assert article.content in content
|
||||||
|
assert page.content not in content
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_abstract_shown_on_list(client: Client, author: User):
|
||||||
|
abstract = "Some abstract"
|
||||||
|
after = "Some content after abstract"
|
||||||
|
article = Article.objects.create(
|
||||||
|
author=author,
|
||||||
|
title="Sample published",
|
||||||
|
status=Article.PUBLISHED,
|
||||||
|
published_at=timezone.now(),
|
||||||
|
slug="sample-published",
|
||||||
|
content=f"{abstract}\n<!--more-->\n{after}",
|
||||||
|
)
|
||||||
|
res = client.get("/")
|
||||||
|
content = res.content.decode("utf-8")
|
||||||
|
assert abstract in content
|
||||||
|
assert after not in content
|
|
@ -1,2 +1,9 @@
|
||||||
[tool.black]
|
[tool.black]
|
||||||
target-version = ['py38']
|
target-version = ['py38']
|
||||||
|
|
||||||
|
[tool.pytest.ini_options]
|
||||||
|
minversion = "6.0"
|
||||||
|
DJANGO_SETTINGS_MODULE = "blog.settings"
|
||||||
|
testpaths = [
|
||||||
|
"articles",
|
||||||
|
]
|
||||||
|
|
|
@ -1 +1,4 @@
|
||||||
pre-commit==2.6.0
|
pre-commit==2.6.0
|
||||||
|
pytest==6.0.1
|
||||||
|
pytest-django==3.9.0
|
||||||
|
model-bakery==1.1.1
|
||||||
|
|
Reference in a new issue