test_content.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from http import HTTPStatus
  2. from django.contrib.auth import get_user_model
  3. from django.test import Client, TestCase
  4. from django.urls import reverse
  5. from notes.models import Note
  6. from notes.forms import NoteForm
  7. class ContentTest(TestCase):
  8. def test_notes_list_for_different_users(self):
  9. user1 = get_user_model().objects.create_user(username='user1')
  10. note1 = Note.objects.create(
  11. author=user1,
  12. title='Test Note',
  13. slug='test-note'
  14. )
  15. client = Client()
  16. client.force_login(user1)
  17. response = client.get(reverse('notes:list'))
  18. self.assertEqual(response.status_code, 200)
  19. object_list = response.context['object_list']
  20. self.assertEqual(len(object_list), 1)
  21. retrieved_note = object_list[0]
  22. self.assertEqual(retrieved_note.id, note1.id)
  23. self.assertEqual(retrieved_note.title, 'Test Note')
  24. self.assertEqual(retrieved_note.slug, 'test-note')
  25. self.assertEqual(retrieved_note.author, user1)
  26. def test_pages_contains_form(self):
  27. user1 = get_user_model().objects.create_user(username='user1')
  28. note1 = Note.objects.create(
  29. author=user1,
  30. title='Test Note',
  31. slug='test-note'
  32. )
  33. client = Client()
  34. client.force_login(user1)
  35. urls = (reverse('notes:add'), reverse('notes:edit', args=[note1.slug]))
  36. for url in urls:
  37. with self.subTest(url=url):
  38. response = client.get(url)
  39. self.assertEqual(response.status_code, 200)
  40. self.assertIn('form', response.context)
  41. form = response.context['form']
  42. self.assertIsInstance(form, NoteForm)
  43. def test_urls(self):
  44. user1 = get_user_model().objects.create_user(username='user1')
  45. note1 = Note.objects.create(
  46. author=user1,
  47. title='Test Note',
  48. slug='test-note'
  49. )
  50. client = Client()
  51. client.force_login(user1)
  52. urls = (
  53. reverse('notes:home'),
  54. reverse('notes:add'),
  55. reverse('notes:edit', args=[note1.slug]),
  56. reverse('notes:list'),
  57. reverse('notes:success'),
  58. )
  59. for url in urls:
  60. response = client.get(url, follow=True)
  61. self.assertEqual(response.status_code, HTTPStatus.OK)