Files
duempelkas/tests/Duempelkas.Tests/EntryPresentationTests.cs
T

34 lines
1.4 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_HaveVisibleTextAndBookingSpecificNames()
{
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.Contains("2026-001 Porto", table.Find("summary").GetAttribute("aria-label"));
var edit = table.FindAll("button").Single(b => b.TextContent.Contains("Bearbeiten"));
Assert.Contains("Porto", edit.GetAttribute("aria-label"));
edit.Click();
Assert.Equal(1, edited);
}
}