52 lines
1.9 KiB
Python
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)
|