from datetime import date, time

from app_new.contracts.models import ContractVisit


def test_visit_modes_do_not_invent_an_hour():
    visit = ContractVisit(scheduled_date=date(2026, 9, 12), passage_mode="date_only")
    assert visit.start_time is None
    assert visit.is_fixed_for_planning is False
    assert visit.display_mode == "Date connue, heure inconnue"


def test_appointment_is_fixed_only_when_times_are_present():
    visit = ContractVisit(
        scheduled_date=date(2026, 9, 12), passage_mode="appointment",
        start_time=time(9, 30), end_time=time(11, 0),
    )
    assert visit.is_fixed_for_planning is True


def test_open_window_is_not_a_fixed_planning_block():
    visit = ContractVisit(
        scheduled_date=date(2026, 9, 1), passage_mode="open_window",
        window_start=date(2026, 9, 1), window_end=date(2026, 9, 15),
    )
    assert visit.is_fixed_for_planning is False
    assert visit.display_mode == "Passage libre / sans rendez-vous"
