test_admin_views.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import pytest
  2. from django.urls import reverse
  3. from ....test import assert_contains
  4. from ...models import MenuLink
  5. def test_nav_contains_menus_link(admin_client, list_url):
  6. response = admin_client.get(list_url)
  7. assert_contains(response, reverse("misago:admin:settings:links:index"))
  8. def test_empty_list_renders(admin_client, list_url):
  9. response = admin_client.get(list_url)
  10. assert response.status_code == 200
  11. def test_list_renders_menu_link(admin_client, list_url, menu_link):
  12. response = admin_client.get(list_url)
  13. assert_contains(response, menu_link.title)
  14. def test_menu_links_can_be_mass_deleted(admin_client, list_url, superuser):
  15. links = []
  16. for _ in range(10):
  17. link = MenuLink.objects.create(
  18. position=MenuLink.POSITION_FOOTER,
  19. title="Test Link {}".format(_),
  20. link="https://links{}.com".format(_),
  21. )
  22. links.append(link.pk)
  23. assert MenuLink.objects.count() == 10
  24. response = admin_client.post(
  25. list_url, data={"action": "delete", "selected_items": links}
  26. )
  27. assert response.status_code == 302
  28. assert MenuLink.objects.count() == 0
  29. def test_creation_form_renders(admin_client):
  30. response = admin_client.get(reverse("misago:admin:settings:links:new"))
  31. assert response.status_code == 200
  32. def test_form_creates_new_menu_link(admin_client):
  33. response = admin_client.post(
  34. reverse("misago:admin:settings:links:new"),
  35. {
  36. "position": MenuLink.POSITION_FOOTER,
  37. "title": "Test Link",
  38. "link": "https://admin.com/links/",
  39. },
  40. )
  41. link = MenuLink.objects.get()
  42. assert link.position == MenuLink.POSITION_FOOTER
  43. assert link.title == "Test Link"
  44. assert link.link == "https://admin.com/links/"
  45. def test_edit_form_renders(admin_client, menu_link):
  46. response = admin_client.get(
  47. reverse("misago:admin:settings:links:edit", kwargs={"pk": menu_link.pk})
  48. )
  49. assert_contains(response, menu_link.title)
  50. def test_edit_form_updates_menu_links(admin_client, menu_link):
  51. response = admin_client.post(
  52. reverse("misago:admin:settings:links:edit", kwargs={"pk": menu_link.pk}),
  53. data={
  54. "position": menu_link.POSITION_BOTH,
  55. "title": "Test Edited",
  56. "link": "https://example.com/edited/",
  57. },
  58. )
  59. assert response.status_code == 302
  60. menu_link.refresh_from_db()
  61. assert menu_link.position == MenuLink.POSITION_BOTH
  62. assert menu_link.title == "Test Edited"
  63. assert menu_link.link == "https://example.com/edited/"
  64. def test_menu_link_can_be_deleted(admin_client, menu_link):
  65. response = admin_client.post(
  66. reverse("misago:admin:settings:links:delete", kwargs={"pk": menu_link.pk})
  67. )
  68. assert response.status_code == 302
  69. with pytest.raises(MenuLink.DoesNotExist):
  70. menu_link.refresh_from_db()