mirror of https://github.com/jellyfin/jellyfin.git
Improve branch coverage
This commit is contained in:
parent
92e5a5c6e8
commit
aff0aea60f
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Jellyfin.Data.Enums;
|
using Jellyfin.Data.Enums;
|
||||||
using MediaBrowser.Common.Json.Converters;
|
using MediaBrowser.Common.Json.Converters;
|
||||||
|
|
|
@ -25,7 +25,7 @@ namespace MediaBrowser.Common.Json.Converters
|
||||||
return (int?)converter.ConvertFromString(str);
|
return (int?)converter.ConvertFromString(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
return JsonSerializer.Deserialize<int?>(ref reader, options);
|
return JsonSerializer.Deserialize<int>(ref reader, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Common.Plugins;
|
||||||
|
using MediaBrowser.Model.Plugins;
|
||||||
|
using MediaBrowser.Model.Serialization;
|
||||||
|
|
||||||
|
namespace Jellyfin.Api.Tests
|
||||||
|
{
|
||||||
|
public class TestPluginWithoutPages : BasePlugin<BasePluginConfiguration>
|
||||||
|
{
|
||||||
|
public TestPluginWithoutPages(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
|
||||||
|
: base(applicationPaths, xmlSerializer)
|
||||||
|
{
|
||||||
|
Instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TestPluginWithoutPages? Instance { get; private set; }
|
||||||
|
|
||||||
|
public override Guid Id => new Guid("ae95cbe6-bd3d-4d73-8596-490db334611e");
|
||||||
|
|
||||||
|
public override string Name => nameof(TestPluginWithoutPages);
|
||||||
|
|
||||||
|
public override string Description => "Server test Plugin without web pages.";
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Text.Json;
|
using System;
|
||||||
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Jellyfin.Common.Tests.Models;
|
using Jellyfin.Common.Tests.Models;
|
||||||
using MediaBrowser.Model.Session;
|
using MediaBrowser.Model.Session;
|
||||||
|
@ -8,6 +9,27 @@ namespace Jellyfin.Common.Tests.Json
|
||||||
{
|
{
|
||||||
public static class JsonCommaDelimitedArrayTests
|
public static class JsonCommaDelimitedArrayTests
|
||||||
{
|
{
|
||||||
|
[Fact]
|
||||||
|
public static void Deserialize_String_Null_Success()
|
||||||
|
{
|
||||||
|
var options = new JsonSerializerOptions();
|
||||||
|
var value = JsonSerializer.Deserialize<GenericBodyArrayModel<string>>(@"{ ""Value"": null }", options);
|
||||||
|
Assert.Null(value?.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public static void Deserialize_Empty_Success()
|
||||||
|
{
|
||||||
|
var desiredValue = new GenericBodyArrayModel<string>
|
||||||
|
{
|
||||||
|
Value = Array.Empty<string>()
|
||||||
|
};
|
||||||
|
|
||||||
|
var options = new JsonSerializerOptions();
|
||||||
|
var value = JsonSerializer.Deserialize<GenericBodyArrayModel<string>>(@"{ ""Value"": """" }", options);
|
||||||
|
Assert.Equal(desiredValue.Value, value?.Value);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public static void Deserialize_String_Valid_Success()
|
public static void Deserialize_String_Valid_Success()
|
||||||
{
|
{
|
||||||
|
@ -48,6 +70,34 @@ namespace Jellyfin.Common.Tests.Json
|
||||||
Assert.Equal(desiredValue.Value, value?.Value);
|
Assert.Equal(desiredValue.Value, value?.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public static void Deserialize_GenericCommandType_EmptyEntry_Success()
|
||||||
|
{
|
||||||
|
var desiredValue = new GenericBodyArrayModel<GeneralCommandType>
|
||||||
|
{
|
||||||
|
Value = new[] { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
|
||||||
|
};
|
||||||
|
|
||||||
|
var options = new JsonSerializerOptions();
|
||||||
|
options.Converters.Add(new JsonStringEnumConverter());
|
||||||
|
var value = JsonSerializer.Deserialize<GenericBodyArrayModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp,,MoveDown"" }", options);
|
||||||
|
Assert.Equal(desiredValue.Value, value?.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public static void Deserialize_GenericCommandType_Invalid_Success()
|
||||||
|
{
|
||||||
|
var desiredValue = new GenericBodyArrayModel<GeneralCommandType>
|
||||||
|
{
|
||||||
|
Value = new[] { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
|
||||||
|
};
|
||||||
|
|
||||||
|
var options = new JsonSerializerOptions();
|
||||||
|
options.Converters.Add(new JsonStringEnumConverter());
|
||||||
|
var value = JsonSerializer.Deserialize<GenericBodyArrayModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp,TotallyNotAVallidCommand,MoveDown"" }", options);
|
||||||
|
Assert.Equal(desiredValue.Value, value?.Value);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public static void Deserialize_GenericCommandType_Space_Valid_Success()
|
public static void Deserialize_GenericCommandType_Space_Valid_Success()
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,6 +38,15 @@ namespace Jellyfin.Common.Tests.Json
|
||||||
Assert.Null(result);
|
Assert.Null(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Theory]
|
||||||
|
[InlineData("\"8\"", 8)]
|
||||||
|
[InlineData("8", 8)]
|
||||||
|
public void Deserialize_NullableInt_Success(string input, int? expected)
|
||||||
|
{
|
||||||
|
var result = JsonSerializer.Deserialize<int?>(input, _options);
|
||||||
|
Assert.Equal(result, expected);
|
||||||
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData("\"N/A\"")]
|
[InlineData("\"N/A\"")]
|
||||||
[InlineData("null")]
|
[InlineData("null")]
|
||||||
|
@ -48,21 +57,11 @@ namespace Jellyfin.Common.Tests.Json
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData("\"8\"", 8)]
|
[InlineData("\"Jellyfin\"", "Jellyfin")]
|
||||||
[InlineData("8", 8)]
|
public void Deserialize_Normal_String_Success(string input, string expected)
|
||||||
public void Deserialize_Int_Success(string input, int expected)
|
|
||||||
{
|
{
|
||||||
var result = JsonSerializer.Deserialize<int>(input, _options);
|
var result = JsonSerializer.Deserialize<string?>(input, _options);
|
||||||
Assert.Equal(result, expected);
|
Assert.Equal(expected, result);
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void Deserialize_Normal_String_Success()
|
|
||||||
{
|
|
||||||
const string Input = "\"Jellyfin\"";
|
|
||||||
const string Expected = "Jellyfin";
|
|
||||||
var result = JsonSerializer.Deserialize<string>(Input, _options);
|
|
||||||
Assert.Equal(Expected, result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
Loading…
Reference in New Issue