exchanger/tests/Exchanger.Tests/PaymentSettingsValidatorTests.cs

51 lines
1.7 KiB
C#

using Exchanger.Core.Configuration;
using NUnit.Framework;
namespace Exchanger.Tests;
[TestFixture]
public sealed class PaymentSettingsValidatorTests
{
[Test]
public void Validate_DefaultSettings_IsValid()
{
PaymentValidationResult result = PaymentSettingsValidator.Validate(TestSettings.Create());
Assert.That(result.IsValid, Is.True);
}
[Test]
public void Validate_BothPaymentMethodsDisabled_IsRejected()
{
AppSettings settings = TestSettings.Create();
settings.Payments.CashEnabled = false;
settings.Payments.CardEnabled = false;
PaymentValidationResult result = PaymentSettingsValidator.Validate(settings);
Assert.That(result.Issues, Has.Some.Property("Field").EqualTo(PaymentValidationField.PaymentMethods));
}
[TestCase(14, 45, 120, 10, PaymentValidationField.SessionIdleTimeout)]
[TestCase(45, 14, 120, 10, PaymentValidationField.CashPaymentTimeout)]
[TestCase(45, 45, 29, 10, PaymentValidationField.CashlessPaymentTimeout)]
[TestCase(45, 45, 120, 61, PaymentValidationField.SuccessTimeout)]
public void Validate_TimeoutOutsideSafeRange_IsRejected(
int idle,
int cashPayment,
int cashlessPayment,
int success,
PaymentValidationField expectedField)
{
AppSettings settings = TestSettings.Create();
settings.Timeouts.SessionIdleSeconds = idle;
settings.Timeouts.CashPaymentSeconds = cashPayment;
settings.Timeouts.CashlessPaymentSeconds = cashlessPayment;
settings.Timeouts.SuccessSeconds = success;
PaymentValidationResult result = PaymentSettingsValidator.Validate(settings);
Assert.That(result.Issues, Has.Some.Property("Field").EqualTo(expectedField));
}
}