You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/src/Recyclarr.TrashLib.Tests/Pipelines/CustomFormat/Models/FieldsArrayJsonConverterTes...

102 lines
2.3 KiB

using Flurl.Http.Configuration;
using Recyclarr.TrashLib.Json;
using Recyclarr.TrashLib.Pipelines.CustomFormat.Models;
namespace Recyclarr.TrashLib.Tests.Pipelines.CustomFormat.Models;
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class FieldsArrayJsonConverterTest
{
[Test]
public void Read_multiple_as_array()
{
var serializer = new NewtonsoftJsonSerializer(ServiceJsonSerializerFactory.Settings);
const string json = @"
{
'fields': [
{
'order': 0,
'name': 'min',
'label': 'Minimum Size',
'unit': 'GB',
'helpText': 'Release must be greater than this size',
'value': 25,
'type': 'number',
'advanced': false
},
{
'order': 1,
'name': 'max',
'label': 'Maximum Size',
'unit': 'GB',
'helpText': 'Release must be less than or equal to this size',
'value': 40,
'type': 'number',
'advanced': false
}
]
}
";
var result = serializer.Deserialize<CustomFormatSpecificationData>(json);
result.Fields.Should().BeEquivalentTo(new[]
{
new CustomFormatFieldData
{
Value = 25
},
new CustomFormatFieldData
{
Value = 40
}
});
}
[Test]
public void Read_single_as_array()
{
var serializer = new NewtonsoftJsonSerializer(ServiceJsonSerializerFactory.Settings);
const string json = @"
{
'fields': {
'order': 0,
'name': 'min',
'label': 'Minimum Size',
'unit': 'GB',
'helpText': 'Release must be greater than this size',
'value': 25,
'type': 'number',
'advanced': false
}
}
";
var result = serializer.Deserialize<CustomFormatSpecificationData>(json);
result.Fields.Should().BeEquivalentTo(new[]
{
new CustomFormatFieldData
{
Value = 25
}
});
}
[Test]
public void Read_throws_on_unsupported_token_type()
{
var serializer = new NewtonsoftJsonSerializer(ServiceJsonSerializerFactory.Settings);
const string json = @"
{
'fields': 0
}
";
var act = () => serializer.Deserialize<CustomFormatSpecificationData>(json);
act.Should().Throw<InvalidOperationException>();
}
}