Crée une édition + le premier compte coordination (mot de passe) + 3 créneaux types par défaut, et affiche l'UUID à mettre dans VITE_EDITION_ID. Documenté dans README (« Vraie instance, sans jeu de démo »). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017uUsRg7XzopkCPWimwg9ZM
67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
import argparse
|
|
import datetime as dt
|
|
|
|
import pytest
|
|
from sqlmodel import select
|
|
|
|
from app.bootstrap import run
|
|
from app.models import Account, DayPart, Edition, Role
|
|
|
|
|
|
def _args(**overrides) -> argparse.Namespace:
|
|
base = {
|
|
"name": "Festival 2027",
|
|
"start": "2027-07-01",
|
|
"end": "2027-07-04",
|
|
"email": "coord@monfestival.fr",
|
|
"password": "un-mot-de-passe-solide",
|
|
"year": None,
|
|
"no_day_parts": False,
|
|
"retention_days": None,
|
|
}
|
|
base.update(overrides)
|
|
return argparse.Namespace(**base)
|
|
|
|
|
|
def test_creates_edition_coordinator_and_default_day_parts(session):
|
|
edition = run(_args(), session)
|
|
|
|
reloaded = session.get(Edition, edition.id)
|
|
assert reloaded.name == "Festival 2027"
|
|
assert reloaded.year == 2027
|
|
assert reloaded.start_date == dt.date(2027, 7, 1)
|
|
|
|
account = session.exec(
|
|
select(Account).where(Account.edition_id == edition.id)
|
|
).one()
|
|
assert account.role is Role.COORDINATOR
|
|
assert account.auth_method == "password"
|
|
|
|
codes = [
|
|
d.code
|
|
for d in session.exec(
|
|
select(DayPart).where(DayPart.edition_id == edition.id)
|
|
)
|
|
]
|
|
assert set(codes) == {"MATIN", "APRES_MIDI", "SOIREE"}
|
|
|
|
|
|
def test_no_day_parts_flag(session):
|
|
edition = run(_args(no_day_parts=True), session)
|
|
assert (
|
|
session.exec(
|
|
select(DayPart).where(DayPart.edition_id == edition.id)
|
|
).all()
|
|
== []
|
|
)
|
|
|
|
|
|
def test_rejects_short_password(session):
|
|
with pytest.raises(SystemExit):
|
|
run(_args(password="court"), session)
|
|
|
|
|
|
def test_rejects_end_before_start(session):
|
|
with pytest.raises(SystemExit):
|
|
run(_args(start="2027-07-04", end="2027-07-01"), session)
|