using Bunit; using Duempelkas.App.Components; using Duempelkas.App.Services; using Microsoft.AspNetCore.Components; using Xunit; namespace Duempelkas.Tests; public class GettingStartedTests { [Fact] public async Task Introduction_CanBeSkippedAndResumed_AndCreatesNoSampleBookings() { using var f = new LedgerUiFixture(false); var navigation = f.Service(); navigation.NavigateTo("/einstieg"); var page = f.Context.Render(); page.WaitForElement("#setup-club").Input("Mein Testverein"); page.Find(".setup-next").Click(); page.WaitForAssertion(() => Assert.Contains("Dein erstes Konto", page.Markup)); page.FindAll("button").Single(b => b.TextContent.Contains("später fortsetzen")).Click(); navigation.NavigateTo("/einstieg"); page.WaitForAssertion(() => Assert.Contains("Dein erstes Konto", page.Markup)); page.FindAll("button").Single(b => b.TextContent.Trim() == "Konto anlegen").Click(); page.Find("#account-name").Input("Barkasse"); page.Find("#account-initial").Input("25,00"); page.Find("dialog form").Submit(); page.WaitForAssertion(() => Assert.Contains("Die erste Buchung", page.Markup)); var account = Assert.Single(await f.Service().GetAllAccountsAsync()); Assert.Equal(25m, account.TotalBalance); Assert.Empty(await f.Service().GetEntriesAsync(account.Id, (int?)null)); Assert.Equal(2, await f.Service().GetSetupStepAsync()); navigation.NavigateTo("/hilfe"); page.WaitForAssertion(() => Assert.Contains("auch ohne Internet", page.Markup)); } }