Dynavera/apps/accounts/tests/test_models.py
2026-02-27 12:12:26 +00:00

97 lines
3.5 KiB
Python

from django.contrib.auth import get_user_model
from django.test import TestCase
from django.utils import timezone
from apps.accounts.models import Invite, Organization, Role
User = get_user_model()
class AccountsModelTests(TestCase):
def setUp(self):
self.owner = User.objects.create_user(
email_address='owner@example.com',
password='pass1234',
first_name='Owner',
last_name='User',
date_of_birth='1990-01-01',
is_manager=True,
)
self.member = User.objects.create_user(
email_address='member@example.com',
password='pass1234',
first_name='Member',
last_name='User',
date_of_birth='1992-02-02',
)
def test_user_fields_and_defaults(self):
self.assertEqual(self.owner.email_address, 'owner@example.com')
self.assertEqual(self.owner.first_name, 'Owner')
self.assertEqual(self.owner.last_name, 'User')
self.assertEqual(str(self.owner.date_of_birth), '1990-01-01')
self.assertTrue(self.owner.is_active)
self.assertFalse(self.owner.is_staff)
self.assertTrue(self.owner.is_manager)
self.assertIsNotNone(self.owner.id)
self.assertIsNotNone(self.owner.uuid)
self.assertIsNotNone(self.owner.created_at)
self.assertIsNotNone(self.owner.updated_at)
self.assertEqual(self.owner.full_name, 'Owner User')
self.assertEqual(str(self.owner), 'Owner User')
def test_organization_fields_and_relations(self):
org = Organization.objects.create(
name='Acme',
description='Primary org',
owner=self.owner,
)
org.members.add(self.owner, self.member)
self.assertEqual(org.name, 'Acme')
self.assertEqual(org.description, 'Primary org')
self.assertEqual(org.owner, self.owner)
self.assertEqual(org.members.count(), 2)
self.assertIsNotNone(org.id)
self.assertIsNotNone(org.uuid)
self.assertIsNotNone(org.created_at)
self.assertIsNotNone(org.updated_at)
self.assertEqual(str(org), 'Acme')
def test_invite_fields_defaults_and_validity(self):
org = Organization.objects.create(name='Org B', owner=self.owner)
invite = Invite.objects.create(organization=org, created_by=self.owner)
self.assertIsNotNone(invite.token)
self.assertEqual(invite.organization, org)
self.assertEqual(invite.created_by, self.owner)
self.assertEqual(invite.uses, 0)
self.assertEqual(invite.max_uses, 1)
self.assertTrue(invite.is_active)
self.assertGreater(invite.expires_at, timezone.now())
self.assertTrue(invite.is_valid())
invite.uses = 1
invite.save(update_fields=['uses'])
self.assertFalse(invite.is_valid())
def test_role_fields_relations_and_string(self):
org = Organization.objects.create(name='Org C', owner=self.owner)
role = Role.objects.create(name='Engineer', description='Builds things', organization=org)
role.members.add(self.member)
self.assertEqual(role.name, 'Engineer')
self.assertEqual(role.description, 'Builds things')
self.assertEqual(role.organization, org)
self.assertEqual(role.members.count(), 1)
self.assertIsNotNone(role.id)
self.assertIsNotNone(role.uuid)
self.assertIsNotNone(role.created_at)
self.assertIsNotNone(role.updated_at)
self.assertEqual(str(role), 'Engineer (Org C)')