61 lines
2.2 KiB
Python
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()
|