Files
jsmr/JSMR.Tests/Integration/CircleSearchProviderTests.cs

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));
//}
}