Files
fet2020/fet2020/members/tests.py
2021-12-07 10:22:04 +00:00

224 lines
6.4 KiB
Python

import os
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase
from .forms import JobForm, JobGroupForm, MemberForm
from .models import Job, JobGroup, Member
image_path = os.path.join(os.path.dirname(__file__), "tests/files/peter.jpg")
class MemberTestCase(TestCase):
def setUp(self):
member = Member()
member.firstname = "Peter"
member.surname = "Traunmüller"
member.nickname = "Pet"
member.mailaccount = "peter@fet.at"
member.role = "A"
member.save()
def test_member(self):
member = Member.objects.get(firstname="Peter")
self.assertEqual(member.__str__(), "Peter Traunmüller")
self.assertEqual(member.role, "A")
class MemberFormTestCase(TestCase):
def test_basic_form(self):
image = SimpleUploadedFile(
name="peter.jpg",
content=open(image_path, "rb").read(),
content_type="image/jpeg",
)
form = MemberForm(
data={
"firstname": "Peter",
"surname": "Traunmüller",
"nickname": "Pet",
"mailaccount": "peter@fet.at",
"role": "A",
},
files={"image": image},
)
self.assertTrue(form.is_valid())
form.save()
member = Member.objects.get(firstname="Peter")
self.assertEqual(member.__str__(), "Peter Traunmüller")
def test_advanced_form(self):
# test blank fields, like phone number
image = SimpleUploadedFile(
name="peter.jpg",
content=open(image_path, "rb").read(),
content_type="image/jpeg",
)
form = MemberForm(
data={
"firstname": "Peter",
"surname": "Traunmüller",
"nickname": "Pet",
"mailaccount": "peter@fet.at",
"role": "A",
"phone": "+4364412345678",
},
files={"image": image},
)
self.assertTrue(form.is_valid())
form.save()
member = Member.objects.get(firstname="Peter")
self.assertEqual(member.phone, "+4364412345678")
def test_form_error_no_image(self):
form = MemberForm(
data={
"firstname": "Peter",
"surname": "Traunmüller",
"nickname": "Pet",
"mailaccount": "peter@fet.at",
"role": "A",
},
)
self.assertFalse(form.is_valid())
self.assertEqual(
form.errors.as_data()["__all__"][0].message, "Es fehlt das Profilbild."
)
def test_form_wrong_mailaccount(self):
image = SimpleUploadedFile(
name="peter.jpg",
content=open(image_path, "rb").read(),
content_type="image/jpeg",
)
form = MemberForm(
data={
"firstname": "Peter",
"surname": "Traunmüller",
"nickname": "Pet",
"mailaccount": "peter@feet.at",
"role": "A",
},
files={"image": image},
)
self.assertFalse(form.is_valid())
self.assertEqual(
form.errors.as_data()["mailaccount"][0].message,
"In der Mailadresse fehlt die richtige Domäne.",
)
def test_form_wrong_domain(self):
image = SimpleUploadedFile(
name="peter.jpg",
content=open(image_path, "rb").read(),
content_type="image/jpeg",
)
form = MemberForm(
data={
"firstname": "Peter",
"surname": "Traunmüller",
"nickname": "Pet",
"mailaccount": "peterfet.at",
"role": "A",
},
files={"image": image},
)
self.assertFalse(form.is_valid())
self.assertEqual(
form.errors.as_data()["mailaccount"][0].message,
"Gib eine gültige E-Mail Adresse an.",
)
def test_form_wrong_phone_number(self):
image = SimpleUploadedFile(
name="peter.jpg",
content=open(image_path, "rb").read(),
content_type="image/jpeg",
)
form = MemberForm(
data={
"firstname": "Peter",
"surname": "Traunmüller",
"nickname": "Pet",
"mailaccount": "peter@fet.at",
"role": "A",
"phone": "+43644+12345678",
},
files={"image": image},
)
self.assertFalse(form.is_valid())
self.assertEqual(
form.errors.as_data()["phone"][0].message,
"Telefonnummer muss in diesem Format +999999999999 eingegeben werden. "
"Bis zu 15 Zahlen sind erlaubt.",
)
class JobGroupFormTestCase(TestCase):
def test_form(self):
form = JobGroupForm(
data={
"name": "Studienkommission ET",
"shortterm": "Stuko ET",
},
)
self.assertTrue(form.is_valid())
form.save()
job_group = JobGroup.objects.get(name="Studienkommission ET")
self.assertEqual(job_group.__str__(), "Studienkommission ET")
self.assertEqual(job_group.slug, "stuko-et")
def test_form_error_slug(self):
form = JobGroupForm(
data={
"name": "Studienkommission ET",
"shortterm": "Stuko ET",
},
)
self.assertTrue(form.is_valid())
form.save()
job_group = JobGroup.objects.get(name="Studienkommission ET")
self.assertEqual(job_group.__str__(), "Studienkommission ET")
self.assertNotEqual(job_group.slug, "stuko et")
class JobFormTestCase(TestCase):
def test_form(self):
job_group = JobGroup()
job_group.name = "Studienkommission ET"
job_group.shortterm = "Stuko ET"
job_group.save()
form = JobForm(
data={
"name": "Studienkommission Master",
"shortterm": "Stuko Master",
"job_group": job_group,
},
)
self.assertTrue(form.is_valid())
form.save()
job = Job.objects.get(name="Studienkommission Master")
self.assertEqual(job.__str__(), "Studienkommission Master")
self.assertEqual(job.slug, "stuko-master")