Apply review suggestions and add test

pull/11648/head
Shadowghost 2 weeks ago
parent e7fce6d99f
commit a8e34d5cf9

@ -1,19 +1,23 @@
using System;
using Emby.Naming.Common;
using System.Collections.Generic;
using System.Linq;
using MediaBrowser.Model.Entities;
namespace Emby.Naming.TV;
/// <summary>
/// Helper class for tv metadata parsing.
/// Helper class for TV metadata parsing.
/// </summary>
public static class TvParserHelpers
{
private static readonly List<string> _continuingState = ["Pilot", "Returning Series", "Returning"];
private static readonly List<string> _endedState = ["Cancelled"];
/// <summary>
/// Parses a information about series from path.
/// Tries to parse a string into <see cref="SeriesStatus"/>.
/// </summary>
/// <param name="status">The status string.</param>
/// <param name="enumValue">The enum value.</param>
/// <param name="enumValue">The <see cref="SeriesStatus"/>.</param>
/// <returns>Returns true if parsing was successful.</returns>
public static bool TryParseSeriesStatus(string status, out SeriesStatus? enumValue)
{
@ -23,18 +27,19 @@ public static class TvParserHelpers
return true;
}
switch (status)
if (_continuingState.Contains(status, StringComparer.OrdinalIgnoreCase))
{
case "Pilot":
case "Returning Series":
enumValue = SeriesStatus.Continuing;
return true;
case "Cancelled":
enumValue = SeriesStatus.Ended;
return true;
default:
enumValue = null;
return false;
enumValue = SeriesStatus.Continuing;
return true;
}
if (_endedState.Contains(status, StringComparer.OrdinalIgnoreCase))
{
enumValue = SeriesStatus.Ended;
return true;
}
enumValue = null;
return false;
}
}

@ -0,0 +1,28 @@
using Emby.Naming.TV;
using MediaBrowser.Model.Entities;
using Xunit;
namespace Jellyfin.Naming.Tests.TV
{
public class TvParserHelpersTest
{
[Theory]
[InlineData("Ended", SeriesStatus.Ended, true)]
[InlineData("Cancelled", SeriesStatus.Ended, true)]
[InlineData("Continuing", SeriesStatus.Continuing, true)]
[InlineData("Returning", SeriesStatus.Continuing, true)]
[InlineData("Returning Series", SeriesStatus.Continuing, true)]
[InlineData("Unreleased", SeriesStatus.Unreleased, true)]
[InlineData("XXX", null, false)]
public void SeriesStatusParserTest(string statusString, SeriesStatus? status, bool success)
{
var successful = TvParserHelpers.TryParseSeriesStatus(statusString, out var parsered);
Assert.Equal(success, successful);
if (success)
{
Assert.Equal(status, parsered);
}
}
}
}
Loading…
Cancel
Save