77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
"""Unit tests for models."""
|
|
import pytest
|
|
from datetime import datetime
|
|
from app.models import User, Organization
|
|
from app.utils.constants import UserStatus
|
|
|
|
|
|
@pytest.mark.unit
|
|
class TestUserModel:
|
|
"""Tests for User model."""
|
|
|
|
def test_create_user(self, db):
|
|
"""Test creating a user."""
|
|
user = User(
|
|
email="test@example.com",
|
|
full_name="Test User",
|
|
status=UserStatus.ACTIVE,
|
|
)
|
|
user.save()
|
|
|
|
assert user.id is not None
|
|
assert user.email == "test@example.com"
|
|
assert user.full_name == "Test User"
|
|
assert user.status == UserStatus.ACTIVE
|
|
assert user.created_at is not None
|
|
assert user.deleted_at is None
|
|
|
|
def test_user_to_dict(self, test_user):
|
|
"""Test user to_dict method."""
|
|
user_dict = test_user.to_dict()
|
|
|
|
assert "id" in user_dict
|
|
assert "email" in user_dict
|
|
assert user_dict["email"] == test_user.email
|
|
assert "created_at" in user_dict
|
|
|
|
def test_user_soft_delete(self, test_user):
|
|
"""Test soft deleting a user."""
|
|
test_user.delete(soft=True)
|
|
|
|
assert test_user.deleted_at is not None
|
|
assert isinstance(test_user.deleted_at, datetime)
|
|
|
|
|
|
@pytest.mark.unit
|
|
class TestOrganizationModel:
|
|
"""Tests for Organization model."""
|
|
|
|
def test_create_organization(self, db):
|
|
"""Test creating an organization."""
|
|
org = Organization(
|
|
name="Test Org",
|
|
slug="test-org",
|
|
description="Test organization",
|
|
)
|
|
org.save()
|
|
|
|
assert org.id is not None
|
|
assert org.name == "Test Org"
|
|
assert org.slug == "test-org"
|
|
assert org.is_active is True
|
|
assert org.created_at is not None
|
|
|
|
def test_organization_to_dict(self, test_organization):
|
|
"""Test organization to_dict method."""
|
|
org_dict = test_organization.to_dict()
|
|
|
|
assert "id" in org_dict
|
|
assert "name" in org_dict
|
|
assert org_dict["name"] == test_organization.name
|
|
assert "slug" in org_dict
|
|
|
|
def test_get_member_count(self, test_organization):
|
|
"""Test getting member count."""
|
|
count = test_organization.get_member_count()
|
|
assert count == 1 # Only the owner
|