From dc44bebfcced279a9a3c42ff7f4bbb9ea1c25cd7 Mon Sep 17 00:00:00 2001 From: yv01p Date: Mon, 22 Dec 2025 23:59:40 +0000 Subject: [PATCH] refactor(core): delegate GetByLevel to QueryOperationService MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ContentService.GetByLevel now delegates to QueryOperationService, continuing Phase 2 query operation extraction. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/Umbraco.Core/Services/ContentService.cs | 9 +-------- .../Services/ContentServiceRefactoringTests.cs | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index 60a631e266..1f40dee264 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -614,14 +614,7 @@ public class ContentService : RepositoryService, IContentService /// An Enumerable list of objects /// Contrary to most methods, this method filters out trashed content items. public IEnumerable GetByLevel(int level) - { - using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) - { - scope.ReadLock(Constants.Locks.ContentTree); - IQuery? query = Query().Where(x => x.Level == level && x.Trashed == false); - return _documentRepository.Get(query); - } - } + => QueryOperationService.GetByLevel(level); /// /// Gets a specific version of an item. diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceRefactoringTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceRefactoringTests.cs index 4e996cd09a..ba2c5a1392 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceRefactoringTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceRefactoringTests.cs @@ -746,6 +746,24 @@ internal sealed class ContentServiceRefactoringTests : UmbracoIntegrationTestWit Assert.That(facadeCount, Is.EqualTo(directCount)); } + /// + /// Phase 2 Test: Verifies GetByLevel() via facade returns same result as direct service call. + /// + [Test] + public void GetByLevel_ViaFacade_ReturnsEquivalentResultToDirectService() + { + // Arrange + var queryService = GetRequiredService(); + + // Act + var facadeItems = ContentService.GetByLevel(1).ToList(); + var directItems = queryService.GetByLevel(1).ToList(); + + // Assert + Assert.That(facadeItems.Count, Is.EqualTo(directItems.Count)); + Assert.That(facadeItems.Select(x => x.Id), Is.EquivalentTo(directItems.Select(x => x.Id))); + } + #endregion ///