init project tests

This commit is contained in:
Maximilian 2025-06-07 19:24:41 +02:00
parent d0ff728224
commit 7c9318c778
44 changed files with 4431 additions and 49 deletions

View file

@ -0,0 +1,140 @@
"""
Unit tests for Aviary models.
"""
import pytest
from django.test import TestCase
from django.core.exceptions import ValidationError
from django.contrib.auth.models import User
from django.utils import timezone
from aviary.models import Aviary
class AviaryModelTests(TestCase):
"""Test cases for Aviary model."""
def setUp(self):
"""Set up test data."""
self.user = User.objects.create_user(
username='testuser',
email='test@example.com',
password='testpass123'
)
self.aviary = Aviary.objects.create(
name="Test Aviary",
location="Test Location",
description="Test description",
capacity=50,
current_occupancy=10,
contact_person="Jane Doe",
contact_phone="987654321",
contact_email="jane@example.com",
created_by=self.user
)
def test_aviary_creation(self):
"""Test that an aviary can be created."""
self.assertTrue(isinstance(self.aviary, Aviary))
self.assertEqual(self.aviary.name, "Test Aviary")
self.assertEqual(self.aviary.location, "Test Location")
self.assertEqual(self.aviary.description, "Test description")
self.assertEqual(self.aviary.capacity, 50)
self.assertEqual(self.aviary.current_occupancy, 10)
self.assertEqual(self.aviary.contact_person, "Jane Doe")
self.assertEqual(self.aviary.contact_phone, "987654321")
self.assertEqual(self.aviary.contact_email, "jane@example.com")
def test_aviary_str_representation(self):
"""Test the string representation of aviary."""
self.assertEqual(str(self.aviary), "Test Aviary")
def test_aviary_capacity_validation(self):
"""Test that aviary capacity is validated."""
# Test negative capacity
with self.assertRaises(ValidationError):
aviary = Aviary(
name="Invalid Aviary",
location="Test Location",
capacity=-1,
created_by=self.user
)
aviary.full_clean()
# Test zero capacity
aviary = Aviary(
name="Zero Capacity Aviary",
location="Test Location",
capacity=0,
created_by=self.user
)
# This should be valid
aviary.full_clean()
def test_aviary_occupancy_validation(self):
"""Test that current occupancy is validated."""
# Test negative occupancy
with self.assertRaises(ValidationError):
aviary = Aviary(
name="Invalid Aviary",
location="Test Location",
current_occupancy=-1,
created_by=self.user
)
aviary.full_clean()
def test_aviary_occupancy_exceeds_capacity(self):
"""Test validation when occupancy exceeds capacity."""
# Test occupancy exceeding capacity
with self.assertRaises(ValidationError):
aviary = Aviary(
name="Overcrowded Aviary",
location="Test Location",
capacity=10,
current_occupancy=15,
created_by=self.user
)
aviary.full_clean()
def test_aviary_required_fields(self):
"""Test that required fields are validated."""
with self.assertRaises(ValidationError):
aviary = Aviary()
aviary.full_clean()
def test_aviary_email_validation(self):
"""Test that email field is validated."""
with self.assertRaises(ValidationError):
aviary = Aviary(
name="Test Aviary",
location="Test Location",
contact_email="invalid-email",
created_by=self.user
)
aviary.full_clean()
def test_aviary_relationship(self):
"""Test aviary relationship with user."""
self.assertEqual(self.aviary.created_by, self.user)
def test_aviary_is_full_property(self):
"""Test the is_full property."""
# Create aviary at capacity
full_aviary = Aviary.objects.create(
name="Full Aviary",
location="Test Location",
capacity=5,
current_occupancy=5,
created_by=self.user
)
# Check if we can add a property method to test
self.assertEqual(full_aviary.capacity, full_aviary.current_occupancy)
# Check partial occupancy
self.assertLess(self.aviary.current_occupancy, self.aviary.capacity)
def test_aviary_available_space(self):
"""Test calculating available space."""
expected_available = self.aviary.capacity - self.aviary.current_occupancy
self.assertEqual(expected_available, 40) # 50 - 10 = 40