58 lines
1.6 KiB
C#
58 lines
1.6 KiB
C#
using AwesomeAssertions;
|
|
using GerstITS.Examples.Logic.Customers;
|
|
using GerstITS.Examples.Logic.Shared.Search.Sorting;
|
|
using GerstITS.Search;
|
|
using GerstITS.TestFramework;
|
|
using Xunit;
|
|
|
|
namespace GerstITS.Examples.Tests.Shared.Search.Sorting;
|
|
|
|
[TestCategory(TestCategories.Unit)]
|
|
public sealed class SortingProviderTest
|
|
{
|
|
#region Tests
|
|
|
|
[Fact]
|
|
public void If_customers_are_sorted_descending___The_order_is_reversed()
|
|
{
|
|
var query = CreateCustomers().AsQueryable();
|
|
var sorting = new CustomerSearchFilter { SortBy = nameof(Customer.LastName), SortDirection = SortingDirections.Descending };
|
|
|
|
var sorted = new SortingProvider().Sort(query, sorting);
|
|
|
|
sorted.First().LastName.Should().Be("Zimmermann");
|
|
}
|
|
|
|
[Fact]
|
|
public void If_the_sort_property_is_unknown___The_query_is_left_unchanged()
|
|
{
|
|
var query = CreateCustomers().AsQueryable();
|
|
var sorting = new CustomerSearchFilter { SortBy = "Unknown" };
|
|
|
|
var sorted = new SortingProvider().Sort(query, sorting);
|
|
|
|
sorted.Last().LastName.Should().Be("Zimmermann");
|
|
}
|
|
|
|
[Fact]
|
|
public void If_the_item_type_is_not_sortable___It_cannot_be_sorted()
|
|
{
|
|
new SortingProvider().CanSort(new[] { "a" }.AsQueryable()).Should().BeFalse();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Methods
|
|
|
|
private static IEnumerable<Customer> CreateCustomers()
|
|
{
|
|
return new[]
|
|
{
|
|
new Customer { FirstName = "Anna", LastName = "Albrecht" },
|
|
new Customer { FirstName = "Zoe", LastName = "Zimmermann" }
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
}
|