31 lines
1.8 KiB
Python
31 lines
1.8 KiB
Python
from datetime import date
|
|
from uuid import uuid4
|
|
from flask_login import login_user
|
|
from app_new.extensions import db
|
|
from app_new.core.models.prevention import PreventionAction, PreventionWorkLog, RiskAssessment
|
|
from app_new.core.models.user import User
|
|
from app_new.prevention.routes import add_risk, add_time, index
|
|
|
|
|
|
def test_prevention_dashboard_tracks_time_and_duerp(app):
|
|
with app.app_context():
|
|
user = User(username=f"prev-{uuid4().hex}", full_name="Prévention", role="assistant_prevention", password_hash="x")
|
|
db.session.add(user); db.session.commit()
|
|
with app.test_request_context(method="POST", data={"work_date": date.today().isoformat(), "duration_minutes": "90", "activity": "Visite sécurité"}):
|
|
login_user(user); assert add_time.__wrapped__().status_code == 302
|
|
with app.test_request_context(method="POST", data={"work_unit": "Entretien", "hazard": "Chute", "severity": "4", "probability": "3"}):
|
|
login_user(user); assert add_risk.__wrapped__().status_code == 302
|
|
assert PreventionWorkLog.query.filter_by(user_id=user.id).one().duration_minutes == 90
|
|
assert RiskAssessment.query.filter_by(work_unit="Entretien").one().score == 12
|
|
with app.test_request_context():
|
|
login_user(user); html = index.__wrapped__()
|
|
assert "Objectif 10 %" in html and "Visite sécurité" in html
|
|
|
|
|
|
def test_prevention_action_can_reference_a_risk(app):
|
|
with app.app_context():
|
|
risk = RiskAssessment(work_unit="Cuisine", hazard="Brûlure", severity=3, probability=2)
|
|
db.session.add(risk); db.session.flush()
|
|
action = PreventionAction(title="Installer une protection", risk=risk, owner="Gestionnaire")
|
|
db.session.add(action); db.session.commit()
|
|
assert action.risk.score == 6
|