Webiant Logo Webiant Logo
  1. No results found.

    Try your search with a different keyword or use * as a wildcard.

PaymentServiceTests.cs

using FluentAssertions;
using Nop.Core.Domain.Orders;
using Nop.Services.Payments;
using NUnit.Framework;

namespace Nop.Tests.Nop.Services.Tests.Payments;

[TestFixture]
public class PaymentServiceTests : ServiceTest
{
    private IPaymentPluginManager _paymentPluginManager;
    private IPaymentService _paymentService;

    [OneTimeSetUp]
    public void SetUp()
    {
        _paymentService = GetService();
        _paymentPluginManager = GetService();
    }

    [Test]
    public async Task CanLoadPaymentMethods()
    {
        var paymentMethods = await _paymentPluginManager.LoadAllPluginsAsync();
        paymentMethods.Should().NotBeNull();
    }

    [Test]
    public async Task CanLoadPaymentMethodBySystemKeyword()
    {
        var paymentMethod = await _paymentPluginManager.LoadPluginBySystemNameAsync("Payments.TestMethod");
        paymentMethod.Should().NotBeNull();
    }

    [Test]
    public async Task CanLoadActivePaymentMethods()
    {
        var paymentMethods = await _paymentPluginManager.LoadActivePluginsAsync(["Payments.TestMethod"]);
        paymentMethods.Should().NotBeNull();
        paymentMethods.Any().Should().BeTrue();
    }

    [Test]
    public void CanGetMaskedCreditCardNumber()
    {
        _paymentService.GetMaskedCreditCardNumber(string.Empty).Should().Be(string.Empty);
        _paymentService.GetMaskedCreditCardNumber("123").Should().Be("123");
        _paymentService.GetMaskedCreditCardNumber("1234567890123456").Should().Be("************3456");
    }

    [Test]
    public void CanDeserializeEmptyString()
    {
        var deserialized = _paymentService.DeserializeCustomValues(new Order { CustomValuesXml = string.Empty });

        deserialized.Should().NotBeNull();
        deserialized.Count.Should().Be(0);
    }

    [Test]
    public void CanDeserializeNullString()
    {
        var deserialized = _paymentService.DeserializeCustomValues(new Order { CustomValuesXml = null });

        deserialized.Should().NotBeNull();
        deserialized.Count.Should().Be(0);
    }

    [Test]
    public void CanSerializeAndDeserializeEmptyCustomValues()
    {
        var processPaymentRequest = new ProcessPaymentRequest();
        var serializedXml = _paymentService.SerializeCustomValues(processPaymentRequest);
        var deserialized = _paymentService.DeserializeCustomValues(new Order { CustomValuesXml = serializedXml });

        deserialized.Should().NotBeNull();
        deserialized.Count.Should().Be(0);
    }

    [Test]
    public void CanSerializeAndDeserializeCustomValues()
    {
        var processPaymentRequest = new ProcessPaymentRequest();
        processPaymentRequest.CustomValues.Add("key1", "value1");
        processPaymentRequest.CustomValues.Add("key2", null);
        processPaymentRequest.CustomValues.Add("key3", 3);
        processPaymentRequest.CustomValues.Add("", "");
        var serializedXml = _paymentService.SerializeCustomValues(processPaymentRequest);
        var deserialized = _paymentService.DeserializeCustomValues(new Order { CustomValuesXml = serializedXml });

        deserialized.Should().NotBeNull();
        deserialized.Count.Should().Be(4);

        deserialized.ContainsKey("key1").Should().BeTrue();
        deserialized["key1"].Should().Be("value1");

        deserialized.ContainsKey("key2").Should().BeTrue();
        //deserialized["key2"].Should().Be(null);
        deserialized["key2"].Should().Be(string.Empty);

        deserialized.ContainsKey("key3").Should().BeTrue();
        deserialized["key3"].Should().Be("3");

        deserialized.ContainsKey("").Should().BeTrue();
        deserialized[""].Should().Be("");
    }
}