conf_test.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. """Тест для конфигурации."""
  2. from datetime import datetime, timedelta
  3. import pytest
  4. from django.conf import settings
  5. from django.contrib.auth import get_user_model
  6. from django.test import Client
  7. from django.urls import reverse
  8. from django.utils import timezone
  9. from news.forms import BAD_WORDS
  10. from news.models import News, Comment
  11. User = get_user_model()
  12. @pytest.fixture
  13. def auth_client():
  14. """Тест ваторизации клиента."""
  15. client = Client()
  16. user = User.objects.create(username='Мимо Крокодил')
  17. client.force_login(user)
  18. return client
  19. @pytest.fixture
  20. def home_url():
  21. return reverse('news:home')
  22. @pytest.fixture
  23. def detail_url(initial_data):
  24. news, _ = initial_data
  25. return reverse('news:detail', args=(news.id,))
  26. @pytest.fixture
  27. def initial_news(db):
  28. today = datetime.today()
  29. all_news = [
  30. News(
  31. title=f'Новость {index}',
  32. text='Просто текст.',
  33. date=today - timedelta(days=index)
  34. )
  35. for index in range(settings.NEWS_COUNT_ON_HOME_PAGE + 1)
  36. ]
  37. News.objects.bulk_create(all_news)
  38. @pytest.fixture
  39. def initial_data(db):
  40. news = News.objects.create(title='Тестовая новость', text='Просто текст.')
  41. author = User.objects.create(username='Комментатор')
  42. now = timezone.now()
  43. for index in range(2):
  44. comment = Comment.objects.create(
  45. news=news, author=author, text=f'Текст {index}',
  46. )
  47. comment.created = now + timedelta(days=index)
  48. comment.save()
  49. return news, author
  50. @pytest.fixture
  51. def news():
  52. return News.objects.create(title='Заголовок', text='Текст')
  53. @pytest.fixture
  54. def comment_text():
  55. return 'Текст комментария'
  56. @pytest.fixture
  57. def bad_words_data(comment_text):
  58. bad_word = BAD_WORDS[0]
  59. return f'Какой-то текст, {bad_word}, еще текст'
  60. @pytest.fixture
  61. def comment(news, comment_text, client):
  62. user = User.objects.create(username='Мимо Крокодил')
  63. client.force_login(user)
  64. return Comment.objects.create(news=news, author=user, text=comment_text)
  65. @pytest.fixture
  66. def comment_detail_url(news, comment):
  67. return reverse('news:detail', args=(news.id,)) + '#comments'
  68. @pytest.fixture
  69. def user():
  70. return User.objects.create(username='Test User')