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]
|
||||
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
|
||||
pytest==6.0.1
|
||||
pytest-django==3.9.0
|
||||
model-bakery==1.1.1
|
||||
|
|
Reference in a new issue