Merge pull request #1878 from bookwyrm-social/tests

Some tests
This commit is contained in:
Mouse Reeve 2022-01-28 06:54:51 -08:00 committed by GitHub
commit 8fc23ba184
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 80 additions and 9 deletions

View file

@ -6,5 +6,5 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
{% include "snippets/report_modal.html" with user=user active=True static=True %} {% include "snippets/report_modal.html" with user=user active=True static=True id="report-modal" %}
{% endblock %} {% endblock %}

View file

@ -4,7 +4,7 @@ from django.template.response import TemplateResponse
from django.test import TestCase from django.test import TestCase
from django.test.client import RequestFactory from django.test.client import RequestFactory
from bookwyrm import models, views from bookwyrm import forms, models, views
from bookwyrm.tests.validate_html import validate_html from bookwyrm.tests.validate_html import validate_html
@ -39,3 +39,35 @@ class IPBlocklistViews(TestCase):
self.assertIsInstance(result, TemplateResponse) self.assertIsInstance(result, TemplateResponse)
validate_html(result.render()) validate_html(result.render())
self.assertEqual(result.status_code, 200) self.assertEqual(result.status_code, 200)
def test_blocklist_page_post(self):
"""there are so many views, this just makes sure it LOADS"""
view = views.IPBlocklist.as_view()
form = forms.IPBlocklistForm()
form.data["address"] = "0.0.0.0"
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)
block = models.IPBlocklist.objects.get()
self.assertEqual(block.address, "0.0.0.0")
self.assertTrue(block.is_active)
def test_blocklist_page_delete(self):
"""there are so many views, this just makes sure it LOADS"""
block = models.IPBlocklist.objects.create(address="0.0.0.0")
view = views.IPBlocklist.as_view()
request = self.factory.post("")
request.user = self.local_user
request.user.is_superuser = True
view(request, block.id)
self.assertFalse(models.IPBlocklist.objects.exists())

View file

@ -89,6 +89,14 @@ class ReportViews(TestCase):
self.assertEqual(comment.note, "hi") self.assertEqual(comment.note, "hi")
self.assertEqual(comment.report, report) self.assertEqual(comment.report, report)
def test_report_modal_view(self):
"""a user reports another user"""
request = self.factory.get("")
request.user = self.local_user
result = views.Report.as_view()(request, self.local_user.id)
validate_html(result.render())
def test_make_report(self): def test_make_report(self):
"""a user reports another user""" """a user reports another user"""
form = forms.ReportForm() form = forms.ReportForm()
@ -103,6 +111,30 @@ class ReportViews(TestCase):
self.assertEqual(report.reporter, self.local_user) self.assertEqual(report.reporter, self.local_user)
self.assertEqual(report.user, self.rat) self.assertEqual(report.user, self.rat)
def test_report_link(self):
"""a user reports a link as spam"""
book = models.Edition.objects.create(title="hi")
link = models.FileLink.objects.create(
book=book, added_by=self.local_user, url="https://skdjfs.sdf"
)
domain = link.domain
domain.status = "approved"
domain.save()
form = forms.ReportForm()
form.data["reporter"] = self.local_user.id
form.data["user"] = self.rat.id
form.data["links"] = link.id
request = self.factory.post("", form.data)
request.user = self.local_user
views.Report.as_view()(request)
report = models.Report.objects.get()
domain.refresh_from_db()
self.assertEqual(report.links.first().id, link.id)
self.assertEqual(domain.status, "pending")
def test_resolve_report(self): def test_resolve_report(self):
"""toggle report resolution status""" """toggle report resolution status"""
report = models.Report.objects.create(reporter=self.local_user, user=self.rat) report = models.Report.objects.create(reporter=self.local_user, user=self.rat)

View file

@ -140,3 +140,14 @@ class AnnualSummary(TestCase):
self.assertIsInstance(result, TemplateResponse) self.assertIsInstance(result, TemplateResponse)
validate_html(result.render()) validate_html(result.render())
self.assertEqual(result.status_code, 200) self.assertEqual(result.status_code, 200)
def test_personal_annual_summary(self, *_):
"""redirect to unique user url"""
view = views.personal_annual_summary
request = self.factory.get("")
request.user = self.local_user
result = view(request, 2020)
self.assertEqual(result.status_code, 302)
self.assertEqual(result.url, "/user/mouse/2020-in-the-books")

View file

@ -30,17 +30,15 @@ class User(View):
shelf_preview = [] shelf_preview = []
# only show other shelves that should be visible # only show shelves that should be visible
shelves = user.shelf_set shelves = user.shelf_set
is_self = request.user.id == user.id is_self = request.user.id == user.id
if not is_self: if not is_self:
shelves = models.Shelf.privacy_filter( shelves = models.Shelf.privacy_filter(
request.user, privacy_levels=["public", "followers"] request.user, privacy_levels=["public", "followers"]
).filter(user=user) ).filter(user=user, books__isnull=False)
for user_shelf in shelves.all(): for user_shelf in shelves.all()[:3]:
if not user_shelf.books.count():
continue
shelf_preview.append( shelf_preview.append(
{ {
"name": user_shelf.name, "name": user_shelf.name,
@ -49,8 +47,6 @@ class User(View):
"size": user_shelf.books.count(), "size": user_shelf.books.count(),
} }
) )
if len(shelf_preview) > 2:
break
# user's posts # user's posts
activities = ( activities = (