54 lines
2.6 KiB
C#
54 lines
2.6 KiB
C#
using Bunit;
|
|
using Duempelkas.App.Components.Dialogs;
|
|
using Duempelkas.App.Services;
|
|
using Duempelkas.App.Services.Models;
|
|
using Duempelkas.Domain.Enums;
|
|
using Duempelkas.Infrastructure.Services;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Xunit;
|
|
|
|
namespace Duempelkas.Tests;
|
|
|
|
public class BookingFormTests
|
|
{
|
|
[Fact]
|
|
public void Form_ExplainsMissingFields_AndDoesNotRoundInvalidInput()
|
|
{
|
|
using var context = new BunitContext();
|
|
context.Services.AddSingleton<ToastService>();
|
|
context.Services.AddSingleton<IEntryService>(new EntryService(null!));
|
|
var dialog = context.Render<AddEntryDialog>(p => p.Add(x => x.AccountName, "Barkasse"));
|
|
Assert.Contains("Barkasse", dialog.Find("h5").TextContent);
|
|
Assert.Contains("Bitte beschreiben", dialog.Markup);
|
|
Assert.True(dialog.Find("button.btn-success").HasAttribute("disabled"));
|
|
dialog.Find("#entry-title").Input("Porto");
|
|
dialog.Find("#entry-amount").Input("12,501");
|
|
Assert.Equal("", dialog.Find("#entry-amount").GetAttribute("value"));
|
|
Assert.True(dialog.Find("button.btn-success").HasAttribute("disabled"));
|
|
dialog.Find("#entry-amount").Input("-12,50");
|
|
Assert.True(dialog.Find("button.btn-success").HasAttribute("disabled"));
|
|
dialog.Find("#entry-amount").Input("12,50");
|
|
Assert.False(dialog.Find("button.btn-success").HasAttribute("disabled"));
|
|
dialog.Find("#entry-date").Input("");
|
|
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");
|
|
Assert.False(dialog.Find("button.btn-success").HasAttribute("disabled"));
|
|
}
|
|
|
|
[Fact]
|
|
public void Edit_ShowsFixedTypeAndCorrectionPath_AndRerenderKeepsInput()
|
|
{
|
|
using var context = new BunitContext();
|
|
context.Services.AddSingleton<ToastService>();
|
|
context.Services.AddSingleton<IEntryService>(new EntryService(null!));
|
|
var entry = new EntryDto(1, 1, "2026-001", EntryType.Expense, new(2026, 1, 1), "Porto", 4.20m, false, false, null, null, null);
|
|
var dialog = context.Render<AddEntryDialog>(p => p.Add(x => x.EditEntry, entry));
|
|
Assert.Contains("Ausgabe", dialog.Markup);
|
|
Assert.Contains("mit der richtigen Art neu erfassen", dialog.Markup);
|
|
dialog.Find("#entry-title").Input("Korrigierter Text");
|
|
dialog.Render(p => p.Add(x => x.EditEntry, entry));
|
|
Assert.Equal("Korrigierter Text", dialog.Find("#entry-title").GetAttribute("value"));
|
|
}
|
|
}
|