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 MenuItem
  5. def test_nav_contains_menus_item(admin_client, list_url):
  6. response = admin_client.get(list_url)
  7. assert_contains(response, reverse("misago:admin:settings:menu-items: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_item(admin_client, list_url, menu_item):
  12. response = admin_client.get(list_url)
  13. assert_contains(response, menu_item.title)
  14. def test_menu_items_can_be_mass_deleted(admin_client, list_url, superuser):
  15. items = []
  16. for _ in range(10):
  17. item = MenuItem.objects.create(
  18. menu=MenuItem.MENU_FOOTER,
  19. title="Test Item {}".format(_),
  20. url="https://items{}.com".format(_),
  21. )
  22. items.append(item.pk)
  23. assert MenuItem.objects.count() == 10
  24. response = admin_client.post(
  25. list_url, data={"action": "delete", "selected_items": items}
  26. )
  27. assert response.status_code == 302
  28. assert MenuItem.objects.count() == 0
  29. def test_creation_form_renders(admin_client):
  30. response = admin_client.get(reverse("misago:admin:settings:menu-items:new"))
  31. assert response.status_code == 200
  32. def test_form_creates_new_menu_item(admin_client):
  33. response = admin_client.post(
  34. reverse("misago:admin:settings:menu-items:new"),
  35. {
  36. "menu": MenuItem.MENU_FOOTER,
  37. "title": "Test Item",
  38. "url": "https://admin.com/items/",
  39. },
  40. )
  41. item = MenuItem.objects.get()
  42. assert item.menu == MenuItem.MENU_FOOTER
  43. assert item.title == "Test Item"
  44. assert item.url == "https://admin.com/items/"
  45. def test_edit_form_renders(admin_client, menu_item):
  46. response = admin_client.get(
  47. reverse("misago:admin:settings:menu-items:edit", kwargs={"pk": menu_item.pk})
  48. )
  49. assert_contains(response, menu_item.title)
  50. def test_edit_form_updates_menu_items(admin_client, menu_item):
  51. response = admin_client.post(
  52. reverse("misago:admin:settings:menu-items:edit", kwargs={"pk": menu_item.pk}),
  53. data={
  54. "menu": menu_item.MENU_BOTH,
  55. "title": "Test Edited",
  56. "url": "https://example.com/edited/",
  57. },
  58. )
  59. assert response.status_code == 302
  60. menu_item.refresh_from_db()
  61. assert menu_item.menu == MenuItem.MENU_BOTH
  62. assert menu_item.title == "Test Edited"
  63. assert menu_item.url == "https://example.com/edited/"
  64. def test_menu_item_can_be_deleted(admin_client, menu_item):
  65. response = admin_client.post(
  66. reverse("misago:admin:settings:menu-items:delete", kwargs={"pk": menu_item.pk})
  67. )
  68. assert response.status_code == 302
  69. with pytest.raises(MenuItem.DoesNotExist):
  70. menu_item.refresh_from_db()