38 lines
1.7 KiB
Python
38 lines
1.7 KiB
Python
"""Requalification des prérequis réellement rattachés au technicien."""
|
|
|
|
from datetime import date, time
|
|
|
|
from app_new import db
|
|
from app_new.core.models.planning import AnnualTimeConfig, WorkSchedule
|
|
from app_new.core.models.user import User
|
|
from app_new.core.services.planning_service import PlanningService
|
|
|
|
|
|
def _user(username, name):
|
|
user = User(username=username, email=f"{username}@gmao.local", full_name=name, is_active=True)
|
|
user.set_password("phase21-requalification-password")
|
|
db.session.add(user)
|
|
db.session.flush()
|
|
return user
|
|
|
|
|
|
def test_working_hours_are_isolated_between_two_technicians(app):
|
|
with app.app_context():
|
|
tech_a = _user("phase21_tech_a", "Technicien A")
|
|
tech_b = _user("phase21_tech_b", "Technicien B")
|
|
db.session.add_all([
|
|
WorkSchedule(user_id=tech_a.id, day_of_week=0, start_time=time(8), end_time=time(17), lunch_start=time(12), lunch_end=time(13, 30)),
|
|
WorkSchedule(user_id=tech_b.id, day_of_week=0, start_time=time(7), end_time=time(15, 30), lunch_start=time(11, 30), lunch_end=time(12, 30)),
|
|
])
|
|
db.session.commit()
|
|
try:
|
|
monday = date(2026, 8, 24)
|
|
assert PlanningService.get_working_hours(monday, user_id=tech_a.id)[:2] == (time(8), time(17))
|
|
assert PlanningService.get_working_hours(monday, user_id=tech_b.id)[:2] == (time(7), time(15, 30))
|
|
finally:
|
|
WorkSchedule.query.filter(WorkSchedule.user_id.in_([tech_a.id, tech_b.id])).delete(synchronize_session=False)
|
|
AnnualTimeConfig.query.filter(AnnualTimeConfig.user_id.in_([tech_a.id, tech_b.id])).delete(synchronize_session=False)
|
|
db.session.delete(tech_a)
|
|
db.session.delete(tech_b)
|
|
db.session.commit()
|
|
|