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

54 lines
2.5 KiB
C#

using Bunit;
using Duempelkas.App.Components.Accounts;
using Duempelkas.App.Services;
using Duempelkas.App.Services.Models;
using Duempelkas.Domain.Enums;
using Duempelkas.Infrastructure.Services;
using Xunit;
namespace Duempelkas.Tests;
public class HistoryPreferenceTests
{
[Fact]
public async Task PreferenceSurvivesRestart_AndPreservesOtherSettings()
{
var folder = Path.Combine(Path.GetTempPath(), "duempelkas-history-" + Guid.NewGuid().ToString("N"));
try
{
var settings = new SettingsService(folder);
Assert.False(await settings.GetShowDeletedEntriesAsync());
await settings.SetClubNameAsync("Testverein");
await settings.SetShowDeletedEntriesAsync(true);
var restarted = new SettingsService(folder);
Assert.True(await restarted.GetShowDeletedEntriesAsync());
Assert.Equal("Testverein", await restarted.GetClubNameAsync());
await restarted.SetSetupStepAsync(2);
Assert.True(await new SettingsService(folder).GetShowDeletedEntriesAsync());
await restarted.SetShowDeletedEntriesAsync(false);
Assert.False(await new SettingsService(folder).GetShowDeletedEntriesAsync());
}
finally { if (Directory.Exists(folder)) Directory.Delete(folder, true); }
}
[Fact]
public async Task HistoryStaysEnabledAcrossAccountsAndFilterReset_UntilSwitchedOff()
{
using var f = new LedgerUiFixture();
List<EntryDto> Rows(int account) => [new(account, account, "2026-001", EntryType.Income,
DateTime.Today, "Deleted test", 10m, true, false, null, null, null)];
var first = f.Context.Render<EntryTable>(p => p.Add(x => x.Entries, Rows(1)));
Assert.Empty(first.FindAll("tbody tr"));
await first.Find("#show-deleted").ChangeAsync(new() { Value = true });
Assert.True(await f.Service<ISettingsService>().GetShowDeletedEntriesAsync());
first.Find(".filter-reset").Click();
Assert.Single(first.FindAll("tbody tr"));
var second = f.Context.Render<EntryTable>(p => p.Add(x => x.Entries, Rows(2)));
second.WaitForAssertion(() => Assert.Single(second.FindAll("tbody tr")));
await second.Find("#show-deleted").ChangeAsync(new() { Value = false });
Assert.False(await f.Service<ISettingsService>().GetShowDeletedEntriesAsync());
var returning = f.Context.Render<EntryTable>(p => p.Add(x => x.Entries, Rows(1)));
returning.WaitForAssertion(() => Assert.Empty(returning.FindAll("tbody tr")));
}
}