1
0
Fork 0

Merge branch 'main' into partially-read-shelf

This commit is contained in:
Thomas Versteeg 2022-02-25 21:00:29 +00:00 committed by GitHub
commit e9dfa42e11
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
209 changed files with 14317 additions and 4796 deletions

View file

@ -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)

View file

@ -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)

View file

@ -37,7 +37,7 @@ class RegisterViews(TestCase):
self.anonymous_user.is_authenticated = False
self.settings = models.SiteSettings.objects.create(
id=1, require_confirm_email=False
id=1, require_confirm_email=False, allow_registration=True
)
def test_get_redirect(self, *_):

View file

@ -0,0 +1,79 @@
""" test for app action functionality """
from unittest.mock import patch
from django.core.exceptions import PermissionDenied
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 SetupViews(TestCase):
"""activity feed, statuses, dms"""
def setUp(self):
"""we need basic test data and mocks"""
self.factory = RequestFactory()
self.site = models.SiteSettings.objects.create(install_mode=True)
def test_instance_config_permission_denied(self):
"""there are so many views, this just makes sure it LOADS"""
self.site.install_mode = False
self.site.save()
view = views.InstanceConfig.as_view()
request = self.factory.get("")
with self.assertRaises(PermissionDenied):
view(request)
def test_instance_config(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.InstanceConfig.as_view()
request = self.factory.get("")
result = view(request)
self.assertIsInstance(result, TemplateResponse)
validate_html(result.render())
self.assertEqual(result.status_code, 200)
def test_create_admin_get(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.CreateAdmin.as_view()
request = self.factory.get("")
result = view(request)
self.assertIsInstance(result, TemplateResponse)
validate_html(result.render())
self.assertEqual(result.status_code, 200)
def test_create_admin_post(self):
"""there are so many views, this just makes sure it LOADS"""
self.site.name = "hello"
self.site.save()
self.assertFalse(self.site.allow_registration)
self.assertTrue(self.site.require_confirm_email)
self.assertTrue(self.site.install_mode)
view = views.CreateAdmin.as_view()
form = forms.RegisterForm()
form.data["localname"] = "mouse"
form.data["password"] = "mouseword"
form.data["email"] = "aaa@bbb.ccc"
request = self.factory.post("", form.data)
with patch("bookwyrm.views.setup.login") as mock:
view(request)
self.assertTrue(mock.called)
self.site.refresh_from_db()
self.assertFalse(self.site.install_mode)
user = models.User.objects.get()
self.assertTrue(user.is_active)
self.assertTrue(user.is_superuser)
self.assertTrue(user.is_staff)
self.assertTrue(user.shelf_set.exists())