diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c9624c1..0cfe6b5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,7 +60,7 @@ A PR template with a short checklist will guide you: ## Master data and PII -Dropdown contents (roles, call signs, streets, personnel) are treated as +Dropdown contents (roles, call signs, brigades, personnel) are treated as personally identifying data and must **never** be committed to this repository. `seed-source/` and `*.masterdata.json` are gitignored for exactly this reason; the only tracked master data is the anonymised diff --git a/README.md b/README.md index 9638ee1..65fd807 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ git tag v0.3.0 && git push origin v0.3.0 ## Master data -Dropdown contents (roles, radio call signs, streets, personnel, ...) are treated +Dropdown contents (roles, radio call signs, brigades, personnel, ...) are treated as PII and are **never compiled into the application**. A fresh install starts with **empty** master data; you populate it in the in-app **Stammdaten** editor by importing a JSON file, and can write your own data back out again. diff --git a/docs/master-data.example.json b/docs/master-data.example.json index b3fe475..632d7bb 100644 --- a/docs/master-data.example.json +++ b/docs/master-data.example.json @@ -1,13 +1,9 @@ { "roles": ["EL", "EAL", "ZF", "GF"], - "status": ["aufgenommen", "übermittelt", "abgearbeitet"], "unitStatus": ["Alarmiert", "Auf Anfahrt", "Bereitstellungsraum", "Im Einsatz"], - "equipment": ["Mobilteil 1", "Digitalkamera"], - "districts": ["Musterstadt", "Musterdorf"], "radioCallSigns": ["Florian Musterstadt 1", "Florian Musterstadt 11/1"], "brigades": ["FF Musterstadt", "FF Musterdorf"], "truppTypes": ["Angriffstrupp", "Wassertrupp", "Schlauchtrupp", "CSA-Trupp", "LPA-Trupp"], - "einsatzarten": ["B", "THL", "R", "ABC", "Sonstiges"], "checklistTemplateAufbau": [ { "text": "Aufstellort ELW frei?", "mandatory": true }, { "text": "Kennleuchte ein, Blaulicht aus?", "mandatory": false } @@ -15,10 +11,6 @@ "checklistTemplateAbbau": [ { "text": "Fahrzeug abgerüstet?", "mandatory": true } ], - "streets": [ - { "name": "Bahnhofstraße", "district": "Musterstadt" }, - { "name": "Hauptstraße", "district": "Musterdorf" } - ], "personnel": [ { "lastName": "Mustermann", "firstName": "Max", "role": "ZF", "callSign": "Florian Musterstadt 1", "phone": "0171 0000000" }, { "lastName": "Musterfrau", "firstName": "Erika", "role": "GF", "callSign": null, "phone": null } @@ -29,7 +21,6 @@ "agtMaxDurationMinutes": 30, "csaMaxDurationMinutes": 20, "lpaMaxDurationMinutes": 60, - "pressureControlIntervalMinutes": 5, "returnPressureBar": 50 } } diff --git a/src/LageBuch.App.Shared/Views/MasterDataEditorView.axaml b/src/LageBuch.App.Shared/Views/MasterDataEditorView.axaml index b07efcb..1d40dc3 100644 --- a/src/LageBuch.App.Shared/Views/MasterDataEditorView.axaml +++ b/src/LageBuch.App.Shared/Views/MasterDataEditorView.axaml @@ -92,12 +92,6 @@ Minimum="1" Maximum="180" Increment="1" FormatString="0" /> - - - - - /// The Stammdaten editor. Loads every editable category from the provider into its own section, -/// tracks a single dirty flag across them, and writes the whole set back on Save. Streets are read -/// but not editable, so they are carried through untouched. Import (offered only while the data is -/// empty) fills the editor from a JSON file for review; Export writes the current set back out. +/// tracks a single dirty flag across them, and writes the whole set back on Save. Import (offered +/// only while the data is empty) fills the editor from a JSON file for review; Export writes the +/// current set back out. /// public sealed partial class MasterDataEditorViewModel : ObservableObject { @@ -24,18 +24,9 @@ public sealed partial class MasterDataEditorViewModel : ObservableObject // Typed handles kept so BuildSet reads each section without fragile positional casts. private EditableListSection _roles = null!; - // Typed handles kept so BuildSet reads each section without fragile positional casts. - private EditableListSection _status = null!; - // Typed handles kept so BuildSet reads each section without fragile positional casts. private EditableListSection _unitStatus = null!; - // Typed handles kept so BuildSet reads each section without fragile positional casts. - private EditableListSection _equipment = null!; - - // Typed handles kept so BuildSet reads each section without fragile positional casts. - private EditableListSection _districts = null!; - // Typed handles kept so BuildSet reads each section without fragile positional casts. private EditableListSection _brigades = null!; @@ -45,9 +36,6 @@ public sealed partial class MasterDataEditorViewModel : ObservableObject // Typed handles kept so BuildSet reads each section without fragile positional casts. private EditableListSection _truppTypes = null!; - // Typed handles kept so BuildSet reads each section without fragile positional casts. - private EditableListSection _einsatzarten = null!; - private ChecklistTemplateSection _checklistAufbau = null!; private ChecklistTemplateSection _checklistAbbau = null!; private LinksSection _links = null!; @@ -110,21 +98,29 @@ private void PopulateSections(MasterDataSet set) var previousIndex = SelectedSection is null ? 0 : Sections.IndexOf(SelectedSection); Sections.Clear(); + + // Einstellungen is a meta section (numeric defaults), not a data category, so it stays + // pinned first; everything else sorts alphabetically below it. Sections.Add(_settings = new SettingsSection("Einstellungen", set.Settings, MarkDirty)); - Sections.Add(_roles = new EditableListSection("Rollen", set.Roles, MarkDirty)); - Sections.Add(_status = new EditableListSection("Status", set.Status, MarkDirty)); - Sections.Add(_unitStatus = new EditableListSection("Einheiten-Status", set.UnitStatus, MarkDirty)); - Sections.Add(_equipment = new EditableListSection("Ausrüstung", set.Equipment, MarkDirty)); - Sections.Add(_districts = new EditableListSection("Bezirke", set.Districts, MarkDirty)); - Sections.Add(_brigades = new EditableListSection("Wachen", set.Brigades, MarkDirty)); - Sections.Add(_callSigns = new EditableListSection("Funkrufnamen", set.RadioCallSigns, MarkDirty)); - Sections.Add(_truppTypes = new EditableListSection("Trupp-Typen", set.TruppTypes, MarkDirty)); - Sections.Add(_einsatzarten = new EditableListSection("Einsatzarten", set.Einsatzarten, MarkDirty)); - Sections.Add(_links = new LinksSection("Links", set.Links, MarkDirty)); - Sections.Add(_checklistAufbau = new ChecklistTemplateSection("Checkliste Aufbau", set.ChecklistTemplateAufbau, MarkDirty)); - Sections.Add(_checklistAbbau = new ChecklistTemplateSection("Checkliste Abbau", set.ChecklistTemplateAbbau, MarkDirty)); - Sections.Add(_personnel = new PersonnelSection("Personal", set.Personnel, MarkDirty)); - Sections.Add(_vehicles = new VehiclesSection("Fahrzeuge", set.Vehicles, set.Brigades, set.RadioCallSigns, OnVehiclesChanged)); + + EditorSection[] categories = + { + _roles = new EditableListSection("Rollen", set.Roles, MarkDirty), + _unitStatus = new EditableListSection("Einheiten-Status", set.UnitStatus, MarkDirty), + _brigades = new EditableListSection("Wachen", set.Brigades, MarkDirty), + _callSigns = new EditableListSection("Funkrufnamen", set.RadioCallSigns, MarkDirty), + _truppTypes = new EditableListSection("Trupp-Typen", set.TruppTypes, MarkDirty), + _links = new LinksSection("Links", set.Links, MarkDirty), + _checklistAufbau = new ChecklistTemplateSection("Checkliste Aufbau", set.ChecklistTemplateAufbau, MarkDirty), + _checklistAbbau = new ChecklistTemplateSection("Checkliste Abbau", set.ChecklistTemplateAbbau, MarkDirty), + _personnel = new PersonnelSection("Personal", set.Personnel, MarkDirty), + _vehicles = new VehiclesSection("Fahrzeuge", set.Vehicles, set.Brigades, set.RadioCallSigns, OnVehiclesChanged), + }; + + foreach (var section in categories.OrderBy(s => s.Title, StringComparer.OrdinalIgnoreCase)) + { + Sections.Add(section); + } SelectedSection = Sections[Math.Clamp(previousIndex < 0 ? 0 : previousIndex, 0, Sections.Count - 1)]; } @@ -152,22 +148,16 @@ private void RefreshVehicleConflicts() private MasterDataSet BuildSet() => _original with { Roles = _roles.ToValues(), - Status = _status.ToValues(), UnitStatus = _unitStatus.ToValues(), - Equipment = _equipment.ToValues(), - Districts = _districts.ToValues(), Brigades = _brigades.ToValues(), RadioCallSigns = _callSigns.ToValues(), TruppTypes = _truppTypes.ToValues(), - Einsatzarten = _einsatzarten.ToValues(), Links = _links.ToValues(), ChecklistTemplateAufbau = _checklistAufbau.ToValues(), ChecklistTemplateAbbau = _checklistAbbau.ToValues(), Personnel = _personnel.ToPeople(), Vehicles = _vehicles.ToValues(), Settings = _settings.ToSettings(), - - // Streets are not editable here; _original carries them through unchanged. }; [RelayCommand(CanExecute = nameof(CanSave))] diff --git a/src/LageBuch.AppLogic/ViewModels/SettingsSection.cs b/src/LageBuch.AppLogic/ViewModels/SettingsSection.cs index 58e0ea6..d3a3b74 100644 --- a/src/LageBuch.AppLogic/ViewModels/SettingsSection.cs +++ b/src/LageBuch.AppLogic/ViewModels/SettingsSection.cs @@ -5,9 +5,9 @@ namespace LageBuch.AppLogic.ViewModels; /// /// Editor for the operational defaults (): the ILS reminder interval, -/// the AGT/CSA Einsatzzeiten, the Druckkontrolle interval and the Rückzugsdruck. Unlike the list -/// sections these are scalar numbers, so the section exposes one bindable property each and reports -/// any change through the shared dirty callback. +/// the AGT/CSA Einsatzzeiten and the Rückzugsdruck. Unlike the list sections these are scalar +/// numbers, so the section exposes one bindable property each and reports any change through the +/// shared dirty callback. /// public sealed partial class SettingsSection : EditorSection { @@ -23,7 +23,6 @@ public SettingsSection(string title, IncidentSettings settings, Action onChanged _agtMaxDurationMinutes = settings.AgtMaxDurationMinutes; _csaMaxDurationMinutes = settings.CsaMaxDurationMinutes; _lpaMaxDurationMinutes = settings.LpaMaxDurationMinutes; - _pressureControlIntervalMinutes = settings.PressureControlIntervalMinutes; _returnPressureBar = settings.ReturnPressureBar; } @@ -42,9 +41,6 @@ public SettingsSection(string title, IncidentSettings settings, Action onChanged [ObservableProperty] private int _lpaMaxDurationMinutes; - [ObservableProperty] - private int _pressureControlIntervalMinutes; - [ObservableProperty] private int _returnPressureBar; @@ -58,8 +54,6 @@ public SettingsSection(string title, IncidentSettings settings, Action onChanged partial void OnLpaMaxDurationMinutesChanged(int value) => _onChanged(); - partial void OnPressureControlIntervalMinutesChanged(int value) => _onChanged(); - partial void OnReturnPressureBarChanged(int value) => _onChanged(); public IncidentSettings ToSettings() => new( @@ -68,6 +62,5 @@ public SettingsSection(string title, IncidentSettings settings, Action onChanged AgtMaxDurationMinutes, CsaMaxDurationMinutes, LpaMaxDurationMinutes, - PressureControlIntervalMinutes, ReturnPressureBar); } diff --git a/src/LageBuch.Persistence/MasterData/MasterDataSet.cs b/src/LageBuch.Persistence/MasterData/MasterDataSet.cs index 1b23daf..5b0ad3e 100644 --- a/src/LageBuch.Persistence/MasterData/MasterDataSet.cs +++ b/src/LageBuch.Persistence/MasterData/MasterDataSet.cs @@ -7,25 +7,15 @@ namespace LageBuch.Persistence.MasterData; public sealed record MasterDataSet( IReadOnlyList Roles, - IReadOnlyList Status, - IReadOnlyList Equipment, - IReadOnlyList Districts, IReadOnlyList RadioCallSigns, IReadOnlyList Brigades, - - // UnitStatus is the status of a single unit (Alarmiert, Auf Anfahrt, ...) and is deliberately - // separate from Status above, which is the incident-level vocabulary (aufgenommen, ...). IReadOnlyList UnitStatus, - IReadOnlyList Streets, IReadOnlyList Links, IReadOnlyList ChecklistTemplateAufbau, IReadOnlyList ChecklistTemplateAbbau, IReadOnlyList TruppTypes, IReadOnlyList Personnel, - // Einsatzart values (ABek Bayern) — the leading token of the complete Einsatznummer. - IReadOnlyList Einsatzarten, - // Vehicles per Wache with their seat count (#76). IReadOnlyList Vehicles, @@ -43,16 +33,11 @@ public sealed record MasterDataSet( Array.Empty(), Array.Empty(), Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), - Array.Empty(), Array.Empty(), Array.Empty(), Array.Empty(), Array.Empty(), Array.Empty(), - Array.Empty(), Array.Empty(), IncidentSettings.Defaults); @@ -63,16 +48,14 @@ public sealed record MasterDataSet( /// mark the set non-empty would suppress the Import bootstrap on an otherwise fresh install. /// public bool IsEmpty => - Roles.Count == 0 && Status.Count == 0 && Equipment.Count == 0 && Districts.Count == 0 + Roles.Count == 0 && RadioCallSigns.Count == 0 && Brigades.Count == 0 && UnitStatus.Count == 0 - && Streets.Count == 0 && Links.Count == 0 && ChecklistTemplateAufbau.Count == 0 && ChecklistTemplateAbbau.Count == 0 + && Links.Count == 0 && ChecklistTemplateAufbau.Count == 0 && ChecklistTemplateAbbau.Count == 0 && TruppTypes.Count == 0 - && Personnel.Count == 0 && Einsatzarten.Count == 0 + && Personnel.Count == 0 && Vehicles.Count == 0; } -public sealed record Street(string Name, string District); - /// A named link — Stammdaten entry so useful external resources can be opened from an Einsatz. [SuppressMessage("Design", "CA1054", Justification = "Link URLs are free-form display data in persisted master data; System.Uri would make non-parseable values (relay or relative links) fail to load.")] [SuppressMessage("Design", "CA1056", Justification = "Link URLs are free-form display data in persisted master data; System.Uri would make non-parseable values (relay or relative links) fail to load.")] @@ -107,9 +90,6 @@ public sealed record IncidentSettings( // Atemschutz Einsatzzeit for an LPA-Trupp (long-duration apparatus) — longer than an AGT. int LpaMaxDurationMinutes, - // Interval between Druckkontrollen (Atemschutzkontrolle). - int PressureControlIntervalMinutes, - // Rückzugsdruck: pressure at or below which a Trupp must turn back. int ReturnPressureBar) { @@ -123,7 +103,6 @@ public sealed record IncidentSettings( AgtMaxDurationMinutes: AtemschutzTrupp.DefaultMaxDurationMinutes, CsaMaxDurationMinutes: AtemschutzTrupp.DefaultChemicalMaxDurationMinutes, LpaMaxDurationMinutes: AtemschutzTrupp.DefaultLpaMaxDurationMinutes, - PressureControlIntervalMinutes: AtemschutzTrupp.DefaultPressureControlIntervalMinutes, ReturnPressureBar: AtemschutzTrupp.DefaultReturnPressureBar); } @@ -272,15 +251,6 @@ static IReadOnlyList Arr(JsonElement e, string prop) => ? a.EnumerateArray().Select(x => x.GetString()!).ToList() : Array.Empty(); - IReadOnlyList streets = - root.TryGetProperty("streets", out var st) && st.ValueKind == JsonValueKind.Array - ? st.EnumerateArray() - .Select(s => new Street( - s.GetProperty("name").GetString()!, - s.TryGetProperty("district", out var d) ? d.GetString() ?? string.Empty : string.Empty)) - .ToList() - : Array.Empty(); - IReadOnlyList links = root.TryGetProperty("links", out var lk) && lk.ValueKind == JsonValueKind.Array ? lk.EnumerateArray() @@ -302,19 +272,14 @@ static IReadOnlyList Arr(JsonElement e, string prop) => return new MasterDataSet( Arr(root, "roles"), - Arr(root, "status"), - Arr(root, "equipment"), - Arr(root, "districts"), Arr(root, "radioCallSigns"), Arr(root, "brigades"), Arr(root, "unitStatus"), - streets, links, checklistAufbau, checklistAbbau, Arr(root, "truppTypes"), ParsePersonnel(root), - Arr(root, "einsatzarten"), vehicles, ParseSettings(root)); } @@ -372,7 +337,6 @@ static int Int(JsonElement e, string prop, int fallback) => Int(s, "agtMaxDurationMinutes", d.AgtMaxDurationMinutes), Int(s, "csaMaxDurationMinutes", d.CsaMaxDurationMinutes), Int(s, "lpaMaxDurationMinutes", d.LpaMaxDurationMinutes), - Int(s, "pressureControlIntervalMinutes", d.PressureControlIntervalMinutes), Int(s, "returnPressureBar", d.ReturnPressureBar)); } @@ -406,17 +370,12 @@ public static string Serialize(MasterDataSet set) var model = new { roles = set.Roles, - status = set.Status, unitStatus = set.UnitStatus, - equipment = set.Equipment, - districts = set.Districts, radioCallSigns = set.RadioCallSigns, brigades = set.Brigades, truppTypes = set.TruppTypes, - einsatzarten = set.Einsatzarten, checklistTemplateAufbau = set.ChecklistTemplateAufbau.Select(i => new { text = i.Text, mandatory = i.IsMandatory }), checklistTemplateAbbau = set.ChecklistTemplateAbbau.Select(i => new { text = i.Text, mandatory = i.IsMandatory }), - streets = set.Streets.Select(s => new { name = s.Name, district = s.District }), links = set.Links.Select(l => new { name = l.Name, url = l.Url }), vehicles = set.Vehicles.Select(v => new { wache = v.Wache, callSign = v.CallSign, seats = v.Seats }), personnel = set.Personnel.Select(p => new @@ -434,7 +393,6 @@ public static string Serialize(MasterDataSet set) agtMaxDurationMinutes = set.Settings.AgtMaxDurationMinutes, csaMaxDurationMinutes = set.Settings.CsaMaxDurationMinutes, lpaMaxDurationMinutes = set.Settings.LpaMaxDurationMinutes, - pressureControlIntervalMinutes = set.Settings.PressureControlIntervalMinutes, returnPressureBar = set.Settings.ReturnPressureBar, }, }; diff --git a/src/LageBuch.Persistence/MasterData/MasterDataStore.cs b/src/LageBuch.Persistence/MasterData/MasterDataStore.cs index 684ad7b..56647ae 100644 --- a/src/LageBuch.Persistence/MasterData/MasterDataStore.cs +++ b/src/LageBuch.Persistence/MasterData/MasterDataStore.cs @@ -30,28 +30,10 @@ public static void Save(string path, MasterDataSet set) using var tx = cn.BeginTransaction(); ReplaceList(cn, tx, "md_roles", set.Roles); - ReplaceList(cn, tx, "md_status", set.Status); ReplaceList(cn, tx, "md_unit_status", set.UnitStatus); - ReplaceList(cn, tx, "md_equipment", set.Equipment); - ReplaceList(cn, tx, "md_districts", set.Districts); ReplaceList(cn, tx, "md_call_signs", set.RadioCallSigns); ReplaceList(cn, tx, "md_brigades", set.Brigades); ReplaceList(cn, tx, "md_trupp_types", set.TruppTypes); - ReplaceList(cn, tx, "md_einsatzarten", set.Einsatzarten); - - Run(cn, tx, "DELETE FROM md_streets;", _ => { }); - foreach (var s in set.Streets) - { - Run( - cn, - tx, - "INSERT INTO md_streets (name, district) VALUES ($n,$d);", - p => - { - p("$n", s.Name); - p("$d", s.District); - }); - } Run(cn, tx, "DELETE FROM md_links;", _ => { }); foreach (var l in set.Links) @@ -149,7 +131,6 @@ private static (string Key, int Value)[] SettingsRows(IncidentSettings s) => new ("agt_max_duration_minutes", s.AgtMaxDurationMinutes), ("csa_max_duration_minutes", s.CsaMaxDurationMinutes), ("lpa_max_duration_minutes", s.LpaMaxDurationMinutes), - ("pressure_control_interval_minutes", s.PressureControlIntervalMinutes), ("return_pressure_bar", s.ReturnPressureBar), }; @@ -163,13 +144,9 @@ private static void EnsureSchema(SqliteConnection cn) { const string schema = """ CREATE TABLE IF NOT EXISTS md_roles (value TEXT NOT NULL); - CREATE TABLE IF NOT EXISTS md_status (value TEXT NOT NULL); - CREATE TABLE IF NOT EXISTS md_equipment (value TEXT NOT NULL); - CREATE TABLE IF NOT EXISTS md_districts (value TEXT NOT NULL); CREATE TABLE IF NOT EXISTS md_call_signs (value TEXT NOT NULL); CREATE TABLE IF NOT EXISTS md_brigades (value TEXT NOT NULL); CREATE TABLE IF NOT EXISTS md_unit_status (value TEXT NOT NULL); - CREATE TABLE IF NOT EXISTS md_streets (name TEXT NOT NULL, district TEXT NOT NULL); CREATE TABLE IF NOT EXISTS md_links (name TEXT NOT NULL, url TEXT NOT NULL); CREATE TABLE IF NOT EXISTS md_vehicles (wache TEXT NOT NULL, call_sign TEXT NOT NULL, seats INTEGER NOT NULL DEFAULT 0); CREATE TABLE IF NOT EXISTS md_checklist_template ( @@ -179,7 +156,6 @@ CREATE TABLE IF NOT EXISTS md_checklist_template ( kind INTEGER NOT NULL DEFAULT 0 ); CREATE TABLE IF NOT EXISTS md_trupp_types (value TEXT NOT NULL); - CREATE TABLE IF NOT EXISTS md_einsatzarten (value TEXT NOT NULL); CREATE TABLE IF NOT EXISTS md_personnel ( last_name TEXT NOT NULL, first_name TEXT NOT NULL, @@ -202,19 +178,14 @@ private static MasterDataSet Read(SqliteConnection cn) var (checklistAufbau, checklistAbbau) = ReadChecklistTemplate(cn); return new( ReadColumn(cn, "SELECT value FROM md_roles;"), - ReadColumn(cn, "SELECT value FROM md_status;"), - ReadColumn(cn, "SELECT value FROM md_equipment;"), - ReadColumn(cn, "SELECT value FROM md_districts;"), ReadColumn(cn, "SELECT value FROM md_call_signs;"), ReadColumn(cn, "SELECT value FROM md_brigades;"), ReadColumn(cn, "SELECT value FROM md_unit_status;"), - ReadStreets(cn), ReadLinks(cn), checklistAufbau, checklistAbbau, ReadColumn(cn, "SELECT value FROM md_trupp_types;"), ReadPersonnel(cn), - ReadColumn(cn, "SELECT value FROM md_einsatzarten;"), ReadVehicles(cn), ReadSettings(cn)); } @@ -261,7 +232,6 @@ private static IncidentSettings ReadSettings(SqliteConnection cn) Get("agt_max_duration_minutes", d.AgtMaxDurationMinutes), Get("csa_max_duration_minutes", d.CsaMaxDurationMinutes), Get("lpa_max_duration_minutes", d.LpaMaxDurationMinutes), - Get("pressure_control_interval_minutes", d.PressureControlIntervalMinutes), Get("return_pressure_bar", d.ReturnPressureBar)); } @@ -291,20 +261,6 @@ private static List ReadColumn(SqliteConnection cn, string sql) return list; } - private static List ReadStreets(SqliteConnection cn) - { - using var cmd = cn.CreateCommand(); - cmd.CommandText = "SELECT name, district FROM md_streets;"; - using var r = cmd.ExecuteReader(); - var list = new List(); - while (r.Read()) - { - list.Add(new Street(r.GetString(0), r.GetString(1))); - } - - return list; - } - private static List ReadLinks(SqliteConnection cn) { using var cmd = cn.CreateCommand(); diff --git a/tests/LageBuch.Acceptance.Tests/MasterDataEditorRenderTests.cs b/tests/LageBuch.Acceptance.Tests/MasterDataEditorRenderTests.cs index 0e5fd22..469020c 100644 --- a/tests/LageBuch.Acceptance.Tests/MasterDataEditorRenderTests.cs +++ b/tests/LageBuch.Acceptance.Tests/MasterDataEditorRenderTests.cs @@ -17,14 +17,10 @@ private sealed class SampleProvider : IMasterDataProvider public MasterDataSet Get() => MasterDataSet.Empty with { Roles = new[] { "EL", "EAL", "ZF", "GF" }, - Status = new[] { "aufgenommen", "übermittelt", "abgearbeitet" }, UnitStatus = new[] { "Alarmiert", "Auf Anfahrt", "Im Einsatz" }, - Equipment = new[] { "Mobilteil 1", "Digitalkamera" }, - Districts = new[] { "Aich", "FFB", "Puch" }, Brigades = new[] { "FFB Wache 1", "Aich", "Puch" }, RadioCallSigns = new[] { "FFB 1/10/1", "Aich 42/1", "Land 1" }, TruppTypes = new[] { "Angriffstrupp", "Wassertrupp", "CSA-Trupp" }, - Einsatzarten = new[] { "B", "THL", "R" }, ChecklistTemplateAufbau = new[] { new ChecklistTemplateItem("Aufstellort ELW frei?", true), @@ -68,8 +64,8 @@ public void The_editor_renders_with_every_category() var list = view.GetControl("CategoryList"); - // 14 categories plus #76's Fahrzeuge. - Assert.Equal(15, list.ItemCount); + // 10 categories plus #76's Fahrzeuge. + Assert.Equal(11, list.ItemCount); Assert.True(view.GetControl