from http import HTTPStatus from django.contrib.auth import get_user_model from django.test import Client, TestCase from django.urls import reverse from notes.models import Note from notes.forms import NoteForm class ContentTest(TestCase): def test_notes_list_for_different_users(self): user1 = get_user_model().objects.create_user(username='user1') note1 = Note.objects.create( author=user1, title='Test Note', slug='test-note' ) client = Client() client.force_login(user1) response = client.get(reverse('notes:list')) self.assertEqual(response.status_code, 200) object_list = response.context['object_list'] self.assertEqual(len(object_list), 1) retrieved_note = object_list[0] self.assertEqual(retrieved_note.id, note1.id) self.assertEqual(retrieved_note.title, 'Test Note') self.assertEqual(retrieved_note.slug, 'test-note') self.assertEqual(retrieved_note.author, user1) def test_pages_contains_form(self): user1 = get_user_model().objects.create_user(username='user1') note1 = Note.objects.create( author=user1, title='Test Note', slug='test-note' ) client = Client() client.force_login(user1) urls = (reverse('notes:add'), reverse('notes:edit', args=[note1.slug])) for url in urls: with self.subTest(url=url): response = client.get(url) self.assertEqual(response.status_code, 200) self.assertIn('form', response.context) form = response.context['form'] self.assertIsInstance(form, NoteForm) def test_urls(self): user1 = get_user_model().objects.create_user(username='user1') note1 = Note.objects.create( author=user1, title='Test Note', slug='test-note' ) client = Client() client.force_login(user1) urls = ( reverse('notes:home'), reverse('notes:add'), reverse('notes:edit', args=[note1.slug]), reverse('notes:list'), reverse('notes:success'), ) for url in urls: response = client.get(url, follow=True) self.assertEqual(response.status_code, HTTPStatus.OK)