You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kompass/jdav_web/startpage/tests.py

113 lines
5.3 KiB
Python

from django.test import TestCase, Client
from django.urls import reverse
from django.conf import settings
from members.models import Group
from .models import Post, Section
class BasicTestCase(TestCase):
def setUp(self):
orga = Section.objects.create(title='Organisation', urlname='orga', website_text='Section is a about everything.')
recent = Section.objects.create(title='Recent', urlname=settings.RECENT_SECTION, website_text='Recently recent.')
reports = Section.objects.create(title='Reports', urlname=settings.REPORTS_SECTION, website_text='Reporty reports.')
Post.objects.create(title='Climbing is fun', urlname='climbing-is-fun', website_text='Climbing is fun!',
section=recent)
Post.objects.create(title='Last trip', urlname='last-trip', website_text='A fun trip.',
section=reports)
Post.objects.create(title='Staff', urlname='staff', website_text='This is our staff: Peter.',
section=orga)
Group.objects.create(name='CrazyClimbers', show_website=True)
Group.objects.create(name='SuperClimbers', show_website=False)
class ModelsTestCase(BasicTestCase):
def test_str(self):
orga = Section.objects.get(urlname='orga')
self.assertEqual(str(orga), orga.title, 'String representation does not match title.')
post = Post.objects.get(urlname='staff', section=orga)
self.assertEqual(post.absolute_section(), orga.title, 'Displayed section of post does not match section title.')
self.assertEqual(str(post), post.title, 'String representation does not match title.')
def test_absolute_urlnames(self):
orga = Section.objects.get(urlname='orga')
recent = Section.objects.get(urlname=settings.RECENT_SECTION)
reports = Section.objects.get(urlname=settings.REPORTS_SECTION)
self.assertEqual(orga.absolute_urlname(), '/de/orga')
post1 = Post.objects.get(urlname='staff', section=orga)
self.assertEqual(post1.absolute_urlname(), '/de/orga/staff')
self.assertEqual(post1.absolute_urlname(), reverse('startpage:post', args=(orga.urlname, 'staff')))
post2 = Post.objects.get(urlname='climbing-is-fun', section=recent)
self.assertEqual(post2.absolute_urlname(),
'/de/{name}/climbing-is-fun'.format(name=settings.RECENT_SECTION))
self.assertEqual(post2.absolute_urlname(), reverse('startpage:post', args=(recent.urlname, 'climbing-is-fun')))
post3 = Post.objects.get(urlname='last-trip', section=reports)
self.assertEqual(post3.absolute_urlname(),
'/de/{name}/last-trip'.format(name=settings.REPORTS_SECTION))
self.assertEqual(post3.absolute_urlname(), reverse('startpage:post', args=(reports.urlname, 'last-trip')))
class ViewTestCase(BasicTestCase):
def test_index(self):
c = Client()
url = reverse('startpage:index')
response = c.get(url)
self.assertEqual(response.status_code, 200, 'Response code is not 200 for index.')
def test_posts_no_category(self):
c = Client()
url = reverse('startpage:post', args=(settings.RECENT_SECTION, 'climbing-is-fun'))
response = c.get(url)
self.assertEqual(response.status_code, 200, 'Response code is not 200 for climbing post.')
def test_posts_orga(self):
c = Client()
url = reverse('startpage:post', args=('orga', 'staff'))
response = c.get(url)
self.assertEqual(response.status_code, 200, 'Response code is not 200 for staff post.')
def test_section(self):
c = Client()
url = reverse('startpage:section', args=('orga',))
response = c.get(url)
self.assertEqual(response.status_code, 200, 'Response code is not 200 for section page.')
def test_section_recent(self):
c = Client()
url = reverse('startpage:' + settings.RECENT_SECTION)
response = c.get(url)
self.assertEqual(response.status_code, 200, 'Response code is not 200 for section page.')
def test_section_reports(self):
c = Client()
url = reverse('startpage:' + settings.REPORTS_SECTION)
response = c.get(url)
self.assertEqual(response.status_code, 200, 'Response code is not 200 for section page.')
def test_404(self):
c = Client()
response = c.get('/de/asdfasdfasdf')
self.assertEqual(response.status_code, 404, 'Response code is not 404 when page not found.')
def test_impressum(self):
c = Client()
response = c.get('/de/impressum')
self.assertEqual(response.status_code, 200, 'Response code is not 200 for impressum.')
def test_gruppen(self):
c = Client()
url = reverse('startpage:gruppe_detail', args=('CrazyClimbers',))
response = c.get(url)
self.assertEqual(response.status_code, 200, 'Response code is not 200 for group.')
def test_gruppen_404(self):
c = Client()
url = reverse('startpage:gruppe_detail', args=('SuperClimbers',))
response = c.get(url)
self.assertEqual(response.status_code, 404, 'Response code is not 404 for group.')
url = reverse('startpage:gruppe_detail', args=('SuperClimbersNotExisting',))
response = c.get(url)
self.assertEqual(response.status_code, 404, 'Response code is not 404 for group.')