42 lines
2.1 KiB
C#
42 lines
2.1 KiB
C#
using Bunit;
|
|
using Duempelkas.App.Components.Dialogs;
|
|
using Duempelkas.App.Services;
|
|
using Duempelkas.Domain.Enums;
|
|
using Xunit;
|
|
|
|
namespace Duempelkas.Tests;
|
|
|
|
public class TransferDirectionTests
|
|
{
|
|
[Theory]
|
|
[InlineData(1)]
|
|
[InlineData(2)]
|
|
public async Task BothSides_ShowSameDirection(int accountId)
|
|
{
|
|
using var f = new LedgerUiFixture();
|
|
var entries = f.Service<IEntryService>();
|
|
await entries.CreateTransferAsync(1, 2, DateTime.Today, "Zur Bank", 20m);
|
|
var entry = Assert.Single(await entries.GetEntriesAsync(accountId, (int?)null));
|
|
var dialog = f.Context.Render<AddTransferDialog>(p => p.Add(x => x.SourceAccountId, accountId).Add(x => x.EditEntry, entry));
|
|
dialog.WaitForAssertion(() => Assert.Contains("Von: Barkasse → Nach: Girokonto", dialog.Find("#transfer-direction").TextContent));
|
|
Assert.Contains("Gesamtsumme unverändert", dialog.Markup);
|
|
Assert.Contains(accountId == 2 ? "Von Konto" : "Nach Konto", dialog.Find("label[for=transfer-account]").TextContent);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task IncomingEdit_MovesSource_AndRejectsSameAccountWithoutChanges()
|
|
{
|
|
using var f = new LedgerUiFixture();
|
|
var entries = f.Service<IEntryService>();
|
|
var third = await f.Service<IAccountService>().CreateAccountAsync("Sparkonto");
|
|
await entries.CreateTransferAsync(1, 2, DateTime.Today, "Zur Bank", 20m);
|
|
var incoming = Assert.Single(await entries.GetEntriesAsync(2, (int?)null));
|
|
await Assert.ThrowsAsync<InvalidOperationException>(() => entries.UpdateTransferAsync(incoming.Id, 2, DateTime.Today, "Unzulässig", 99m));
|
|
Assert.Equal(20m, Assert.Single(await entries.GetEntriesAsync(2, (int?)null)).Amount);
|
|
await entries.UpdateTransferAsync(incoming.Id, third.Id, DateTime.Today, "Andere Quelle", 25m);
|
|
Assert.Empty(await entries.GetEntriesAsync(1, (int?)null));
|
|
Assert.Equal(EntryType.Expense, Assert.Single(await entries.GetEntriesAsync(third.Id, (int?)null)).Type);
|
|
Assert.Equal(EntryType.Income, Assert.Single(await entries.GetEntriesAsync(2, (int?)null)).Type);
|
|
}
|
|
}
|