132 lines
4.0 KiB
Python
132 lines
4.0 KiB
Python
"""Unit tests for models"""
|
|
|
|
import pytest
|
|
from datetime import datetime
|
|
from unittest.mock import MagicMock
|
|
|
|
from app.models.user import User
|
|
from app.models.alert import Alert, AlertSeverity, AlertStatus
|
|
from app.models.task import CollectionTask
|
|
|
|
|
|
class TestUserModel:
|
|
"""Tests for User model"""
|
|
|
|
def test_user_creation(self):
|
|
"""Test user model creation"""
|
|
user = User(
|
|
id=1,
|
|
username="testuser",
|
|
email="test@example.com",
|
|
password_hash="hashed_password",
|
|
role="admin",
|
|
is_active=True,
|
|
)
|
|
assert user.id == 1
|
|
assert user.username == "testuser"
|
|
assert user.email == "test@example.com"
|
|
assert user.is_active is True
|
|
|
|
def test_user_role_assignment(self):
|
|
"""Test user role assignment"""
|
|
user = User(
|
|
username="testuser",
|
|
email="test@example.com",
|
|
password_hash="hashed",
|
|
role="admin",
|
|
)
|
|
assert user.role == "admin"
|
|
|
|
def test_user_password_hash(self):
|
|
"""Test user password hash attribute"""
|
|
user = User(
|
|
username="testuser",
|
|
email="test@example.com",
|
|
password_hash="hashed_password",
|
|
)
|
|
assert user.password_hash == "hashed_password"
|
|
|
|
|
|
class TestAlertModel:
|
|
"""Tests for Alert model"""
|
|
|
|
def test_alert_creation(self):
|
|
"""Test alert model creation"""
|
|
alert = Alert(
|
|
id=1,
|
|
severity=AlertSeverity.WARNING,
|
|
status=AlertStatus.ACTIVE,
|
|
message="Test alert message",
|
|
datasource_id=1,
|
|
datasource_name="Test Source",
|
|
)
|
|
assert alert.id == 1
|
|
assert alert.severity == AlertSeverity.WARNING
|
|
assert alert.status == AlertStatus.ACTIVE
|
|
assert alert.message == "Test alert message"
|
|
|
|
def test_alert_to_dict(self):
|
|
"""Test alert to_dict method"""
|
|
alert = Alert(
|
|
id=1,
|
|
severity=AlertSeverity.CRITICAL,
|
|
status=AlertStatus.ACTIVE,
|
|
message="Critical alert",
|
|
datasource_id=2,
|
|
datasource_name="Test Source",
|
|
created_at=datetime(2024, 1, 1, 12, 0, 0),
|
|
)
|
|
result = alert.to_dict()
|
|
assert result["id"] == 1
|
|
assert result["severity"] == "critical"
|
|
assert result["status"] == "active"
|
|
assert result["message"] == "Critical alert"
|
|
assert result["created_at"] == "2024-01-01T12:00:00"
|
|
|
|
def test_alert_severity_enum(self):
|
|
"""Test alert severity enum values"""
|
|
assert AlertSeverity.CRITICAL.value == "critical"
|
|
assert AlertSeverity.WARNING.value == "warning"
|
|
assert AlertSeverity.INFO.value == "info"
|
|
|
|
def test_alert_status_enum(self):
|
|
"""Test alert status enum values"""
|
|
assert AlertStatus.ACTIVE.value == "active"
|
|
assert AlertStatus.ACKNOWLEDGED.value == "acknowledged"
|
|
assert AlertStatus.RESOLVED.value == "resolved"
|
|
|
|
|
|
class TestCollectionTaskModel:
|
|
"""Tests for CollectionTask model"""
|
|
|
|
def test_task_creation(self):
|
|
"""Test collection task creation"""
|
|
task = CollectionTask(
|
|
id=1,
|
|
datasource_id=1,
|
|
status="running",
|
|
records_processed=0,
|
|
started_at=datetime.utcnow(),
|
|
)
|
|
assert task.id == 1
|
|
assert task.datasource_id == 1
|
|
assert task.status == "running"
|
|
|
|
def test_task_with_records(self):
|
|
"""Test collection task with records processed"""
|
|
task = CollectionTask(
|
|
datasource_id=1,
|
|
status="success",
|
|
records_processed=100,
|
|
)
|
|
assert task.records_processed == 100
|
|
|
|
def test_task_error_message(self):
|
|
"""Test collection task with error message"""
|
|
task = CollectionTask(
|
|
datasource_id=1,
|
|
status="failed",
|
|
error_message="Connection timeout",
|
|
)
|
|
assert task.error_message == "Connection timeout"
|