97 lines
3.5 KiB
Python
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.uuid)
|
|
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)')
|