Browse Source

Make page slug filtering case-insensitive

Updated both EF Core and MongoDB page repositories to perform case-insensitive filtering on the Slug property. Also set the default thread culture to InvariantCulture in tests to avoid culture-specific issues, and added PageStatus to seeded test data for consistency.
pull/24053/head
Mansur Besleney 11 months ago
parent
commit
5067a54e3e
  1. 4
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Pages/EfCorePageRepository.cs
  2. 4
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Pages/MongoPageRepository.cs
  3. 2
      modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs
  4. 7
      modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestBaseModule.cs
  5. 3
      modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs

4
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Pages/EfCorePageRepository.cs

@ -26,7 +26,7 @@ public class EfCorePageRepository : EfCoreRepository<ICmsKitDbContext, Page, Gui
return await (await GetDbSetAsync()).WhereIf(
!filter.IsNullOrWhiteSpace(),
x =>
x.Title.ToLower().Contains(filter.ToLower()) || x.Slug.Contains(filter)
x.Title.ToLower().Contains(filter.ToLower()) || x.Slug.ToLower().Contains(filter.ToLower())
).WhereIf(status.HasValue, x => x.Status == status)
.CountAsync(GetCancellationToken(cancellationToken));
}
@ -42,7 +42,7 @@ public class EfCorePageRepository : EfCoreRepository<ICmsKitDbContext, Page, Gui
return await (await GetDbSetAsync()).WhereIf(
!filter.IsNullOrWhiteSpace(),
x =>
x.Title.ToLower().Contains(filter.ToLower()) || x.Slug.Contains(filter))
x.Title.ToLower().Contains(filter.ToLower()) || x.Slug.ToLower().Contains(filter.ToLower()))
.WhereIf(status.HasValue, x => x.Status == status)
.OrderBy(sorting.IsNullOrEmpty() ? nameof(Page.Title) : sorting)
.PageBy(skipCount, maxResultCount)

4
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Pages/MongoPageRepository.cs

@ -31,7 +31,7 @@ public class MongoPageRepository : MongoDbRepository<ICmsKitMongoDbContext, Page
.WhereIf(
!filter.IsNullOrWhiteSpace(),
u =>
u.Title.ToLower().Contains(filter.ToLower()) || u.Slug.Contains(filter)
u.Title.ToLower().Contains(filter.ToLower()) || u.Slug.ToLower().Contains(filter.ToLower())
).WhereIf(status.HasValue, u => u.Status == status)
.CountAsync(cancellation);
}
@ -49,7 +49,7 @@ public class MongoPageRepository : MongoDbRepository<ICmsKitMongoDbContext, Page
return await (await GetQueryableAsync(cancellation))
.WhereIf(
!filter.IsNullOrWhiteSpace(),
u => u.Title.ToLower().Contains(filter) || u.Slug.Contains(filter))
u => u.Title.ToLower().Contains(filter.ToLower()) || u.Slug.ToLower().Contains(filter.ToLower()))
.WhereIf(status.HasValue, u => u.Status == status)
.OrderBy(sorting.IsNullOrEmpty() ? nameof(Page.Title) : sorting)
.PageBy(skipCount, maxResultCount)

2
modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs

@ -358,7 +358,7 @@ public class CmsKitDataSeedContributor : IDataSeedContributor, ITransientDepende
private async Task SeedPagesAsync()
{
var page1 = new Page(_cmsKitTestData.Page_1_Id, _cmsKitTestData.Page_1_Title, _cmsKitTestData.Page_1_Slug, _cmsKitTestData.Content_1);
var page1 = new Page(_cmsKitTestData.Page_1_Id, _cmsKitTestData.Page_1_Title, _cmsKitTestData.Page_1_Slug, _cmsKitTestData.Content_1, status:_cmsKitTestData.Page_1_Status);
await _pageRepository.InsertAsync(page1);
var page2 = new Page(_cmsKitTestData.Page_2_Id, _cmsKitTestData.Page_2_Title, _cmsKitTestData.Page_2_Slug, _cmsKitTestData.Content_2);

7
modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestBaseModule.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using System.Globalization;
using Microsoft.Extensions.DependencyInjection;
using NSubstitute;
using Volo.Abp;
using Volo.Abp.Authorization;
@ -23,6 +24,10 @@ public class CmsKitTestBaseModule : AbpModule
public override void PreConfigureServices(ServiceConfigurationContext context)
{
// Set culture to InvariantCulture to avoid Turkish-I problem and other culture-specific issues in tests
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;
OneTimeRunner.Run(() =>
{
GlobalFeatureManager.Instance.Modules.CmsKit().EnableAll();

3
modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs

@ -2,6 +2,7 @@
using JetBrains.Annotations;
using Volo.Abp.DependencyInjection;
using Volo.CmsKit.Blogs;
using Volo.CmsKit.Pages;
namespace Volo.CmsKit;
@ -47,6 +48,8 @@ public class CmsKitTestData : ISingletonDependency
public string Page_1_Title { get; } = "Imagine Dragons - Believer Lyrics";
public string Page_1_Slug { get; } = "imagine-dragons-believer-lyrics";
public PageStatus Page_1_Status { get; } = PageStatus.Publish;
public Guid Page_1_Id { get; } = Guid.NewGuid();

Loading…
Cancel
Save