47 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|