test_deleting_themes.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. from pathlib import Path
  2. import pytest
  3. from django.core.files.base import ContentFile
  4. from django.urls import reverse
  5. from ....test import assert_has_error_message
  6. from ...models import Theme, Css, Media
  7. @pytest.fixture
  8. def delete_link(theme):
  9. return reverse("misago:admin:appearance:themes:delete", kwargs={"pk": theme.pk})
  10. def test_theme_without_children_can_be_deleted(admin_client, delete_link, theme):
  11. admin_client.post(delete_link)
  12. with pytest.raises(Theme.DoesNotExist):
  13. theme.refresh_from_db()
  14. def test_theme_css_are_deleted_together_with_theme(admin_client, delete_link, css):
  15. admin_client.post(delete_link)
  16. with pytest.raises(Css.DoesNotExist):
  17. css.refresh_from_db()
  18. def test_theme_source_css_files_are_deleted_together_with_theme(
  19. admin_client, delete_link, css
  20. ):
  21. admin_client.post(delete_link)
  22. assert not Path(css.source_file.path).exists()
  23. def test_theme_build_css_files_are_deleted_together_with_theme(
  24. admin_client, delete_link, css
  25. ):
  26. css.build_file = ContentFile("body {}", name="test.css")
  27. css.build_hash = "abcdefgh"
  28. css.save()
  29. admin_client.post(delete_link)
  30. assert not Path(css.build_file.path).exists()
  31. def test_theme_media_are_deleted_together_with_theme(admin_client, delete_link, media):
  32. admin_client.post(delete_link)
  33. with pytest.raises(Media.DoesNotExist):
  34. media.refresh_from_db()
  35. def test_theme_images_are_deleted_together_with_theme(admin_client, delete_link, image):
  36. admin_client.post(delete_link)
  37. with pytest.raises(Media.DoesNotExist):
  38. image.refresh_from_db()
  39. def test_theme_media_files_are_deleted_together_with_theme(
  40. admin_client, delete_link, media
  41. ):
  42. admin_client.post(delete_link)
  43. assert not Path(media.file.path).exists()
  44. def test_theme_image_files_are_deleted_together_with_theme(
  45. admin_client, delete_link, image
  46. ):
  47. admin_client.post(delete_link)
  48. assert not Path(image.thumbnail.path).exists()
  49. def test_deleting_default_theme_sets_error_message(admin_client, default_theme):
  50. delete_link = reverse(
  51. "misago:admin:appearance:themes:delete", kwargs={"pk": default_theme.pk}
  52. )
  53. response = admin_client.post(delete_link)
  54. assert_has_error_message(response)
  55. def test_default_theme_is_not_deleted(admin_client, default_theme):
  56. delete_link = reverse(
  57. "misago:admin:appearance:themes:delete", kwargs={"pk": default_theme.pk}
  58. )
  59. response = admin_client.post(delete_link)
  60. default_theme.refresh_from_db()
  61. def test_deleting_active_theme_sets_error_message(admin_client, theme):
  62. theme.is_active = True
  63. theme.save()
  64. delete_link = reverse(
  65. "misago:admin:appearance:themes:delete", kwargs={"pk": theme.pk}
  66. )
  67. response = admin_client.post(delete_link)
  68. assert_has_error_message(response)
  69. def test_active_theme_is_not_deleted(admin_client, theme):
  70. theme.is_active = True
  71. theme.save()
  72. delete_link = reverse(
  73. "misago:admin:appearance:themes:delete", kwargs={"pk": theme.pk}
  74. )
  75. admin_client.post(delete_link)
  76. theme.refresh_from_db()