diff --git a/bookwyrm/tests/models/test_automod.py b/bookwyrm/tests/models/test_automod.py new file mode 100644 index 000000000..abb9aa559 --- /dev/null +++ b/bookwyrm/tests/models/test_automod.py @@ -0,0 +1,75 @@ +""" test for app action functionality """ +from unittest.mock import patch + +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import models +from bookwyrm.models.antispam import automod_task + + +@patch("bookwyrm.models.Status.broadcast") +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class AutomodModel(TestCase): + """every response to a get request, html or json""" + + def setUp(self): + """we need basic test data and mocks""" + self.factory = RequestFactory() + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse@local.com", + "mouse@mouse.mouse", + "password", + local=True, + localname="mouse", + ) + + def test_automod_task_no_rules(self, *_): + """nothing to see here""" + self.assertFalse(models.Report.objects.exists()) + automod_task() + self.assertFalse(models.Report.objects.exists()) + + def test_automod_task_user(self, *_): + """scan activity""" + self.assertFalse(models.Report.objects.exists()) + models.AutoMod.objects.create( + string_match="hi", + flag_users=True, + flag_statuses=True, + created_by=self.local_user, + ) + + self.local_user.name = "okay hi" + self.local_user.save(broadcast=False, update_fields=["name"]) + + automod_task() + + reports = models.Report.objects.all() + self.assertEqual(reports.count(), 1) + self.assertEqual(reports.first().user, self.local_user) + + def test_automod_status(self, *_): + """scan activity""" + self.assertFalse(models.Report.objects.exists()) + models.AutoMod.objects.create( + string_match="hi", + flag_users=True, + flag_statuses=True, + created_by=self.local_user, + ) + + status = models.Status.objects.create( + user=self.local_user, content="hello", content_warning="hi" + ) + + automod_task() + + reports = models.Report.objects.all() + self.assertEqual(reports.count(), 1) + self.assertEqual(reports.first().status, status) + self.assertEqual(reports.first().user, self.local_user) diff --git a/bookwyrm/tests/views/admin/test_automod.py b/bookwyrm/tests/views/admin/test_automod.py new file mode 100644 index 000000000..1ed36caf5 --- /dev/null +++ b/bookwyrm/tests/views/admin/test_automod.py @@ -0,0 +1,58 @@ +""" test for app action functionality """ +from unittest.mock import patch + +from django.template.response import TemplateResponse +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import forms, models, views +from bookwyrm.tests.validate_html import validate_html + + +class AutomodViews(TestCase): + """every response to a get request, html or json""" + + def setUp(self): + """we need basic test data and mocks""" + self.factory = RequestFactory() + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse@local.com", + "mouse@mouse.mouse", + "password", + local=True, + localname="mouse", + ) + models.SiteSettings.objects.create() + + def test_automod_rules_get(self): + """there are so many views, this just makes sure it LOADS""" + view = views.AutoMod.as_view() + request = self.factory.get("") + request.user = self.local_user + request.user.is_superuser = True + + result = view(request) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_automod_rules_post(self): + """there are so many views, this just makes sure it LOADS""" + form = forms.AutoModRuleForm() + form.data["string_match"] = "hello" + form.data["flag_users"] = True + form.data["flag_statuses"] = False + form.data["created_by"] = self.local_user + + view = views.AutoMod.as_view() + request = self.factory.post("", form.data) + request.user = self.local_user + request.user.is_superuser = True + + result = view(request) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200)