tests.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from django.urls import resolve
  2. from django.test import TestCase
  3. from django.contrib.auth.models import User
  4. from accounts.views import register
  5. def id():
  6. id.counter += 1
  7. return str(id.counter)
  8. id.counter = 0
  9. # Create your tests here.
  10. class RegisterPageTest(TestCase):
  11. def test_register_url_resolves_to_register_page_view(self):
  12. found = resolve('/register')
  13. self.assertEqual(found.func, register)
  14. def test_home_page_returns_correct_html(self):
  15. response = self.client.get('/register')
  16. html = response.content.decode('utf8')
  17. self.assertTrue(html.startswith('<html>'))
  18. self.assertIn('<title>MovieLib</title>', html)
  19. self.assertTrue(html.strip().endswith('</html>'))
  20. self.assertIn('<h2>Register</h2>', html)
  21. self.assertTemplateUsed(response, 'registration/register.html')
  22. def test_can_save_a_POST_request(self):
  23. username = 'johndifool' + id()
  24. response = self.client.post('/register', data={
  25. 'username': username,
  26. 'email': username + '@example.com',
  27. 'password': 'abc123'
  28. })
  29. self.assertEqual(User.objects.count(), 1)
  30. new_user = User.objects.first()
  31. self.assertEqual(new_user.username, 'johndifool1')
  32. self.assertEqual(new_user.email, 'johndifool1@example.com')
  33. def test_redirects_after_POST(self):
  34. username = 'johndifool' + id()
  35. response = self.client.post('/register', data={
  36. 'username': username,
  37. 'email': username + '@example.com',
  38. 'password': 'abc123'
  39. })
  40. self.assertEqual(response.status_code, 302)
  41. self.assertEqual(response['location'], '/libraries/johndifool2/')