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

47 lines
2.2 KiB
C#

using Bunit;
using Duempelkas.App.Components.Accounts;
using Duempelkas.App.Services;
using Duempelkas.App.Services.Models;
using Duempelkas.Domain.Enums;
using Xunit;
namespace Duempelkas.Tests;
public class EntrySearchTests
{
[Fact]
public void Search_FindsKnownBookingInLargeList_AndResetsWithoutChangingAmounts()
{
using var fixture = new LedgerUiFixture();
var context = fixture.Context;
var entries = Enumerable.Range(1, 400).Select(i => new EntryDto(i, 1, $"2026-{i:D3}", EntryType.Income,
new(2026, 1, 1), i == 321 ? "Älteres Jubiläum" : $"Beitrag {i}", i == 321 ? 12.50m : i, false, false, null, null, null)).ToList();
var original = entries.Sum(e => e.Amount);
var table = context.Render<EntryTable>(p => p.Add(x => x.Entries, entries));
table.Find("#entry-search").Input("Älteres 12,50");
Assert.Single(table.FindAll("tbody tr"));
Assert.Contains("12,50", table.Find(".search-summary").TextContent);
Assert.Contains("unverändert", table.Find(".search-summary").TextContent);
table.Find("#entry-search").Input("nicht vorhanden");
Assert.Empty(table.FindAll("tbody tr"));
Assert.Contains("Keine Treffer", table.Markup);
table.Find(".filter-reset").Click();
Assert.Equal(400, table.FindAll("tbody tr").Count);
Assert.Equal(original, entries.Sum(e => e.Amount));
table.Find("#entry-search").Input("2026-321");
Assert.Single(table.FindAll("tbody tr"));
}
[Fact]
public void Sort_UsesSignedAmounts_AndDeletedHistoryDoesNotAffectResultSum()
{
var entries = new List<EntryDto> {
new(1,1,"2026-001",EntryType.Expense,DateTime.Today,"Porto",20m,false,false,null,null,null),
new(2,1,"2026-002",EntryType.Income,DateTime.Today,"Beitrag",10m,false,false,null,null,null),
new(3,1,"2026-003",EntryType.Income,DateTime.Today,"Gelöscht",99m,true,false,null,null,null) };
Assert.Equal(new[] { 2, 1 }, EntryListQuery.Apply(entries, "", false, "amount-desc").Select(e => e.Id));
Assert.Single(EntryListQuery.Apply(entries, "-20,00", false, "date-asc"));
Assert.Equal(3, EntryListQuery.Apply(entries, "", true, "date-asc").Count);
}
}