ausglamr/blogs/tests/test_views.py
2024-01-07 16:58:56 +11:00

248 lines
7.9 KiB
Python

"""test views"""
from datetime import timedelta
from unittest.mock import patch
from django.contrib.auth.models import AnonymousUser
from django.core import mail
from django.test import Client, TestCase
from django.test.client import RequestFactory
from django.urls import reverse
from django.utils import timezone
from blogs import forms, models, views
class PublicTests(TestCase):
"""Public views test cases"""
def setUp(self):
start_date = timezone.now() + timedelta(days=5)
self.factory = RequestFactory()
self.glam_conf = models.Event.objects.create(
name="Awesome conf",
url="https://awesome.conf",
category="GLAM",
description="An awesome conf",
start_date=start_date,
)
def test_public_views_load(self):
"""
Do public views load correctly?
"""
home = self.client.get(reverse("home"))
self.assertEqual(home.status_code, 200)
browse = self.client.get(reverse("browse"))
self.assertEqual(browse.status_code, 200)
search = self.client.get(reverse("search"))
self.assertEqual(search.status_code, 200)
help = self.client.get(reverse("help"))
self.assertEqual(help.status_code, 200)
contribute = self.client.get(reverse("contribute"))
self.assertEqual(contribute.status_code, 200)
contact = self.client.get(reverse("contact"))
self.assertEqual(contact.status_code, 200)
blogs_response = self.client.get(reverse("blogs"))
self.assertEqual(blogs_response.status_code, 200)
confs_response = self.client.get(reverse("events"))
self.assertEqual(confs_response.status_code, 200)
groups_response = self.client.get(reverse("groups"))
self.assertEqual(groups_response.status_code, 200)
news_response = self.client.get(reverse("newsletters"))
self.assertEqual(news_response.status_code, 200)
rblog_response = self.client.get(reverse("register-blog"))
self.assertEqual(rblog_response.status_code, 200)
submit = self.client.get(reverse("submit-blog-registration"))
self.assertEqual(submit.status_code, 200) # 301?
rconf_response = self.client.get(reverse("register-event"))
self.assertEqual(rconf_response.status_code, 200)
rcfp_response = self.client.get(reverse("register-cfp"))
self.assertEqual(rcfp_response.status_code, 200)
rgroup_response = self.client.get(reverse("register-group"))
self.assertEqual(rgroup_response.status_code, 200)
rnews_response = self.client.get(reverse("register-newsletter"))
self.assertEqual(rnews_response.status_code, 200)
rnews_response = self.client.get(
reverse("thankyou", args=({"register_type": "blog"}))
)
self.assertEqual(rnews_response.status_code, 200)
subscribe = self.client.get(reverse("subscribe"))
self.assertEqual(subscribe.status_code, 200)
af = self.client.get(reverse("article-feed"))
self.assertEqual(af.status_code, 200)
cf = self.client.get(reverse("event-feed"))
self.assertEqual(cf.status_code, 200)
def test_confirm_register_blog(self):
"""post final event registration form"""
view = views.ConfirmBlogRegistration.as_view()
form = forms.ConfirmBlogForm()
form.data["title"] = "My blog"
form.data["author_name"] = "Bob Bobson"
form.data["url"] = "https://www.example.com"
form.data["feed"] = "https://www.example.com/feed"
form.data["category"] = "LIB"
request = self.factory.post("/submit-blog-registration", form.data)
request.user = AnonymousUser()
view(request)
exists = models.Blog.objects.filter(title="My blog").exists()
self.assertTrue(exists)
def test_register_conference(self):
"""post event registration form"""
view = views.RegisterConference.as_view()
form = forms.RegisterConferenceForm()
form.data["name"] = "My event"
form.data["description"] = "A conf for gallerists"
form.data["url"] = "https://awesome.conf/cfp"
form.data["category"] = "GAL"
form.data["start_date"] = "30/01/2024"
request = self.factory.post("register-event/", form.data)
request.user = AnonymousUser()
view(request)
exists = models.Event.objects.filter(name="My event").exists()
self.assertTrue(exists)
def test_register_cfp_unapproved_event(self):
"""post CFP registration form"""
view = views.RegisterCallForPapers.as_view()
form = forms.RegisterCallForPapersForm()
form.data["event"] = self.glam_conf.id
form.data["name"] = "Call for Papers"
form.data["details"] = "Here are some details"
form.data["opening_date"] = "01/01/2024"
form.data["closing_date"] = "28/01/2024"
request = self.factory.post("register-cfp/", form.data)
request.user = AnonymousUser()
view(request)
exists = models.CallForPapers.objects.filter(name="Call for Papers").exists()
self.assertFalse(exists)
def test_register_cfp_approved_event(self):
"""post CFP registration form"""
self.glam_conf.approved = True
self.glam_conf.save()
view = views.RegisterCallForPapers.as_view()
form = forms.RegisterCallForPapersForm()
form.data["event"] = self.glam_conf.id
form.data["name"] = "Call for Papers"
form.data["details"] = "Here are some details"
form.data["opening_date"] = "01/01/2024"
form.data["closing_date"] = "28/01/2024"
request = self.factory.post("register-cfp/", form.data)
request.user = AnonymousUser()
view(request)
exists = models.CallForPapers.objects.filter(name="Call for Papers").exists()
self.assertTrue(exists)
def test_register_group(self):
"""post group registration form"""
view = views.RegisterGroup.as_view()
form = forms.RegisterGroupForm()
form.data["name"] = "GLAMR testers"
form.data["category"] = "GLAM"
form.data["type"] = "KBIN"
form.data["url"] = "https://kibin.test"
form.data["registration_url"] = "https://kbin.test/glamr"
form.data["description"] = "GLAMR testers"
request = self.factory.post("register-group/", form.data)
request.user = AnonymousUser()
view(request)
exists = models.Group.objects.filter(name="GLAMR testers").exists()
self.assertTrue(exists)
def test_register_newsletter(self):
"""post newsletter registration form"""
view = views.RegisterNewsletter.as_view()
form = forms.RegisterNewsletterForm()
form.data["name"] = "My newsletter"
form.data["author"] = "Bob Bobson"
form.data["url"] = "https://www.example.com"
form.data["category"] = "LIB"
request = self.factory.post("register-newsletter/", form.data)
request.user = AnonymousUser()
view(request)
exists = models.Newsletter.objects.filter(name="My newsletter").exists()
self.assertTrue(exists)
def test_contact(self):
"""post message"""
view = views.Contact.as_view()
form = forms.ContactForm()
form.data["from_email"] = "example@example.mail"
form.data["subject"] = "Hello"
form.data["message"] = "Hi there"
request = self.factory.post("contact/", form.data)
request.user = AnonymousUser()
view(request)
# Test that one message has been sent.
self.assertEqual(len(mail.outbox), 1)
# Verify that the subject of the first message is correct.
self.assertEqual(mail.outbox[0].subject, "Message via Aus GLAMR: Hello")
def test_search(self):
"""post search query"""
# TODO
pass
def test_browse(self):
"""post browse tags query"""
# TODO
pass