Files

61 lines
2.2 KiB
Python

import unittest
from datetime import datetime, timedelta
from app import create_app, db
from app.models.user import User
from app.models.classroom import Classroom
from app.models.building import Building
from app.models.subject import Commission
from app.schemas.classroom_dto import ClassroomCreateDTO
from app.schemas.reservation_dto import ReservationCreateDTO
from app.services.classroom_service import ClassroomService
from app.services.reservation_service import ReservationService
from app.services.user_service import UserService
class TestServicesAndDTO(unittest.TestCase):
def setUp(self):
self.app = create_app()
self.app.config['TESTING'] = True
self.app.config['WTF_CSRF_ENABLED'] = False
self.app_context = self.app.app_context()
self.app_context.push()
self.classroom_service = ClassroomService()
self.reservation_service = ReservationService()
self.user_service = UserService()
def tearDown(self):
db.session.rollback()
self.app_context.pop()
def test_dto_validation(self):
# Valid ClassroomCreateDTO
dto = ClassroomCreateDTO(code="Aula Test 101", floor="1", capacity=40, building_name="Edificio Central")
self.assertEqual(dto.code, "Aula Test 101")
self.assertEqual(dto.capacity, 40)
# Invalid Reservation range (end before start)
with self.assertRaises(Exception):
ReservationCreateDTO(
classroom_id=1,
commission_id=1,
user_id=1,
start_time=datetime(2026, 9, 10, 10, 0),
end_time=datetime(2026, 9, 10, 9, 0),
purpose="Clase Test"
)
def test_classroom_service_listing(self):
classrooms = self.classroom_service.list_classrooms()
self.assertIsInstance(classrooms, list)
def test_user_service_profile(self):
user = User.query.first()
if user:
profile = self.user_service.get_profile_data(user)
self.assertIn('email', profile)
self.assertIn('role', profile)
self.assertIn('permissions', profile)
if __name__ == '__main__':
unittest.main()