From 89aa1673b253fd6c933146d3456bdd2b597c26b7 Mon Sep 17 00:00:00 2001
From: Mouse Reeve <mousereeve@riseup.net>
Date: Thu, 27 Jan 2022 19:39:07 -0800
Subject: [PATCH] Admin views tests

---
 .../tests/views/admin/test_ip_blocklist.py    | 34 ++++++++++++++++++-
 bookwyrm/tests/views/admin/test_reports.py    | 32 +++++++++++++++++
 2 files changed, 65 insertions(+), 1 deletion(-)

diff --git a/bookwyrm/tests/views/admin/test_ip_blocklist.py b/bookwyrm/tests/views/admin/test_ip_blocklist.py
index e23abd8b1..498ed9b84 100644
--- a/bookwyrm/tests/views/admin/test_ip_blocklist.py
+++ b/bookwyrm/tests/views/admin/test_ip_blocklist.py
@@ -4,7 +4,7 @@ from django.template.response import TemplateResponse
 from django.test import TestCase
 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
 
 
@@ -39,3 +39,35 @@ class IPBlocklistViews(TestCase):
         self.assertIsInstance(result, TemplateResponse)
         validate_html(result.render())
         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["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.Block.objects.exists())
diff --git a/bookwyrm/tests/views/admin/test_reports.py b/bookwyrm/tests/views/admin/test_reports.py
index d0f2e9d91..d0875f2c2 100644
--- a/bookwyrm/tests/views/admin/test_reports.py
+++ b/bookwyrm/tests/views/admin/test_reports.py
@@ -89,6 +89,14 @@ class ReportViews(TestCase):
         self.assertEqual(comment.note, "hi")
         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):
         """a user reports another user"""
         form = forms.ReportForm()
@@ -103,6 +111,30 @@ class ReportViews(TestCase):
         self.assertEqual(report.reporter, self.local_user)
         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):
         """toggle report resolution status"""
         report = models.Report.objects.create(reporter=self.local_user, user=self.rat)