Files
Lotty/src/backend/apps/events/tests/test_models.py
T

52 lines
1.9 KiB
Python

from django.core.exceptions import ValidationError
from django.test import TestCase
from apps.events.services import event_type_update
from apps.events.tests.helpers import make_event_type
class EventTypeModelTest(TestCase):
def test_create_event_type(self) -> None:
et = make_event_type(name="page_view", display_name="Page View")
self.assertEqual(et.name, "page_view")
self.assertEqual(et.display_name, "Page View")
self.assertFalse(et.requires_exposure)
self.assertTrue(et.is_active)
def test_create_event_type_with_required_fields(self) -> None:
et = make_event_type(
name="click",
display_name="Click",
required_fields=["screen", "element"],
)
self.assertEqual(et.required_fields, ["screen", "element"])
def test_unique_name_constraint(self) -> None:
make_event_type(name="unique_evt")
with self.assertRaises((ValidationError, Exception)):
make_event_type(name="unique_evt")
def test_invalid_name_rejected(self) -> None:
with self.assertRaises(ValidationError):
make_event_type(name="Invalid Name!")
def test_update_event_type(self) -> None:
et = make_event_type(name="updatable")
updated = event_type_update(
event_type=et,
display_name="Updated Name",
requires_exposure=True,
)
self.assertEqual(updated.display_name, "Updated Name")
self.assertTrue(updated.requires_exposure)
def test_update_disallowed_field(self) -> None:
et = make_event_type(name="no_rename")
with self.assertRaises(ValidationError):
event_type_update(event_type=et, name="renamed")
def test_archive_event_type(self) -> None:
et = make_event_type(name="archivable")
updated = event_type_update(event_type=et, is_active=False)
self.assertFalse(updated.is_active)