fix(ui): refine amount entry, date warnings and booking actions

This commit is contained in:
2026-11-02 20:31:09 +01:00
parent 71eed68e21
commit aa392815e5
17 changed files with 140 additions and 39 deletions
@@ -11,6 +11,26 @@ namespace Duempelkas.Tests;
public class BookingFormTests
{
[Fact]
public async Task PendingDate_IsProtectedOnCancel_AndValidatedBeforeSubmit()
{
using var f = new LedgerUiFixture();
var dialog = f.Context.Render<AddEntryDialog>(p => p.Add(x => x.AccountId, 1).Add(x => x.ContextYear, DateTime.Today.Year));
dialog.Find("#entry-date").Input($"{DateTime.Today.Year + 1}-01-02");
Assert.Empty(dialog.FindAll(".booking-year-warning"));
var modal = dialog.FindComponent<ModalDialog>();
await modal.InvokeAsync(() => modal.Instance.RequestCloseAsync());
Assert.NotEmpty(dialog.FindAll("[role=alertdialog]"));
dialog.Find("[data-discard-continue]").Click();
dialog.Find("#entry-title").Input("Pending date");
dialog.Find("#entry-amount").Input("12,50");
// A keyboard submit can happen without the date field losing focus first.
dialog.Find("form").Submit();
Assert.NotEmpty(dialog.FindAll(".booking-year-warning"));
Assert.True(dialog.Find("button.btn-success").HasAttribute("disabled"));
Assert.Empty(await f.Service<IEntryService>().GetEntriesAsync(1, (int?)null));
}
[Fact]
public void Form_ExplainsMissingFields_AndDoesNotRoundInvalidInput()
{
@@ -31,9 +51,11 @@ public class BookingFormTests
dialog.Find("#entry-amount").Input("12,50");
Assert.False(dialog.Find("button.btn-success").HasAttribute("disabled"));
dialog.Find("#entry-date").Input("");
dialog.Find("#entry-date").Blur();
Assert.True(dialog.Find("button.btn-success").HasAttribute("disabled"));
Assert.Contains("Bitte ein gültiges Datum", dialog.Markup);
dialog.Find("#entry-date").Input("2026-01-02");
dialog.Find("#entry-date").Blur();
Assert.False(dialog.Find("button.btn-success").HasAttribute("disabled"));
}