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 { [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 { PageNumber = 1, PageSize = 50, SortOptions = [new SortOption(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 // { // PageNumber = 1, // PageSize = 50, // SortOptions = Array.Empty>(), // 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)); //} }