Smart Filters & Dashboard Customization (#2282)

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
This commit is contained in:
Joe Milazzo 2023-09-12 11:24:47 -07:00 committed by GitHub
parent 3d501c9532
commit 84f85b4f24
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
92 changed files with 7149 additions and 555 deletions

View file

@ -0,0 +1,40 @@
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);
}
}