using NSubstitute; using Schaad.Accounting.Datasets; using Schaad.Accounting.Services; using Schaad.Finance.Api; using Shouldly; namespace Schaad.Accounting.Tests; public class FxConverterTestShould { private readonly IFxService fxService = Substitute.For(); private readonly SettingsDataset settings = new() { DataPath = "", FixerIoApiKey = "test-key" }; private FxConverter BuildConverter() => new(fxService, settings); [Fact] public void DelegateToFxServiceWithChfAsTargetAndConfiguredApiKeyWhenConverting() { fxService.ConvertCurrency(100m, "USD", "CHF", "test-key").Returns(90m); var result = BuildConverter().ConvertToChf(100m, "USD"); result.ShouldBe(90m); fxService.Received(1).ConvertCurrency(100m, "USD", "CHF", "test-key"); } [Fact] public void PassNegativeAmountsThroughWhenConverting() { fxService.ConvertCurrency(-50m, "EUR", "CHF", Arg.Any()).Returns(-48m); BuildConverter().ConvertToChf(-50m, "EUR").ShouldBe(-48m); } }