< Summary

Information
Class: Buergerportal.Gebuehren.Antrag
Assembly: Buergerportal.Gebuehren
File(s): /builds/konradschrader2001/buergerportal/Buergerportal/src/Buergerportal.Gebuehren/Antrag.cs
Line coverage
96%
Covered lines: 30
Uncovered lines: 1
Coverable lines: 31
Total lines: 83
Line coverage: 96.7%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Handlung()100%210%
get_Status()100%11100%
.ctor(...)100%11100%
Einreichen()100%11100%
PruefungBeginnen()100%11100%
Bewilligen()100%11100%
Ablehnen()100%11100%
get_IstAbgeschlossen()100%22100%
Erlaube(...)100%22100%

File(s)

/builds/konradschrader2001/buergerportal/Buergerportal/src/Buergerportal.Gebuehren/Antrag.cs

#LineLine coverage
 1namespace Buergerportal.Gebuehren;
 2
 3/// <summary>
 4/// Bearbeitungsstand eines Antrags im Buergerportal.
 5/// </summary>
 6public enum Antragsstatus
 7{
 8    Neu,
 9    Eingereicht,
 10    InPruefung,
 11    Bewilligt,
 12    Abgelehnt
 13}
 14
 15/// <summary>
 16/// Ein Buergerantrag mit einem kleinen Zustandsautomaten. Nicht jeder
 17/// Uebergang ist erlaubt; unzulaessige Uebergaenge werfen eine Ausnahme.
 18/// Dient als zweites, leicht komplexeres Testobjekt (Zustandslogik statt
 19/// reiner Rechnung).
 20/// </summary>
 21public class Antrag
 22{
 023    public Amtshandlung Handlung { get; }
 3424    public Antragsstatus Status { get; private set; }
 25
 626    public Antrag(Amtshandlung handlung)
 627    {
 628        Handlung = handlung;
 629        Status = Antragsstatus.Neu;
 630    }
 31
 32    /// <summary>
 33    /// Buerger reicht den Antrag ein. Nur aus dem Status "Neu" moeglich.
 34    /// </summary>
 35    public void Einreichen()
 436    {
 437        Erlaube(Antragsstatus.Neu);
 338        Status = Antragsstatus.Eingereicht;
 339    }
 40
 41    /// <summary>
 42    /// Sachbearbeitung beginnt die Pruefung. Nur aus "Eingereicht" moeglich.
 43    /// </summary>
 44    public void PruefungBeginnen()
 345    {
 346        Erlaube(Antragsstatus.Eingereicht);
 247        Status = Antragsstatus.InPruefung;
 248    }
 49
 50    /// <summary>
 51    /// Antrag wird bewilligt. Nur aus "InPruefung" moeglich.
 52    /// </summary>
 53    public void Bewilligen()
 254    {
 255        Erlaube(Antragsstatus.InPruefung);
 156        Status = Antragsstatus.Bewilligt;
 157    }
 58
 59    /// <summary>
 60    /// Antrag wird abgelehnt. Nur aus "InPruefung" moeglich.
 61    /// </summary>
 62    public void Ablehnen()
 163    {
 164        Erlaube(Antragsstatus.InPruefung);
 165        Status = Antragsstatus.Abgelehnt;
 166    }
 67
 68    /// <summary>
 69    /// Ein Antrag ist abgeschlossen, wenn er bewilligt oder abgelehnt wurde.
 70    /// </summary>
 71    public bool IstAbgeschlossen =>
 372        Status is Antragsstatus.Bewilligt or Antragsstatus.Abgelehnt;
 73
 74    private void Erlaube(Antragsstatus erwartet)
 1075    {
 1076        if (Status != erwartet)
 377        {
 378            throw new InvalidOperationException(
 379                $"Uebergang aus Status '{Status}' ist nicht zulaessig; " +
 380                $"erwartet wurde '{erwartet}'.");
 81        }
 782    }
 83}