"""Grundlegende Modelltests (M1). Umfangreichere Tests folgen in M5.""" from datetime import date from decimal import Decimal import pytest from abrechnung.models import ( Auftraggeber, Leistung, Leistungsart, Teilnehmer, Therapeut, ) @pytest.fixture def leistung(db): therapeut = Therapeut.objects.create(name="Anna Muster", kuerzel="AM") auftraggeber = Auftraggeber.objects.create( name="Jugendamt Musterstadt", strasse="Amtsweg 1", plz="12345", ort="Musterstadt", ) teilnehmer = Teilnehmer.objects.create( name="Max Klient", auftraggeber=auftraggeber, therapeut=therapeut, ) art = Leistungsart.objects.create( bezeichnung="Sitzung", standard_stundensatz=Decimal("80.00"), ) return Leistung.objects.create( therapeut=therapeut, teilnehmer=teilnehmer, leistungsart=art, datum=date(2026, 5, 4), stundenanzahl=Decimal("1.50"), stundensatz=Decimal("80.00"), ) def test_betrag_is_hours_times_rate(leistung): assert leistung.betrag == Decimal("120.00") def test_auftraggeber_derived_via_teilnehmer(leistung): assert leistung.auftraggeber == leistung.teilnehmer.auftraggeber assert leistung.auftraggeber.name == "Jugendamt Musterstadt" def test_leistung_starts_unbilled(leistung): assert leistung.abgerechnet_mit is None