52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
from django.test import TestCase
|
|
from django.urls import reverse
|
|
from .models import Article, Category
|
|
from .services import get_published_articles
|
|
|
|
class ArticleModelTest(TestCase):
|
|
@classmethod
|
|
def setUpTestData(cls):
|
|
cls.category = Category.objects.create(name="Новости", slug="news")
|
|
cls.article = Article.objects.create(
|
|
title="Тест",
|
|
slug="test",
|
|
category=cls.category,
|
|
content="Контент"
|
|
)
|
|
|
|
def test_article_creation(self):
|
|
self.assertEqual(self.article.title, "Тест")
|
|
self.assertTrue(self.article.is_published)
|
|
|
|
def test_get_absolute_url(self):
|
|
url = self.article.get_absolute_url()
|
|
self.assertEqual(url, reverse('blog:article_detail', kwargs={'slug': 'test'}))
|
|
|
|
class ArticleListViewTest(TestCase):
|
|
@classmethod
|
|
def setUpTestData(cls):
|
|
cls.category = Category.objects.create(name="Новости", slug="news")
|
|
for i in range(15):
|
|
Article.objects.create(
|
|
title=f"Статья {i}",
|
|
slug=f"statya-{i}",
|
|
category=cls.category,
|
|
content="Контент"
|
|
)
|
|
|
|
def test_view_url_exists(self):
|
|
resp = self.client.get('/blog/')
|
|
self.assertEqual(resp.status_code, 200)
|
|
|
|
def test_pagination_is_ten(self):
|
|
resp = self.client.get(reverse('blog:article_list'))
|
|
self.assertEqual(resp.status_code, 200)
|
|
self.assertTrue('is_paginated' in resp.context)
|
|
self.assertTrue(resp.context['is_paginated'])
|
|
self.assertEqual(len(resp.context['articles']), 10)
|
|
|
|
def test_service_returns_published(self):
|
|
articles = get_published_articles()
|
|
self.assertEqual(articles.count(), 15)
|
|
|