Просмотр исходного кода

Add some tests for theme deletion

rafalp 6 лет назад
Родитель
Сommit
1a11e17a71
1 измененных файлов с 94 добавлено и 0 удалено
  1. 94 0
      misago/themes/admin/tests/test_deleting_themes.py

+ 94 - 0
misago/themes/admin/tests/test_deleting_themes.py

@@ -0,0 +1,94 @@
+from pathlib import Path
+
+import pytest
+from django.core.files.base import ContentFile
+from django.urls import reverse
+
+from ....test import assert_has_error_message
+from ...models import Theme, Css, Media
+
+
+@pytest.fixture
+def delete_link(theme):
+    return reverse("misago:admin:appearance:themes:delete", kwargs={"pk": theme.pk})
+
+
+def test_theme_without_children_can_be_deleted(admin_client, delete_link, theme):
+    admin_client.post(delete_link)
+    with pytest.raises(Theme.DoesNotExist):
+        theme.refresh_from_db()
+
+
+def test_theme_css_are_deleted_together_with_theme(admin_client, delete_link, css):
+    admin_client.post(delete_link)
+    with pytest.raises(Css.DoesNotExist):
+        css.refresh_from_db()
+
+
+def test_theme_source_css_files_are_deleted_together_with_theme(
+    admin_client, delete_link, css
+):
+    admin_client.post(delete_link)
+    assert not Path(css.source_file.path).exists()
+
+
+def test_theme_build_css_files_are_deleted_together_with_theme(
+    admin_client, delete_link, css
+):
+    css.build_file = ContentFile("body {}", name="test.css")
+    css.build_hash = "abcdefgh"
+    css.save()
+
+    admin_client.post(delete_link)
+    assert not Path(css.build_file.path).exists()
+
+
+def test_theme_media_are_deleted_together_with_theme(admin_client, delete_link, media):
+    admin_client.post(delete_link)
+    with pytest.raises(Media.DoesNotExist):
+        media.refresh_from_db()
+
+
+def test_theme_media_files_are_deleted_together_with_theme(
+    admin_client, delete_link, media
+):
+    admin_client.post(delete_link)
+    assert not Path(media.file.path).exists()
+
+
+def test_deleting_default_theme_sets_error_message(admin_client, default_theme):
+    delete_link = reverse(
+        "misago:admin:appearance:themes:delete", kwargs={"pk": default_theme.pk}
+    )
+    response = admin_client.post(delete_link)
+    assert_has_error_message(response)
+
+
+def test_default_theme_is_not_deleted(admin_client, default_theme):
+    delete_link = reverse(
+        "misago:admin:appearance:themes:delete", kwargs={"pk": default_theme.pk}
+    )
+    response = admin_client.post(delete_link)
+    default_theme.refresh_from_db()
+
+
+def test_deleting_active_theme_sets_error_message(admin_client, theme):
+    theme.is_active = True
+    theme.save()
+
+    delete_link = reverse(
+        "misago:admin:appearance:themes:delete", kwargs={"pk": theme.pk}
+    )
+    response = admin_client.post(delete_link)
+    assert_has_error_message(response)
+
+
+def test_active_theme_is_not_deleted(admin_client, theme):
+    theme.is_active = True
+    theme.save()
+
+    delete_link = reverse(
+        "misago:admin:appearance:themes:delete", kwargs={"pk": theme.pk}
+    )
+    admin_client.post(delete_link)
+    theme.refresh_from_db()