12311k

Untitled

Mar 19th, 2020
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. from django.test import TestCase, Client
  2. import datetime as dt
  3.  
  4. # Create your tests here.
  5.  
  6. # Задание
  7.  
  8. # Напишите тесты которые тестируют работу страницы сайта с тарифными планами и проверяют:
  9.  
  10. # - Код ответа главной страницы, а раздел администратора наоборот, не доступен
  11. # - Наличие переменной `plans` в контексте шаблона
  12. # - Имя шаблона который используется для рендеринга страницы index.html
  13. # - Тип переменной plans список, состоящий из 3х элементов, а их тип словарь
  14. # - Присутствует название тарифных планов на результирующей странице, подставляется правильная тема (subject) в ссылке для отправки письма по кнопке Связаться
  15. # - В контекстных переменных шаблона присутствует текущий год и он же правильно появляется на странице
  16.  
  17.  
  18. class PlansPageTest(TestCase):
  19. def setUp(self):
  20. self.client = Client()
  21.  
  22. def testPageCodes(self):
  23. response = self.client.get("/")
  24. self.assertEqual(response.status_code, 200)
  25. response = self.client.get("/admin/")
  26. self.assertEqual(response.status_code, 302)
  27.  
  28. def testIndexContext(self):
  29. response = self.client.get("/")
  30. self.assertIn("plans", response.context)
  31.  
  32. def testIndexTemplate(self):
  33. response = self.client.get("/")
  34. self.assertEqual("index.html", response.templates[0].name)
  35.  
  36. def testIndexPlans(self):
  37. response = self.client.get("/")
  38. plans = response.context["plans"]
  39. self.assertIsInstance(plans, list)
  40. self.assertEqual(len(plans), 3)
  41. for plan in plans:
  42. self.assertIsInstance(plan, dict)
  43.  
  44. def testIndexContent(self):
  45. response = self.client.get("/")
  46. plans = response.context["plans"]
  47. for plan in plans:
  48. self.assertContains(response, plan["name"])
  49. self.assertContains(
  50. response, f"mailto:order@company.site?subject={plan['name']}"
  51. )
  52.  
  53. def testContextProcessor(self):
  54. response = self.client.get("/")
  55. self.assertIn("year", response.context)
  56. today = dt.datetime.today().year
  57. self.assertEqual(response.context["year"], today)
  58. self.assertContains(response, today)
Add Comment
Please, Sign In to add comment