from __future__ import annotations from app.extensions import db from app.models import AttendanceEvent, AttendanceType, Person, Role from tests.conftest import create_account, login def test_operator_can_record_attendance(app, client): with app.app_context(): create_account(username="operator", role=Role.OPERATOR.value) person = Person(full_name="Ada Lovelace", employee_id="EMP-001") db.session.add(person) db.session.commit() person_id = person.id login(client, "operator") response = client.post( "/attendance/events", data={"person_id": person_id, "event_type": AttendanceType.CHECK_IN.value}, headers={"Accept": "application/json"}, ) assert response.status_code == 200 assert response.get_json()["event_type"] == "Check in" with app.app_context(): assert AttendanceEvent.query.count() == 1 def test_viewer_cannot_record_attendance(app, client): with app.app_context(): create_account(username="viewer", role=Role.VIEWER.value) person = Person(full_name="Grace Hopper", employee_id="EMP-002") db.session.add(person) db.session.commit() person_id = person.id login(client, "viewer") response = client.post( "/attendance/events", data={"person_id": person_id, "event_type": AttendanceType.CHECK_OUT.value}, headers={"Accept": "application/json"}, ) assert response.status_code == 403