Files
Examples/GerstITS.Examples.Tests/Shared/Search/Sorting/SortingProviderTest.cs
T

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
}