mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-05-31 04:04:19 -04:00
41 lines
1.4 KiB
C#
41 lines
1.4 KiB
C#
using System.Linq;
|
|
using API.DTOs.Filtering;
|
|
using API.DTOs.Filtering.v2;
|
|
using API.Entities.Enums;
|
|
using API.Helpers;
|
|
using Xunit;
|
|
|
|
namespace API.Tests.Helpers;
|
|
|
|
public class SmartFilterHelperTests
|
|
{
|
|
[Fact]
|
|
public void Test_Decode()
|
|
{
|
|
var encoded = """
|
|
stmts=comparison%3D5%26field%3D18%26value%3D6%2Ccomparison%3D0%26field%3D4%26value%3D0%2Ccomparison%3D7%26field%3D1%26value%3Da&sortOptions=sortField=1&isAscending=true&limitTo=0&combination=1
|
|
""";
|
|
|
|
var filter = SmartFilterHelper.Decode(encoded);
|
|
|
|
Assert.Equal(0, filter.LimitTo);
|
|
Assert.Equal(SortField.SortName, filter.SortOptions.SortField);
|
|
Assert.True(filter.SortOptions.IsAscending);
|
|
Assert.Null(filter.Name);
|
|
|
|
var list = filter.Statements.ToList();
|
|
AssertStatementSame(list[2], FilterField.SeriesName, FilterComparison.Matches, "a");
|
|
AssertStatementSame(list[1], FilterField.AgeRating, FilterComparison.Equal, (int) AgeRating.Unknown + "");
|
|
AssertStatementSame(list[0], FilterField.Genres, FilterComparison.Contains, "6");
|
|
|
|
}
|
|
|
|
private void AssertStatementSame(FilterStatementDto statement, FilterField field, FilterComparison combination, string value)
|
|
{
|
|
Assert.Equal(statement.Field, field);
|
|
Assert.Equal(statement.Comparison, combination);
|
|
Assert.Equal(statement.Value, value);
|
|
}
|
|
|
|
}
|