Spaces:
Sleeping
Sleeping
File size: 2,817 Bytes
4c94294 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | import pytest
from models import Task
from datetime import datetime
def test_task_model_creation():
"""Test that Task model can be created with required fields"""
task = Task(
user_id="user123",
title="Test Task",
description="Test Description",
completed=False,
)
assert task.user_id == "user123"
assert task.title == "Test Task"
assert task.description == "Test Description"
assert task.completed is False
assert task.priority == "medium"
assert task.category is None
assert task.tags == []
assert isinstance(task.created_at, datetime)
assert isinstance(task.updated_at, datetime)
def test_task_model_optional_fields():
"""Test that Task model handles optional fields correctly"""
task = Task(
user_id="user123",
title="Test Task",
priority="high",
category="work",
tags=["test", "important"]
)
assert task.user_id == "user123"
assert task.title == "Test Task"
assert task.priority == "high"
assert task.category == "work"
assert task.tags == ["test", "important"]
assert task.completed is False # Default value should be False
def test_task_model_defaults():
"""Test that Task model uses correct default values"""
task = Task(
user_id="user123",
title="Test Task"
)
assert task.completed is False
assert task.priority == "medium"
assert task.category is None
assert task.tags == []
assert task.description is None
def test_task_model_priority_enum():
"""Test that Task model accepts valid priority values"""
from models import TaskPriority
task_high = Task(user_id="user123", title="High Priority", priority=TaskPriority.high)
task_medium = Task(user_id="user123", title="Medium Priority", priority=TaskPriority.medium)
task_low = Task(user_id="user123", title="Low Priority", priority=TaskPriority.low)
assert task_high.priority == TaskPriority.high
assert task_medium.priority == TaskPriority.medium
assert task_low.priority == TaskPriority.low
def test_task_model_empty_title_validation():
"""Test that Task model accepts a title (creation happens with validation on frontend)"""
# In the current SQLModel implementation, validation happens at the database level
# or in the API layer rather than in the model constructor itself
# The model will accept the empty title but the API will validate
task = Task(user_id="user123", title="")
assert task.user_id == "user123"
assert task.title == ""
def test_task_model_required_user_id():
"""Test that Task model requires user_id"""
task = Task(user_id="test_user", title="Test Task")
assert task.user_id == "test_user"
assert task.title == "Test Task" |