37 lines
1.6 KiB
C#
37 lines
1.6 KiB
C#
using Bunit;
|
|
using Duempelkas.App.Components.Accounts;
|
|
using Duempelkas.App.Services.Models;
|
|
using Duempelkas.Domain.Enums;
|
|
using Xunit;
|
|
|
|
namespace Duempelkas.Tests;
|
|
|
|
public class EntryPresentationTests
|
|
{
|
|
[Fact]
|
|
public void EmptyAccount_ShowsExplanationRatherThanParameterName()
|
|
{
|
|
using var f = new LedgerUiFixture();
|
|
f.Service<Microsoft.AspNetCore.Components.NavigationManager>().NavigateTo("/accounts/2");
|
|
var page = f.Context.Render<Duempelkas.App.Components.Routes>();
|
|
page.WaitForAssertion(() => Assert.Contains("Noch keine Buchungen vorhanden.", page.Markup));
|
|
Assert.DoesNotContain("emptyEntriesMessage", page.Markup);
|
|
}
|
|
[Fact]
|
|
public void Actions_AreDirectIconButtonsWithTitlesAndBookingSpecificNames()
|
|
{
|
|
using var context = new BunitContext();
|
|
var entry = new EntryDto(1, 1, "2026-001", EntryType.Expense, DateTime.Today, "Porto", 4.20m, false, false, null, null, null);
|
|
var edited = 0;
|
|
var table = context.Render<EntryTable>(p => p.Add(x => x.Entries, [entry]).Add(x => x.OnEditEntry, id => edited = id));
|
|
Assert.Empty(table.FindAll("summary"));
|
|
var edit = table.Find("button[title='Buchung bearbeiten']");
|
|
Assert.Contains("2026-001 Porto", edit.GetAttribute("aria-label"));
|
|
Assert.NotNull(edit.QuerySelector(".bi-pencil[aria-hidden=true]"));
|
|
Assert.NotNull(table.Find("button.btn-outline-danger .bi-trash"));
|
|
Assert.Contains("Porto", edit.GetAttribute("aria-label"));
|
|
edit.Click();
|
|
Assert.Equal(1, edited);
|
|
}
|
|
}
|