Try your search with a different keyword or use * as a wildcard.
using FluentAssertions;
using Nop.Services.Orders;
using NUnit.Framework;
namespace Nop.Tests.Nop.Services.Tests.Orders;
[TestFixture]
public class OrderCustomValuesTests
{
[Test]
public void CanDeserializeEmptyString()
{
var deserialized = new CustomValues();
deserialized.FillByXml(string.Empty);
deserialized.Should().NotBeNull();
deserialized.Any().Should().Be(false);
}
[Test]
public void CanSerializeAndDeserializeEmptyCustomValues()
{
var customValues = new CustomValues();
var serializedXml = customValues.SerializeToXml();
var deserialized = new CustomValues();
deserialized.FillByXml(serializedXml);
deserialized.Should().NotBeNull();
deserialized.Any().Should().Be(false);
}
[Test]
public void CanSerializeAndDeserializeCustomValues()
{
var customValues = new CustomValues
{
new("key1", "value1", CustomValueDisplayLocation.Shipping),
new("key2", null, displayToCustomer:false),
new("key3", "3"),
new("", "")
};
var serializedXml = customValues.SerializeToXml();
var deserialized = new CustomValues();
deserialized.FillByXml(serializedXml);
deserialized.Should().NotBeNull();
deserialized.Count.Should().Be(4);
var customValue = deserialized["key1"];
customValue.Should().NotBeNullOrEmpty();
customValue.Should().Be("value1");
deserialized.TryGetValue("key1", out var customValueObj);
customValueObj.DisplayToCustomer.Should().Be(true);
customValueObj.DisplayLocation.Should().Be(CustomValueDisplayLocation.Shipping);
customValue = deserialized["key2"];
customValue.Should().NotBeNull();
customValue.Should().Be(string.Empty);
deserialized.TryGetValue("key2", out customValueObj);
customValueObj.DisplayToCustomer.Should().Be(false);
customValueObj.DisplayLocation.Should().Be(CustomValueDisplayLocation.Payment);
customValue = deserialized["key3"];
customValue.Should().NotBeNullOrEmpty();
customValue.Should().Be("3");
deserialized.TryGetValue("key3", out customValueObj);
customValueObj.DisplayToCustomer.Should().Be(true);
customValueObj.DisplayLocation.Should().Be(CustomValueDisplayLocation.Payment);
customValue = deserialized[""];
customValue.Should().NotBeNullOrEmpty();
customValue.Should().Be("");
serializedXml = "test_1 test 1 test_2 test 2 test_3 test 3 test_4 test 4 ";
deserialized.FillByXml(serializedXml);
deserialized.Count.Should().Be(4);
foreach (var orderCustomValue in deserialized)
orderCustomValue.Name.StartsWith("test_").Should().BeTrue();
var newXml = deserialized.SerializeToXml();
newXml.Should().NotBeEquivalentTo(serializedXml);
newXml.Should().BeEquivalentTo("test_1 test 1 true 2 0 test_2 test 2 true 2 0 test_3 test 3 true 2 0 test_4 test 4 true 2 0 ");
}
}