import uuid from django.test import TestCase from apps.users.models import User, UserRole from .helpers import make_user class UserRoleChoicesTest(TestCase): def test_choices_count(self) -> None: self.assertEqual(len(UserRole.choices), 4) def test_choice_values(self) -> None: values = {c[0] for c in UserRole.choices} self.assertEqual( values, {"admin", "experimenter", "approver", "viewer"} ) class UserModelTest(TestCase): def test_default_role_is_viewer(self) -> None: user: User = make_user() self.assertEqual(user.role, UserRole.VIEWER) def test_role_properties(self) -> None: admin: User = make_user( username="a", email="a@x.com", role=UserRole.ADMIN ) self.assertTrue(admin.is_admin_role) self.assertFalse(admin.is_experimenter) self.assertFalse(admin.is_approver) self.assertFalse(admin.is_viewer) exp: User = make_user( username="e", email="e@x.com", role=UserRole.EXPERIMENTER ) self.assertTrue(exp.is_experimenter) appr: User = make_user( username="ap", email="ap@x.com", role=UserRole.APPROVER ) self.assertTrue(appr.is_approver) viewer: User = make_user( username="v", email="v@x.com", role=UserRole.VIEWER ) self.assertTrue(viewer.is_viewer) def test_uuid_primary_key(self) -> None: user: User = make_user() self.assertIsInstance(user.pk, uuid.UUID) def test_str_representation(self) -> None: user: User = make_user(username="hello") self.assertEqual(str(user), "hello")