Notfellchen/src/tests/test_models.py

80 lines
4.6 KiB
Python

from datetime import datetime, timedelta
from django.utils import timezone
from django.test import TestCase
from model_bakery import baker
from fellchensammlung.models import Announcement, Language, User, TrustLevel
class UserTest(TestCase):
def test_creating_user(self):
test_user_1 = User.objects.create(username="Testuser1", password="SUPERSECRET", email="test@example.org")
self.assertTrue(test_user_1.trust_level == 1)
self.assertTrue(test_user_1.trust_level == TrustLevel.MEMBER)
class AnnouncementTest(TestCase):
@classmethod
def setUpTestData(cls):
cls.language_de = baker.make(Language, name="Deutsch_", languagecode="de")
cls.language_en = baker.make(Language, name="English_", languagecode="en")
cls.announcement1 = baker.make(Announcement, title="Notfellchen reduziert um 1000%",
content="Jetzt adoptieren was da ist!",
publish_start_time=timezone.now() + timedelta(hours=-1),
publish_end_time=timezone.now() + timedelta(hours=1),
text_code="advert1",
language=cls.language_de)
cls.announcement2 = baker.make(Announcement, title="Notfellchen now on sale!",
content="Adopt now!",
publish_start_time=timezone.now() + timedelta(hours=-1),
publish_end_time=timezone.now() + timedelta(hours=1),
text_code="advert1",
language=cls.language_en)
cls.announcement3 = baker.make(Announcement, title="We got hacked",
content="Hackers threaten to release incredibly sweet animal photos!",
publish_start_time=timezone.now() + timedelta(hours=-1),
publish_end_time=timezone.now() + timedelta(hours=1),
text_code="hacked",
language=cls.language_en)
cls.announcement4 = baker.make(Announcement, title="New function: Nothing",
content="You can now also do NOTHING on this side! NOTHING will help you to be "
"more productive",
publish_start_time=timezone.now() + timedelta(hours=1),
publish_end_time=datetime.now() + timedelta(hours=2),
text_code="inactive",
language=cls.language_en)
cls.announcement5 = baker.make(Announcement, title="Secret for all logged in",
content="You can create adoption notices yourself",
publish_start_time=timezone.now() + timedelta(hours=-1),
publish_end_time=datetime.now() + timedelta(hours=2),
text_code="secret",
language=cls.language_en,
logged_in_only=True)
def test_active_announcements(self):
active_announcements = Announcement.get_active_announcements()
self.assertTrue(self.announcement1 in active_announcements)
self.assertTrue(self.announcement2 in active_announcements)
self.assertTrue(self.announcement3 in active_announcements)
self.assertTrue(self.announcement4 not in active_announcements)
self.assertTrue(self.announcement5 not in active_announcements)
active_announcements = Announcement.get_active_announcements(language=self.language_de)
self.assertTrue(self.announcement1 in active_announcements)
self.assertTrue(self.announcement3 in active_announcements)
self.assertTrue(self.announcement2 not in active_announcements)
self.assertTrue(self.announcement4 not in active_announcements)
self.assertTrue(self.announcement5 not in active_announcements)
active_announcements = Announcement.get_active_announcements(language=self.language_de, logged_in=True)
self.assertTrue(self.announcement1 in active_announcements)
self.assertTrue(self.announcement3 in active_announcements)
self.assertTrue(self.announcement2 not in active_announcements)
self.assertTrue(self.announcement4 not in active_announcements)
self.assertTrue(self.announcement5 in active_announcements)