"""Тест для конфигурации.""" from datetime import datetime, timedelta import pytest from django.conf import settings from django.contrib.auth import get_user_model from django.test import Client from django.urls import reverse from django.utils import timezone from news.forms import BAD_WORDS from news.models import News, Comment User = get_user_model() @pytest.fixture def auth_client(): """Тест ваторизации клиента.""" client = Client() user = User.objects.create(username='Мимо Крокодил') client.force_login(user) return client @pytest.fixture def home_url(): return reverse('news:home') @pytest.fixture def detail_url(initial_data): news, _ = initial_data return reverse('news:detail', args=(news.id,)) @pytest.fixture def initial_news(db): today = datetime.today() all_news = [ News( title=f'Новость {index}', text='Просто текст.', date=today - timedelta(days=index) ) for index in range(settings.NEWS_COUNT_ON_HOME_PAGE + 1) ] News.objects.bulk_create(all_news) @pytest.fixture def initial_data(db): news = News.objects.create(title='Тестовая новость', text='Просто текст.') author = User.objects.create(username='Комментатор') now = timezone.now() for index in range(2): comment = Comment.objects.create( news=news, author=author, text=f'Текст {index}', ) comment.created = now + timedelta(days=index) comment.save() return news, author @pytest.fixture def news(): return News.objects.create(title='Заголовок', text='Текст') @pytest.fixture def comment_text(): return 'Текст комментария' @pytest.fixture def bad_words_data(comment_text): bad_word = BAD_WORDS[0] return f'Какой-то текст, {bad_word}, еще текст' @pytest.fixture def comment(news, comment_text, client): user = User.objects.create(username='Мимо Крокодил') client.force_login(user) return Comment.objects.create(news=news, author=user, text=comment_text) @pytest.fixture def comment_detail_url(news, comment): return reverse('news:detail', args=(news.id,)) + '#comments' @pytest.fixture def user(): return User.objects.create(username='Test User')