ContentService.GetPagedChildren is broken?
This commit is contained in:
@@ -25,6 +25,7 @@ using Umbraco.Core.Services.Implement;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Umbraco.Web.PropertyEditors;
|
||||
using System.Reflection;
|
||||
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
||||
|
||||
namespace Umbraco.Tests.Services
|
||||
{
|
||||
@@ -2744,6 +2745,107 @@ namespace Umbraco.Tests.Services
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Get_Paged_Children_WithFilterAndOrder()
|
||||
{
|
||||
var languageService = ServiceContext.LocalizationService;
|
||||
|
||||
var langUk = new Language("en-UK") { IsDefault = true };
|
||||
var langFr = new Language("fr-FR");
|
||||
var langDa = new Language("da-DK");
|
||||
|
||||
languageService.Save(langFr);
|
||||
languageService.Save(langUk);
|
||||
languageService.Save(langDa);
|
||||
|
||||
var contentTypeService = ServiceContext.ContentTypeService;
|
||||
|
||||
var contentType = contentTypeService.Get("umbTextpage");
|
||||
contentType.Variations = ContentVariation.Culture;
|
||||
contentTypeService.Save(contentType);
|
||||
|
||||
var contentService = ServiceContext.ContentService;
|
||||
|
||||
var o = new[] { 2, 1, 3, 0, 4 }; // randomly different
|
||||
for (var i = 0; i < 5; i++)
|
||||
{
|
||||
var contentA = new Content(null, -1, contentType);
|
||||
contentA.SetCultureName("contentA" + i + "uk", langUk.IsoCode);
|
||||
contentA.SetCultureName("contentA" + o[i] + "fr", langFr.IsoCode);
|
||||
contentA.SetCultureName("contentX" + i + "da", langDa.IsoCode);
|
||||
contentService.Save(contentA);
|
||||
|
||||
var contentB = new Content(null, -1, contentType);
|
||||
contentB.SetCultureName("contentB" + i + "uk", langUk.IsoCode);
|
||||
contentB.SetCultureName("contentB" + o[i] + "fr", langFr.IsoCode);
|
||||
contentB.SetCultureName("contentX" + i + "da", langDa.IsoCode);
|
||||
contentService.Save(contentB);
|
||||
}
|
||||
|
||||
// get all
|
||||
var list = contentService.GetPagedChildren(-1, 0, 100, out var total).ToList();
|
||||
|
||||
Console.WriteLine("ALL");
|
||||
WriteList(list);
|
||||
|
||||
// 10 items (there's already a Home content in there...)
|
||||
Assert.AreEqual(11, total);
|
||||
Assert.AreEqual(11, list.Count);
|
||||
|
||||
// filter
|
||||
list = contentService.GetPagedChildren(-1, 0, 100, out total,
|
||||
SqlContext.Query<IContent>().Where(x => x.Name.Contains("contentX")),
|
||||
Ordering.By("name", culture: langFr.IsoCode)).ToList();
|
||||
|
||||
Assert.AreEqual(0, total);
|
||||
Assert.AreEqual(0, list.Count);
|
||||
|
||||
// filter
|
||||
list = contentService.GetPagedChildren(-1, 0, 100, out total,
|
||||
SqlContext.Query<IContent>().Where(x => x.Name.Contains("contentX")),
|
||||
Ordering.By("name", culture: langDa.IsoCode)).ToList();
|
||||
|
||||
Console.WriteLine("FILTER BY NAME da:'contentX'");
|
||||
WriteList(list);
|
||||
|
||||
Assert.AreEqual(10, total);
|
||||
Assert.AreEqual(10, list.Count);
|
||||
|
||||
// filter
|
||||
list = contentService.GetPagedChildren(-1, 0, 100, out total,
|
||||
SqlContext.Query<IContent>().Where(x => x.Name.Contains("contentA")),
|
||||
Ordering.By("name", culture: langFr.IsoCode)).ToList();
|
||||
|
||||
Console.WriteLine("FILTER BY NAME fr:'contentA', ORDER ASC");
|
||||
WriteList(list);
|
||||
|
||||
Assert.AreEqual(5, total);
|
||||
Assert.AreEqual(5, list.Count);
|
||||
|
||||
for (var i = 0; i < 5; i++)
|
||||
Assert.AreEqual("contentA" + i + "fr", list[i].GetCultureName(langFr.IsoCode));
|
||||
|
||||
list = contentService.GetPagedChildren(-1, 0, 100, out total,
|
||||
SqlContext.Query<IContent>().Where(x => x.Name.Contains("contentA")),
|
||||
Ordering.By("name", direction: Direction.Descending, culture: langFr.IsoCode)).ToList();
|
||||
|
||||
Console.WriteLine("FILTER BY NAME fr:'contentA', ORDER DESC");
|
||||
WriteList(list);
|
||||
|
||||
Assert.AreEqual(5, total);
|
||||
Assert.AreEqual(5, list.Count);
|
||||
|
||||
for (var i = 0; i < 5; i++)
|
||||
Assert.AreEqual("contentA" + (4-i) + "fr", list[i].GetCultureName(langFr.IsoCode));
|
||||
}
|
||||
|
||||
private void WriteList(List<IContent> list)
|
||||
{
|
||||
foreach (var content in list)
|
||||
Console.WriteLine("[{0}] {1} {2} {3} {4}", content.Id, content.Name, content.GetCultureName("en-UK"), content.GetCultureName("fr-FR"), content.GetCultureName("da-DK"));
|
||||
Console.WriteLine("-");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_SaveRead_Variations()
|
||||
{
|
||||
|
||||
@@ -64,6 +64,8 @@ namespace Umbraco.Tests.TestHelpers
|
||||
|
||||
internal ScopeProvider ScopeProvider => Current.ScopeProvider as ScopeProvider;
|
||||
|
||||
protected ISqlContext SqlContext => Container.GetInstance<ISqlContext>();
|
||||
|
||||
public override void SetUp()
|
||||
{
|
||||
base.SetUp();
|
||||
|
||||
Reference in New Issue
Block a user