conf_test.py 2.3 KB

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