ContentService.GetPagedChildren is broken?

This commit is contained in:
Stephan
2018-10-18 14:16:50 +02:00
parent 15f5e9a98e
commit 510666cd7e
2 changed files with 104 additions and 0 deletions

View File

@@ -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()
{

View File

@@ -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();