57 lines
2.0 KiB
C#
57 lines
2.0 KiB
C#
using JSMR.Application.Circles.Contracts;
|
|
using JSMR.Application.Circles.Queries.Search;
|
|
using JSMR.Application.Common.Search;
|
|
using JSMR.Infrastructure.Data;
|
|
using JSMR.Infrastructure.Data.Repositories.Circles;
|
|
|
|
namespace JSMR.Tests.Integration;
|
|
|
|
public class CircleSearchProviderTests(MariaDbFixture fixture) : IClassFixture<MariaDbFixture>
|
|
{
|
|
[Fact]
|
|
public async Task Search_ByName_Filters_And_Sorts()
|
|
{
|
|
await fixture.ResetAsync();
|
|
await using AppDbContext context = fixture.CreateDbContext();
|
|
await Seed.SeedCirclesWithWorksAsync(context);
|
|
|
|
CircleSearchProvider provider = new(context);
|
|
|
|
var options = new SearchOptions<CircleSearchCriteria, CircleSortField>
|
|
{
|
|
PageNumber = 1,
|
|
PageSize = 50,
|
|
SortOptions = [new SortOption<CircleSortField>(CircleSortField.Name, SortDirection.Ascending)],
|
|
Criteria = new CircleSearchCriteria { Name = "Circle" }
|
|
};
|
|
|
|
var result = await provider.SearchAsync(options, CancellationToken.None);
|
|
|
|
Assert.True(result.TotalItems >= 2);
|
|
Assert.Equal("Circle A", result.Items[0].Name);
|
|
Assert.Equal("Circle B", result.Items[1].Name);
|
|
}
|
|
|
|
//[Fact]
|
|
//public async Task Search_Status_Favorited_Only()
|
|
//{
|
|
// await fixture.ResetAsync();
|
|
// await using var db = fixture.CreateDbContext();
|
|
// await Seed.SeedCirclesWithWorksAsync(db);
|
|
|
|
// var provider = new CircleSearchProvider(db);
|
|
|
|
// var options = new SearchOptions<CircleSearchCriteria, CircleSortField>
|
|
// {
|
|
// PageNumber = 1,
|
|
// PageSize = 50,
|
|
// SortOptions = Array.Empty<SortOption<CircleSortField>>(),
|
|
// Criteria = new CircleSearchCriteria { Status = Application.Circles.Queries.Search.CircleStatus.Favorited }
|
|
// };
|
|
|
|
// var result = await provider.SearchAsync(options, CancellationToken.None);
|
|
|
|
// Assert.All(result.Items, i => Assert.True(i.Favorite));
|
|
//}
|
|
}
|