Stufe 4c (#764): Bezeichner auf Englisch - Typen, Methoden, Felder, Parameter, Locals, Testnamen
Mit Roslyn umbenannt (Verweise folgen, Zeichenketten bleiben unberuehrt). Nicht umbenannt, weil gespeichert oder ueber die API gebunden (Stufe 4e): Properties, Record-Parameter, Enum-Member sowie die Parameter der Endpunkt-Handler (Routen-/Query-Bindung ueber den Namen). Die JSON-Felder anonymer Objekte bleiben ausdruecklich benannt (JsonFilter: pfad). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
837a634a22
commit
77062facc9
@@ -56,7 +56,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Eine_Aufgabe_wird_angelegt_und_wiedergefunden()
|
||||
public async Task A_task_is_created_and_found_again()
|
||||
{
|
||||
await Seed("t-1", title: "Recherche");
|
||||
|
||||
@@ -68,7 +68,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Der_Import_ist_idempotent_und_erzeugt_keine_Dublette()
|
||||
public async Task The_import_is_idempotent_and_creates_no_duplicate()
|
||||
{
|
||||
await Seed("t-1", title: "Erste Fassung");
|
||||
await Seed("t-1", title: "Zweite Fassung");
|
||||
@@ -78,7 +78,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Ein_Re_Import_laesst_den_Ausfuehrungszustand_unangetastet()
|
||||
public async Task A_re_import_leaves_the_execution_state_untouched()
|
||||
{
|
||||
// The crux of the split of truth: the file is the truth about the
|
||||
// definition, the DB about the execution state. A renewed import must not reset a
|
||||
@@ -97,7 +97,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Die_Liste_filtert_nach_Status_und_blendet_Archiviertes_aus()
|
||||
public async Task The_list_filters_by_status_and_hides_archived()
|
||||
{
|
||||
await Seed("t-1", TaskItemStatus.Todo);
|
||||
await Seed("t-2", TaskItemStatus.Done);
|
||||
@@ -109,7 +109,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Die_Liste_ordnet_nach_Prioritaet()
|
||||
public async Task The_list_sorts_by_priority()
|
||||
{
|
||||
await Seed("t-low", priority: 1, title: "nebensächlich");
|
||||
await Seed("t-high", priority: 5, title: "dringend");
|
||||
@@ -122,7 +122,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Die_Liste_filtert_nach_Assignee_und_Freitext()
|
||||
public async Task The_list_filters_by_assignee_and_free_text()
|
||||
{
|
||||
await Seed("t-1", assignee: "@crawler", title: "NVDA Zahlen");
|
||||
await Seed("t-2", assignee: "@analyst", title: "TSLA Bericht");
|
||||
@@ -136,7 +136,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Ein_Termin_laesst_sich_genau_einmal_beanspruchen()
|
||||
public async Task An_occurrence_can_be_claimed_exactly_once()
|
||||
{
|
||||
await Seed("t-1");
|
||||
|
||||
@@ -146,7 +146,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Gleichzeitige_Claims_auf_denselben_Termin_ergeben_genau_einen_Gewinner()
|
||||
public async Task Concurrent_claims_on_the_same_occurrence_give_exactly_one_winner()
|
||||
{
|
||||
// The core invariant. Repeated several times, because a race occurs sporadically.
|
||||
for (var round = 0; round < 25; round++)
|
||||
@@ -164,7 +164,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Ein_zweiter_Tick_auf_denselben_Termin_loest_keinen_zweiten_Lauf_aus()
|
||||
public async Task A_second_tick_on_the_same_occurrence_triggers_no_second_run()
|
||||
{
|
||||
await Seed("t-1");
|
||||
|
||||
@@ -178,7 +178,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Ein_gescheiterter_Lauf_wird_nicht_automatisch_wiederholt()
|
||||
public async Task A_failed_run_is_not_retried_automatically()
|
||||
{
|
||||
// No retry storm: the marker is already set at claim time, not only on success.
|
||||
await Seed("t-1");
|
||||
@@ -192,7 +192,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Der_naechste_planmaessige_Termin_laesst_sich_wieder_beanspruchen()
|
||||
public async Task The_next_scheduled_occurrence_can_be_claimed_again()
|
||||
{
|
||||
await Seed("t-1");
|
||||
(await _repo.TryClaimAsync("t-1", Occ(T0), "tok", Now, NoStaleClaims, default)).ShouldBeTrue();
|
||||
@@ -209,7 +209,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Eine_blockierte_Aufgabe_laesst_sich_nicht_beanspruchen()
|
||||
public async Task A_blocked_task_cannot_be_claimed()
|
||||
{
|
||||
await Seed("t-1", TaskItemStatus.Blocked, blockedBy: ["t-0"]);
|
||||
|
||||
@@ -218,7 +218,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Wartende_Aufgaben_lassen_sich_ueber_ihren_Blocker_finden()
|
||||
public async Task Waiting_tasks_can_be_found_via_their_blocker()
|
||||
{
|
||||
await Seed("t-a", blockedBy: ["t-blocker"]);
|
||||
await Seed("t-b", blockedBy: ["t-blocker", "t-anderer"]);
|
||||
@@ -235,7 +235,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Ein_Lauf_ohne_gueltigen_Claim_kann_nichts_ueberschreiben()
|
||||
public async Task A_run_without_a_valid_claim_cannot_overwrite_anything()
|
||||
{
|
||||
await Seed("t-1");
|
||||
(await _repo.TryClaimAsync("t-1", Occ(T0), "echt", Now, NoStaleClaims, default)).ShouldBeTrue();
|
||||
@@ -249,7 +249,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Verwaiste_Claims_werden_beim_Start_zurueckgesetzt()
|
||||
public async Task Orphaned_claims_are_reset_on_start()
|
||||
{
|
||||
await Seed("t-stuck");
|
||||
// Claim with a point in time that lies far back already (crashed run).
|
||||
@@ -266,7 +266,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Ein_frischer_Claim_wird_bei_der_Reconciliation_nicht_angetastet()
|
||||
public async Task A_fresh_claim_is_not_touched_by_reconciliation()
|
||||
{
|
||||
await Seed("t-live");
|
||||
(await _repo.TryClaimAsync("t-live", Occ(T0), "tok", Now, NoStaleClaims, default)).ShouldBeTrue();
|
||||
@@ -278,7 +278,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Der_Status_laesst_sich_direkt_setzen()
|
||||
public async Task The_status_can_be_set_directly()
|
||||
{
|
||||
await Seed("t-1");
|
||||
(await _repo.SetStatusAsync("t-1", TaskItemStatus.Canceled, Now, default)).ShouldBeTrue();
|
||||
@@ -290,7 +290,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Viele_Aufgaben_lassen_sich_gleichzeitig_importieren()
|
||||
public async Task Many_tasks_can_be_imported_concurrently()
|
||||
{
|
||||
var imports = Enumerable.Range(0, 60).Select(i => Seed($"t-{i}"));
|
||||
await Task.WhenAll(imports);
|
||||
@@ -299,7 +299,7 @@ public sealed class TaskRepositoryTests : IDisposable
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Aufgaben_ueberdauern_das_Schliessen_der_Datenbank()
|
||||
public async Task Tasks_outlast_closing_the_database()
|
||||
{
|
||||
await Seed("t-1", title: "muss einen Neustart überleben");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user