tests.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from django.urls import resolve
  2. from django.test import TestCase
  3. from django.http import HttpRequest
  4. from movies.views import home_page
  5. from movies.models import Movie
  6. class HomePageTest(TestCase):
  7. def test_root_url_resolves_to_home_page_view(self):
  8. found = resolve('/')
  9. self.assertEqual(found.func, home_page)
  10. def test_home_page_returns_correct_html(self):
  11. response = self.client.get('/')
  12. html = response.content.decode('utf8')
  13. self.assertTrue(html.startswith('<html>'))
  14. self.assertIn('<title>MovieLib</title>', html)
  15. self.assertTrue(html.strip().endswith('</html>'))
  16. self.assertIn('<h2>Your name: Guest</h2>', html)
  17. self.assertTemplateUsed(response, 'home.html')
  18. def test_can_save_a_POST_request(self):
  19. response = self.client.post('/', data={'movie-title': 'X-Men'})
  20. self.assertEqual(Movie.objects.count(), 1)
  21. new_movie = Movie.objects.first()
  22. self.assertEqual(new_movie.title, 'X-Men')
  23. def test_redirects_after_POST(self):
  24. response = self.client.post('/', data={'movie-title': 'X-Men'})
  25. self.assertEqual(response.status_code, 302)
  26. self.assertEqual(response['location'], '/libraries/benoit-hubert/')
  27. def test_uses_list_template(self):
  28. response = self.client.get('/libraries/benoit-hubert/')
  29. self.assertTemplateUsed(response, 'library.html')
  30. def test_displays_all_list_items(self):
  31. Movie.objects.create(title='itemey 1')
  32. Movie.objects.create(title='itemey 2')
  33. response = self.client.get('/libraries/benoit-hubert/')
  34. self.assertIn('itemey 1', response.content.decode())
  35. self.assertIn('itemey 2', response.content.decode())
  36. class MovieModelTest(TestCase):
  37. def test_saving_and_retrieving_movies(self):
  38. first_movie = Movie()
  39. first_movie.title = 'The first (ever) movie'
  40. first_movie.save()
  41. second_movie = Movie()
  42. second_movie.title = 'The second movie'
  43. second_movie.save()
  44. saved_movies = Movie.objects.all()
  45. self.assertEqual(saved_movies.count(), 2)
  46. first_saved_movie = saved_movies[0]
  47. second_saved_movie = saved_movies[1]
  48. self.assertEqual(first_saved_movie.title, 'The first (ever) movie')
  49. self.assertEqual(second_saved_movie.title, 'The second movie')