Files
Umbraco-CMS/src/Umbraco.Core/Services/Navigation/ContentNavigationServiceBase.cs

494 lines
18 KiB
C#
Raw Normal View History

Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
using System.Collections.Concurrent;
using System.Diagnostics.CodeAnalysis;
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Models.Navigation;
using Umbraco.Cms.Core.Persistence.Repositories;
using Umbraco.Cms.Core.Scoping;
namespace Umbraco.Cms.Core.Services.Navigation;
internal abstract class ContentNavigationServiceBase
{
private readonly ICoreScopeProvider _coreScopeProvider;
private readonly INavigationRepository _navigationRepository;
private ConcurrentDictionary<Guid, NavigationNode> _navigationStructure = new();
private ConcurrentDictionary<Guid, NavigationNode> _recycleBinNavigationStructure = new();
private IList<Guid> _roots = new List<Guid>();
private IList<Guid> _recycleBinRoots = new List<Guid>();
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
protected ContentNavigationServiceBase(ICoreScopeProvider coreScopeProvider, INavigationRepository navigationRepository)
{
_coreScopeProvider = coreScopeProvider;
_navigationRepository = navigationRepository;
}
/// <summary>
/// Rebuilds the entire main navigation structure. Implementations should define how the structure is rebuilt.
/// </summary>
public abstract Task RebuildAsync();
/// <summary>
/// Rebuilds the recycle bin navigation structure. Implementations should define how the bin structure is rebuilt.
/// </summary>
public abstract Task RebuildBinAsync();
public bool TryGetParentKey(Guid childKey, out Guid? parentKey)
=> TryGetParentKeyFromStructure(_navigationStructure, childKey, out parentKey);
V14 QA added navigation integration tests (#16973) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * Added tests for Copy * Added additional tests * Split test * Added Media tests * Updated and added content tests * Cleaned up naming * Cleaned up * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base * Fixed indentation * Fix bug when rebuilding the recycle bin structure * Fix comments * Fix merged in code * Fix bug again after merge * Minor things --------- Co-authored-by: Elitsa <elm@umbraco.dk> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-09-25 08:33:23 +02:00
public bool TryGetRootKeys(out IEnumerable<Guid> rootKeys)
=> TryGetRootKeysFromStructure(_roots, out rootKeys);
V14 QA added navigation integration tests (#16973) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * Added tests for Copy * Added additional tests * Split test * Added Media tests * Updated and added content tests * Cleaned up naming * Cleaned up * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base * Fixed indentation * Fix bug when rebuilding the recycle bin structure * Fix comments * Fix merged in code * Fix bug again after merge * Minor things --------- Co-authored-by: Elitsa <elm@umbraco.dk> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-09-25 08:33:23 +02:00
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
public bool TryGetChildrenKeys(Guid parentKey, out IEnumerable<Guid> childrenKeys)
=> TryGetChildrenKeysFromStructure(_navigationStructure, parentKey, out childrenKeys);
public bool TryGetDescendantsKeys(Guid parentKey, out IEnumerable<Guid> descendantsKeys)
=> TryGetDescendantsKeysFromStructure(_navigationStructure, parentKey, out descendantsKeys);
public bool TryGetAncestorsKeys(Guid childKey, out IEnumerable<Guid> ancestorsKeys)
=> TryGetAncestorsKeysFromStructure(_navigationStructure, childKey, out ancestorsKeys);
public bool TryGetSiblingsKeys(Guid key, out IEnumerable<Guid> siblingsKeys)
=> TryGetSiblingsKeysFromStructure(_navigationStructure, key, out siblingsKeys);
public bool TryGetParentKeyInBin(Guid childKey, out Guid? parentKey)
=> TryGetParentKeyFromStructure(_recycleBinNavigationStructure, childKey, out parentKey);
public bool TryGetChildrenKeysInBin(Guid parentKey, out IEnumerable<Guid> childrenKeys)
=> TryGetChildrenKeysFromStructure(_recycleBinNavigationStructure, parentKey, out childrenKeys);
public bool TryGetDescendantsKeysInBin(Guid parentKey, out IEnumerable<Guid> descendantsKeys)
=> TryGetDescendantsKeysFromStructure(_recycleBinNavigationStructure, parentKey, out descendantsKeys);
public bool TryGetAncestorsKeysInBin(Guid childKey, out IEnumerable<Guid> ancestorsKeys)
=> TryGetAncestorsKeysFromStructure(_recycleBinNavigationStructure, childKey, out ancestorsKeys);
public bool TryGetSiblingsKeysInBin(Guid key, out IEnumerable<Guid> siblingsKeys)
=> TryGetSiblingsKeysFromStructure(_recycleBinNavigationStructure, key, out siblingsKeys);
public bool TryGetLevel(Guid contentKey, [NotNullWhen(true)] out int? level)
V15: Remove Nucache (#17166) * Remove nucache reference from Web.Common * Get tests building-ish * Move ReservedFieldNamesService to the right project * Remove IPublishedSnapshotStatus * Added functionality to the INavigationQueryService to get root keys * Fixed issue with navigation * Remove IPublishedSnapshot from UmbracoContext * Begin removing usage of IPublishedSnapshot from PublishedContentExtensions * Fix PublishedContentExtensions.cs * Don't use snapshots in delivery media api * Use IPublishedMediaCache in QueryMediaApiController * Remove more usages of IPublishedSnapshotAccessor * Comment out tests * Remove more usages of PublishedSnapshotAccessor * Remove PublishedSnapshot from property * Fixed test build * Fix errors * Fix some tests * Delete NuCache 🎉 * Implement DatabaseCacheRebuilder * Remove usage of IPublishedSnapshotService * Remove IPublishedSnapshotService * Remove TestPublishedSnapshotAccessor and make tests build * Don't test Snapshot cachelevel It's no longer supported * Fix BlockEditorConverter Element != Element document type * Remember to set cachemanager * Fix RichTextParserTests * Implement TryGetLevel on INavigationQueryService * Fake level and obsolete it in PublishedContent * Remove ChildrenForAllCultures * Hack Path property on PublishedContent * Remove usages of IPublishedSnapshot in tests * More ConvertersTests * Add hybrid cache to integration tests We can actually do this now because we no longer save files on disk * Rename IPublishedSnapshotRebuilder to ICacheRebuilder * Comment out tests * V15: Replacing the usages of Parent (navigation data) from IPublishedContent (#17125) * Fix .Parent references in PublishedContentExtensions * Add missing methods to FriendlyPublishedContentExtensions (ones that you were able to call on the content directly as they now require extra params) * Fix references from the extension methods * Fix dependencies in tests * Replace IPublishedSnapshotAccessor with the content cache in tests * Resolving more .Parent references * Fix unit tests * Obsolete and use extension methods * Remove private method and use extension instead * Moving code around * Fix tests * Fix more references * Cleanup * Fix more usages * Resolve merge conflict * Fix tests * Cleanup * Fix more tests * Fixed unit tests * Cleanup * Replace last usages --------- Co-authored-by: Bjarke Berg <mail@bergmania.dk> * Remove usage of IPublishedSnapshotAccessor from IRequestItemProvider * Post merge fixup * Remo IPublishedSnapshot * Add HasAny to IDocumentUrlService * Fix TextBuilder * Fix modelsbuilder tests * Use explicit types * Implement GetByContentType * Support element types in PublishedContentTypeCache * Run enlistments before publishing notifications * Fix elements cache refreshing * Implement GetByUdi * Implement GetAtRoot * Implement GetByRoute * Reimplement GetRouteById * Fix blocks unit tests * Initialize domain cache on boot * Only return routes with domains on non default lanauges * V15: Replacing the usages of `Children` (navigation data) from `IPublishedContent` (#17159) * Update params in PublishedContentExtensions to the general interfaces for the published cache and navigation service, so that we can use the extension methods on both documents and media * Introduce GetParent() which uses the right services * Fix obsolete message on .Parent * Obsolete .Children * Fix usages of Children for ApiMediaQueryService * Fix usage in internal * Fix usages in views * Fix indentation * Fix issue with delete language * Update nuget pacakges * Clear elements cache when content is deleted instead of trying to update it * Reset publishedModelFactory * Fixed publishing --------- Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com> Co-authored-by: kjac <kja@umbraco.dk>
2024-10-01 15:03:02 +02:00
{
level = 1;
if (TryGetParentKey(contentKey, out Guid? parentKey) is false)
V15: Remove Nucache (#17166) * Remove nucache reference from Web.Common * Get tests building-ish * Move ReservedFieldNamesService to the right project * Remove IPublishedSnapshotStatus * Added functionality to the INavigationQueryService to get root keys * Fixed issue with navigation * Remove IPublishedSnapshot from UmbracoContext * Begin removing usage of IPublishedSnapshot from PublishedContentExtensions * Fix PublishedContentExtensions.cs * Don't use snapshots in delivery media api * Use IPublishedMediaCache in QueryMediaApiController * Remove more usages of IPublishedSnapshotAccessor * Comment out tests * Remove more usages of PublishedSnapshotAccessor * Remove PublishedSnapshot from property * Fixed test build * Fix errors * Fix some tests * Delete NuCache 🎉 * Implement DatabaseCacheRebuilder * Remove usage of IPublishedSnapshotService * Remove IPublishedSnapshotService * Remove TestPublishedSnapshotAccessor and make tests build * Don't test Snapshot cachelevel It's no longer supported * Fix BlockEditorConverter Element != Element document type * Remember to set cachemanager * Fix RichTextParserTests * Implement TryGetLevel on INavigationQueryService * Fake level and obsolete it in PublishedContent * Remove ChildrenForAllCultures * Hack Path property on PublishedContent * Remove usages of IPublishedSnapshot in tests * More ConvertersTests * Add hybrid cache to integration tests We can actually do this now because we no longer save files on disk * Rename IPublishedSnapshotRebuilder to ICacheRebuilder * Comment out tests * V15: Replacing the usages of Parent (navigation data) from IPublishedContent (#17125) * Fix .Parent references in PublishedContentExtensions * Add missing methods to FriendlyPublishedContentExtensions (ones that you were able to call on the content directly as they now require extra params) * Fix references from the extension methods * Fix dependencies in tests * Replace IPublishedSnapshotAccessor with the content cache in tests * Resolving more .Parent references * Fix unit tests * Obsolete and use extension methods * Remove private method and use extension instead * Moving code around * Fix tests * Fix more references * Cleanup * Fix more usages * Resolve merge conflict * Fix tests * Cleanup * Fix more tests * Fixed unit tests * Cleanup * Replace last usages --------- Co-authored-by: Bjarke Berg <mail@bergmania.dk> * Remove usage of IPublishedSnapshotAccessor from IRequestItemProvider * Post merge fixup * Remo IPublishedSnapshot * Add HasAny to IDocumentUrlService * Fix TextBuilder * Fix modelsbuilder tests * Use explicit types * Implement GetByContentType * Support element types in PublishedContentTypeCache * Run enlistments before publishing notifications * Fix elements cache refreshing * Implement GetByUdi * Implement GetAtRoot * Implement GetByRoute * Reimplement GetRouteById * Fix blocks unit tests * Initialize domain cache on boot * Only return routes with domains on non default lanauges * V15: Replacing the usages of `Children` (navigation data) from `IPublishedContent` (#17159) * Update params in PublishedContentExtensions to the general interfaces for the published cache and navigation service, so that we can use the extension methods on both documents and media * Introduce GetParent() which uses the right services * Fix obsolete message on .Parent * Obsolete .Children * Fix usages of Children for ApiMediaQueryService * Fix usage in internal * Fix usages in views * Fix indentation * Fix issue with delete language * Update nuget pacakges * Clear elements cache when content is deleted instead of trying to update it * Reset publishedModelFactory * Fixed publishing --------- Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com> Co-authored-by: kjac <kja@umbraco.dk>
2024-10-01 15:03:02 +02:00
{
level = null;
V15: Remove Nucache (#17166) * Remove nucache reference from Web.Common * Get tests building-ish * Move ReservedFieldNamesService to the right project * Remove IPublishedSnapshotStatus * Added functionality to the INavigationQueryService to get root keys * Fixed issue with navigation * Remove IPublishedSnapshot from UmbracoContext * Begin removing usage of IPublishedSnapshot from PublishedContentExtensions * Fix PublishedContentExtensions.cs * Don't use snapshots in delivery media api * Use IPublishedMediaCache in QueryMediaApiController * Remove more usages of IPublishedSnapshotAccessor * Comment out tests * Remove more usages of PublishedSnapshotAccessor * Remove PublishedSnapshot from property * Fixed test build * Fix errors * Fix some tests * Delete NuCache 🎉 * Implement DatabaseCacheRebuilder * Remove usage of IPublishedSnapshotService * Remove IPublishedSnapshotService * Remove TestPublishedSnapshotAccessor and make tests build * Don't test Snapshot cachelevel It's no longer supported * Fix BlockEditorConverter Element != Element document type * Remember to set cachemanager * Fix RichTextParserTests * Implement TryGetLevel on INavigationQueryService * Fake level and obsolete it in PublishedContent * Remove ChildrenForAllCultures * Hack Path property on PublishedContent * Remove usages of IPublishedSnapshot in tests * More ConvertersTests * Add hybrid cache to integration tests We can actually do this now because we no longer save files on disk * Rename IPublishedSnapshotRebuilder to ICacheRebuilder * Comment out tests * V15: Replacing the usages of Parent (navigation data) from IPublishedContent (#17125) * Fix .Parent references in PublishedContentExtensions * Add missing methods to FriendlyPublishedContentExtensions (ones that you were able to call on the content directly as they now require extra params) * Fix references from the extension methods * Fix dependencies in tests * Replace IPublishedSnapshotAccessor with the content cache in tests * Resolving more .Parent references * Fix unit tests * Obsolete and use extension methods * Remove private method and use extension instead * Moving code around * Fix tests * Fix more references * Cleanup * Fix more usages * Resolve merge conflict * Fix tests * Cleanup * Fix more tests * Fixed unit tests * Cleanup * Replace last usages --------- Co-authored-by: Bjarke Berg <mail@bergmania.dk> * Remove usage of IPublishedSnapshotAccessor from IRequestItemProvider * Post merge fixup * Remo IPublishedSnapshot * Add HasAny to IDocumentUrlService * Fix TextBuilder * Fix modelsbuilder tests * Use explicit types * Implement GetByContentType * Support element types in PublishedContentTypeCache * Run enlistments before publishing notifications * Fix elements cache refreshing * Implement GetByUdi * Implement GetAtRoot * Implement GetByRoute * Reimplement GetRouteById * Fix blocks unit tests * Initialize domain cache on boot * Only return routes with domains on non default lanauges * V15: Replacing the usages of `Children` (navigation data) from `IPublishedContent` (#17159) * Update params in PublishedContentExtensions to the general interfaces for the published cache and navigation service, so that we can use the extension methods on both documents and media * Introduce GetParent() which uses the right services * Fix obsolete message on .Parent * Obsolete .Children * Fix usages of Children for ApiMediaQueryService * Fix usage in internal * Fix usages in views * Fix indentation * Fix issue with delete language * Update nuget pacakges * Clear elements cache when content is deleted instead of trying to update it * Reset publishedModelFactory * Fixed publishing --------- Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com> Co-authored-by: kjac <kja@umbraco.dk>
2024-10-01 15:03:02 +02:00
return false;
}
while (parentKey is not null)
{
if (TryGetParentKey(parentKey.Value, out parentKey) is false)
{
level = null;
V15: Remove Nucache (#17166) * Remove nucache reference from Web.Common * Get tests building-ish * Move ReservedFieldNamesService to the right project * Remove IPublishedSnapshotStatus * Added functionality to the INavigationQueryService to get root keys * Fixed issue with navigation * Remove IPublishedSnapshot from UmbracoContext * Begin removing usage of IPublishedSnapshot from PublishedContentExtensions * Fix PublishedContentExtensions.cs * Don't use snapshots in delivery media api * Use IPublishedMediaCache in QueryMediaApiController * Remove more usages of IPublishedSnapshotAccessor * Comment out tests * Remove more usages of PublishedSnapshotAccessor * Remove PublishedSnapshot from property * Fixed test build * Fix errors * Fix some tests * Delete NuCache 🎉 * Implement DatabaseCacheRebuilder * Remove usage of IPublishedSnapshotService * Remove IPublishedSnapshotService * Remove TestPublishedSnapshotAccessor and make tests build * Don't test Snapshot cachelevel It's no longer supported * Fix BlockEditorConverter Element != Element document type * Remember to set cachemanager * Fix RichTextParserTests * Implement TryGetLevel on INavigationQueryService * Fake level and obsolete it in PublishedContent * Remove ChildrenForAllCultures * Hack Path property on PublishedContent * Remove usages of IPublishedSnapshot in tests * More ConvertersTests * Add hybrid cache to integration tests We can actually do this now because we no longer save files on disk * Rename IPublishedSnapshotRebuilder to ICacheRebuilder * Comment out tests * V15: Replacing the usages of Parent (navigation data) from IPublishedContent (#17125) * Fix .Parent references in PublishedContentExtensions * Add missing methods to FriendlyPublishedContentExtensions (ones that you were able to call on the content directly as they now require extra params) * Fix references from the extension methods * Fix dependencies in tests * Replace IPublishedSnapshotAccessor with the content cache in tests * Resolving more .Parent references * Fix unit tests * Obsolete and use extension methods * Remove private method and use extension instead * Moving code around * Fix tests * Fix more references * Cleanup * Fix more usages * Resolve merge conflict * Fix tests * Cleanup * Fix more tests * Fixed unit tests * Cleanup * Replace last usages --------- Co-authored-by: Bjarke Berg <mail@bergmania.dk> * Remove usage of IPublishedSnapshotAccessor from IRequestItemProvider * Post merge fixup * Remo IPublishedSnapshot * Add HasAny to IDocumentUrlService * Fix TextBuilder * Fix modelsbuilder tests * Use explicit types * Implement GetByContentType * Support element types in PublishedContentTypeCache * Run enlistments before publishing notifications * Fix elements cache refreshing * Implement GetByUdi * Implement GetAtRoot * Implement GetByRoute * Reimplement GetRouteById * Fix blocks unit tests * Initialize domain cache on boot * Only return routes with domains on non default lanauges * V15: Replacing the usages of `Children` (navigation data) from `IPublishedContent` (#17159) * Update params in PublishedContentExtensions to the general interfaces for the published cache and navigation service, so that we can use the extension methods on both documents and media * Introduce GetParent() which uses the right services * Fix obsolete message on .Parent * Obsolete .Children * Fix usages of Children for ApiMediaQueryService * Fix usage in internal * Fix usages in views * Fix indentation * Fix issue with delete language * Update nuget pacakges * Clear elements cache when content is deleted instead of trying to update it * Reset publishedModelFactory * Fixed publishing --------- Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com> Co-authored-by: kjac <kja@umbraco.dk>
2024-10-01 15:03:02 +02:00
return false;
}
level++;
}
return true;
}
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
public bool MoveToBin(Guid key)
{
if (TryRemoveNodeFromParentInStructure(_navigationStructure, key, out NavigationNode? nodeToRemove) is false || nodeToRemove is null)
{
return false; // Node doesn't exist
}
// Recursively remove all descendants and add them to recycle bin
AddDescendantsToRecycleBinRecursively(nodeToRemove);
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
// Reset the SortOrder based on its new position in the bin
nodeToRemove.UpdateSortOrder(_recycleBinNavigationStructure.Count);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
return _recycleBinNavigationStructure.TryAdd(nodeToRemove.Key, nodeToRemove) &&
_navigationStructure.TryRemove(key, out _);
}
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
public bool Add(Guid key, Guid? parentKey = null, int? sortOrder = null)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
NavigationNode? parentNode = null;
if (parentKey.HasValue)
{
if (_navigationStructure.TryGetValue(parentKey.Value, out parentNode) is false)
{
return false; // Parent node doesn't exist
}
}
else
{
_roots.Add(key);
}
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
// Note: sortOrder can't be automatically determined for items at root level, so it needs to be passed in
var newNode = new NavigationNode(key, sortOrder ?? 0);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
if (_navigationStructure.TryAdd(key, newNode) is false)
{
return false; // Node with this key already exists
}
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
parentNode?.AddChild(_navigationStructure, key);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
return true;
}
public bool Move(Guid key, Guid? targetParentKey = null)
{
if (_navigationStructure.TryGetValue(key, out NavigationNode? nodeToMove) is false)
{
return false; // Node doesn't exist
}
if (key == targetParentKey)
{
return false; // Cannot move a node to itself
}
_roots.Remove(key); // Just in case
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
NavigationNode? targetParentNode = null;
if (targetParentKey.HasValue)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
if (_navigationStructure.TryGetValue(targetParentKey.Value, out targetParentNode) is false)
{
return false; // Target parent doesn't exist
}
}
else
{
_roots.Add(key);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}
// Remove the node from its current parent's children list
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
if (nodeToMove.Parent is not null && _navigationStructure.TryGetValue(nodeToMove.Parent.Value, out NavigationNode? currentParentNode))
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
currentParentNode.RemoveChild(_navigationStructure, key);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}
// Set the new parent for the node (if parent node is null - the node is moved to root)
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
targetParentNode?.AddChild(_navigationStructure, key);
return true;
}
public bool UpdateSortOrder(Guid key, int newSortOrder)
{
if (_navigationStructure.TryGetValue(key, out NavigationNode? node) is false)
{
return false; // Node doesn't exist
}
node.UpdateSortOrder(newSortOrder);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
return true;
}
public bool RemoveFromBin(Guid key)
{
if (TryRemoveNodeFromParentInStructure(_recycleBinNavigationStructure, key, out NavigationNode? nodeToRemove) is false || nodeToRemove is null)
{
return false; // Node doesn't exist
}
_recycleBinRoots.Remove(key);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
RemoveDescendantsRecursively(nodeToRemove);
return _recycleBinNavigationStructure.TryRemove(key, out _);
}
public bool RestoreFromBin(Guid key, Guid? targetParentKey = null)
{
if (_recycleBinNavigationStructure.TryGetValue(key, out NavigationNode? nodeToRestore) is false)
{
return false; // Node doesn't exist
}
// If a target parent is specified, try to find it in the main structure
NavigationNode? targetParentNode = null;
if (targetParentKey.HasValue && _navigationStructure.TryGetValue(targetParentKey.Value, out targetParentNode) is false)
{
return false; // Target parent doesn't exist
}
// Set the new parent for the node (if parent node is null - the node is moved to root)
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
targetParentNode?.AddChild(_recycleBinNavigationStructure, key);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
// Restore the node and its descendants from the recycle bin to the main structure
RestoreNodeAndDescendantsRecursively(nodeToRestore);
return _navigationStructure.TryAdd(nodeToRestore.Key, nodeToRestore) &&
_recycleBinNavigationStructure.TryRemove(key, out _);
}
/// <summary>
/// Rebuilds the navigation structure based on the specified object type key and whether the items are trashed.
/// Only relevant for items in the content and media trees (which have readLock values of -333 or -334).
/// </summary>
/// <param name="readLock">The read lock value, should be -333 or -334 for content and media trees.</param>
/// <param name="objectTypeKey">The key of the object type to rebuild.</param>
/// <param name="trashed">Indicates whether the items are in the recycle bin.</param>
protected async Task HandleRebuildAsync(int readLock, Guid objectTypeKey, bool trashed)
{
// This is only relevant for items in the content and media trees
if (readLock != Constants.Locks.ContentTree && readLock != Constants.Locks.MediaTree)
{
return;
}
using ICoreScope scope = _coreScopeProvider.CreateCoreScope(autoComplete: true);
scope.ReadLock(readLock);
V14 QA added navigation integration tests (#16973) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * Added tests for Copy * Added additional tests * Split test * Added Media tests * Updated and added content tests * Cleaned up naming * Cleaned up * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base * Fixed indentation * Fix bug when rebuilding the recycle bin structure * Fix comments * Fix merged in code * Fix bug again after merge * Minor things --------- Co-authored-by: Elitsa <elm@umbraco.dk> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-09-25 08:33:23 +02:00
// Build the corresponding navigation structure
if (trashed)
{
IEnumerable<INavigationModel> navigationModels = _navigationRepository.GetTrashedContentNodesByObjectType(objectTypeKey);
BuildNavigationDictionary(_recycleBinNavigationStructure, _recycleBinRoots, navigationModels);
V14 QA added navigation integration tests (#16973) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * Added tests for Copy * Added additional tests * Split test * Added Media tests * Updated and added content tests * Cleaned up naming * Cleaned up * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base * Fixed indentation * Fix bug when rebuilding the recycle bin structure * Fix comments * Fix merged in code * Fix bug again after merge * Minor things --------- Co-authored-by: Elitsa <elm@umbraco.dk> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-09-25 08:33:23 +02:00
}
else
{
IEnumerable<INavigationModel> navigationModels = _navigationRepository.GetContentNodesByObjectType(objectTypeKey);
BuildNavigationDictionary(_navigationStructure, _roots, navigationModels);
V14 QA added navigation integration tests (#16973) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * Added tests for Copy * Added additional tests * Split test * Added Media tests * Updated and added content tests * Cleaned up naming * Cleaned up * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base * Fixed indentation * Fix bug when rebuilding the recycle bin structure * Fix comments * Fix merged in code * Fix bug again after merge * Minor things --------- Co-authored-by: Elitsa <elm@umbraco.dk> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-09-25 08:33:23 +02:00
}
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}
private bool TryGetParentKeyFromStructure(ConcurrentDictionary<Guid, NavigationNode> structure, Guid childKey, out Guid? parentKey)
{
if (structure.TryGetValue(childKey, out NavigationNode? childNode))
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
parentKey = childNode.Parent;
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
return true;
}
// Child doesn't exist
parentKey = null;
return false;
}
private bool TryGetRootKeysFromStructure(IList<Guid> input, out IEnumerable<Guid> rootKeys)
V14 QA added navigation integration tests (#16973) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * Added tests for Copy * Added additional tests * Split test * Added Media tests * Updated and added content tests * Cleaned up naming * Cleaned up * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base * Fixed indentation * Fix bug when rebuilding the recycle bin structure * Fix comments * Fix merged in code * Fix bug again after merge * Minor things --------- Co-authored-by: Elitsa <elm@umbraco.dk> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-09-25 08:33:23 +02:00
{
// TODO can we make this more efficient?
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
// Sort by SortOrder
rootKeys = input
.OrderBy(key => _navigationStructure[key].SortOrder)
.ToList();
V14 QA added navigation integration tests (#16973) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * Added tests for Copy * Added additional tests * Split test * Added Media tests * Updated and added content tests * Cleaned up naming * Cleaned up * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base * Fixed indentation * Fix bug when rebuilding the recycle bin structure * Fix comments * Fix merged in code * Fix bug again after merge * Minor things --------- Co-authored-by: Elitsa <elm@umbraco.dk> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-09-25 08:33:23 +02:00
return true;
}
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
private bool TryGetChildrenKeysFromStructure(ConcurrentDictionary<Guid, NavigationNode> structure, Guid parentKey, out IEnumerable<Guid> childrenKeys)
{
if (structure.TryGetValue(parentKey, out NavigationNode? parentNode) is false)
{
// Parent doesn't exist
childrenKeys = [];
return false;
}
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
// Keep children keys ordered based on their SortOrder
childrenKeys = GetOrderedChildren(parentNode, structure).ToList();
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
return true;
}
private bool TryGetDescendantsKeysFromStructure(ConcurrentDictionary<Guid, NavigationNode> structure, Guid parentKey, out IEnumerable<Guid> descendantsKeys)
{
var descendants = new List<Guid>();
if (structure.TryGetValue(parentKey, out NavigationNode? parentNode) is false)
{
// Parent doesn't exist
descendantsKeys = [];
return false;
}
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
GetDescendantsRecursively(structure, parentNode, descendants);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
descendantsKeys = descendants;
return true;
}
private bool TryGetAncestorsKeysFromStructure(ConcurrentDictionary<Guid, NavigationNode> structure, Guid childKey, out IEnumerable<Guid> ancestorsKeys)
{
var ancestors = new List<Guid>();
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
if (structure.TryGetValue(childKey, out NavigationNode? node) is false)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
// Child doesn't exist
ancestorsKeys = [];
return false;
}
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
while (node.Parent is not null && structure.TryGetValue(node.Parent.Value, out node))
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
ancestors.Add(node.Key);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}
ancestorsKeys = ancestors;
return true;
}
private bool TryGetSiblingsKeysFromStructure(ConcurrentDictionary<Guid, NavigationNode> structure, Guid key, out IEnumerable<Guid> siblingsKeys)
{
siblingsKeys = [];
if (structure.TryGetValue(key, out NavigationNode? node) is false)
{
return false; // Node doesn't exist
}
if (node.Parent is null)
{
// To find siblings of a node at root level, we need to iterate over all items and add those with null Parent
siblingsKeys = structure
.Where(kv => kv.Value.Parent is null && kv.Key != key)
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
.OrderBy(kv => kv.Value.SortOrder)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
.Select(kv => kv.Key)
.ToList();
return true;
}
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
if (TryGetChildrenKeys(node.Parent.Value, out IEnumerable<Guid> childrenKeys) is false)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
return false; // Couldn't retrieve children keys
}
// Filter out the node itself to get its siblings
siblingsKeys = childrenKeys.Where(childKey => childKey != key).ToList();
return true;
}
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
private void GetDescendantsRecursively(ConcurrentDictionary<Guid, NavigationNode> structure, NavigationNode node, List<Guid> descendants)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
var childrenKeys = GetOrderedChildren(node, structure).ToList();
foreach (Guid childKey in childrenKeys)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
descendants.Add(childKey);
// Retrieve the child node and its descendants
if (structure.TryGetValue(childKey, out NavigationNode? childNode))
{
GetDescendantsRecursively(structure, childNode, descendants);
}
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}
}
private bool TryRemoveNodeFromParentInStructure(ConcurrentDictionary<Guid, NavigationNode> structure, Guid key, out NavigationNode? nodeToRemove)
{
if (structure.TryGetValue(key, out nodeToRemove) is false)
{
return false; // Node doesn't exist
}
// Remove the node from its parent's children list
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
if (nodeToRemove.Parent is not null && structure.TryGetValue(nodeToRemove.Parent.Value, out NavigationNode? parentNode))
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
parentNode.RemoveChild(structure, key);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}
return true;
}
private void AddDescendantsToRecycleBinRecursively(NavigationNode node)
{
_recycleBinRoots.Add(node.Key);
_roots.Remove(node.Key);
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
var childrenKeys = GetOrderedChildren(node, _navigationStructure).ToList();
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
foreach (Guid childKey in childrenKeys)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
if (_navigationStructure.TryGetValue(childKey, out NavigationNode? childNode) is false)
{
continue;
}
// Reset the SortOrder based on its new position in the bin
childNode.UpdateSortOrder(_recycleBinNavigationStructure.Count);
AddDescendantsToRecycleBinRecursively(childNode);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
// Only remove the child from the main structure if it was successfully added to the recycle bin
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
if (_recycleBinNavigationStructure.TryAdd(childKey, childNode))
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
_navigationStructure.TryRemove(childKey, out _);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}
}
}
private void RemoveDescendantsRecursively(NavigationNode node)
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
var childrenKeys = GetOrderedChildren(node, _recycleBinNavigationStructure).ToList();
foreach (Guid childKey in childrenKeys)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
if (_recycleBinNavigationStructure.TryGetValue(childKey, out NavigationNode? childNode) is false)
{
continue;
}
RemoveDescendantsRecursively(childNode);
_recycleBinNavigationStructure.TryRemove(childKey, out _);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}
}
private void RestoreNodeAndDescendantsRecursively(NavigationNode node)
{
if (node.Parent is null)
{
_roots.Add(node.Key);
}
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
_recycleBinRoots.Remove(node.Key);
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
var childrenKeys = GetOrderedChildren(node, _recycleBinNavigationStructure).ToList();
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
foreach (Guid childKey in childrenKeys)
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
if (_recycleBinNavigationStructure.TryGetValue(childKey, out NavigationNode? childNode) is false)
{
continue;
}
RestoreNodeAndDescendantsRecursively(childNode);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
// Only remove the child from the recycle bin structure if it was successfully added to the main one
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
if (_navigationStructure.TryAdd(childKey, childNode))
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
_recycleBinNavigationStructure.TryRemove(childKey, out _);
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}
}
}
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
private IEnumerable<Guid> GetOrderedChildren(NavigationNode node, ConcurrentDictionary<Guid, NavigationNode> structure)
=> node.Children
.Where(structure.ContainsKey)
.OrderBy(childKey => structure[childKey].SortOrder)
.ToList();
private static void BuildNavigationDictionary(ConcurrentDictionary<Guid, NavigationNode> nodesStructure, IList<Guid> roots, IEnumerable<INavigationModel> entities)
{
var entityList = entities.ToList();
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
var idToKeyMap = entityList.ToDictionary(x => x.Id, x => x.Key);
foreach (INavigationModel entity in entityList)
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
var node = new NavigationNode(entity.Key, entity.SortOrder);
nodesStructure[entity.Key] = node;
// We don't set the parent for items under root, it will stay null
if (entity.ParentId == -1)
{
roots.Add(entity.Key);
continue;
}
if (idToKeyMap.TryGetValue(entity.ParentId, out Guid parentKey) is false)
{
continue;
}
// If the parent node exists in the nodesStructure, add the node to the parent's children (parent is set as well)
if (nodesStructure.TryGetValue(parentKey, out NavigationNode? parentNode))
{
V15: Implement sorting for the in-memory navigation structures (document and media) (#17280) * bump version to 15.1.0 * V15 Fixed the failing smoke tests in the pipeline v15 (#17158) * Fixed the failing tests of Member Group due to UI changes * Fixed the failing tests of Member due to UI changes * Fixed the failing tests of User due to UI changes * Fixed failing tests for Dictionary and Document Type * Updated tests due to test helper changes * Bumped version * Updated assert steps due to the response changes * Updated tests due to api helper changes * Updated tests due to UI changes * Fixed tests for delete partial view * Fixed tests * Added more waits * Updated assert steps * Fixed failing tests for Block Grid and Media * Added more waits * Added skip tests * Removed waits time * Updated assertion steps for User * Added todo * Updated tests due to api helper changes * Bumped version * Added skip tests * Fetch sortOrder for each navigationNode * Update NavigationNode to have sortOrder and change Parent and Children props to keys instead of NavigationNodes * Consider sortOrder when building the navigation structures * Renaming tests * Adding tests for items being the last in structure when added, moved, etc. * Updating names * Cleanup * Updating cache refreshers with changes due to sorting * Refactoring due to sorting changes and resolving key to NavigationNode * Removing sortOrder params from test as they are calculated automatically * Adding content and media integration tests to test sorting functionality * Adding sortOrder param for special case when adding new nodes * Adding new UpdateSortOrder to INavigationManagementService * Revert "V15 Fixed the failing smoke tests in the pipeline v15 (#17158)" This reverts commit 31399c3b1556a044e0e1cdfcf9dcc37bd56a2c6e. * Revert "bump version to 15.1.0" This reverts commit 5e4d15be * Fix revert * Add sort order when creating media --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk>
2024-10-16 10:51:42 +03:00
parentNode.AddChild(nodesStructure, entity.Key);
}
}
}
Introduce `INavigationService` for in-memory navigation data (#16818) * Tests * Remove props and use local vars * Adding preliminary navigation service and content implementation * Adding preliminary unit tests * Change from async methods * Refactor GetParentKey to TryGetParentKey * Refactor GetChildrenKeys to TryGetChildrenKeys * Refactor GetDescendantsKeys to TryGetDescendantsKeys * Refactor GetAncestorsKeys to TryGetAncestorsKeys * Refactor GetSiblingsKeys to TryGetSiblingsKeys * Refactor TryGetChildrenKeys * Initial integration tests * Use ContentEditingService instead of ContentService * Remove INavigationService.Copy implementation and unit tests * Rename var * Adding clarification * Initial ContentNavigationRepository * Initial NavigationFactory * Remove filtering from factory * NavigationRepository and implementation * InitializationService responsible for seeding the in-memory structure * Register repository and service * Adding NavigationDto and NavigationNode * Adding INavigationService dependency and Enlist updating navigation structure actions * Documentation * Adding tests for removing descendants as well * Changed to ConcurrentDictionary * Remove keys comments for tests * Adding documentation * Forgotten ConcurrentDictionary change * Isolating the operations on the model * Splitting the INavigationService to separate the querying from the managing functionality * Introducing specific navigation services for document, document recycle bin, media and media recycle bin * Making ContentNavigationService into a base as the functionality will be shared between the document, document recycle bin, media and media recycle bin services * Adding the implementations of document, document recycle bin, media and media recycle bin navigation services * Fixing comments * Initializing all 4 collections * Adapting the navigation unit tests to the base now * Adapting integration tests to specific navigation service * Adding test for rebuilding the structure * Adding implementation for Adding and Getting a node - needed for moving to and restoring from the recycle bin + tests * Updating the document navigation structure from the ContentService * Fix typo * Adding trashed items implementation in base - currently managing 2 structures * Removing no longer relevant GetNavigationNode and AddNavigationNode * Fix removing parent when child is removed supporting methods * Added restoring functionality * Adding Bin functionality to DocumentNavigationService * Removing Move signature from IDocumentNavigationService * Adding RecycleBin query and management services * Re-adding Move and removing GetNavigationNode and AddNavigationNode signatures from interface * Rebuilding bin structure using _documentNavigationService, instead of _documentRecycleBinNavigationService * Fixing test name * Adding more tests for remove * Adding tests for restore and removing ones for GetNavigationNode and AddNavigationNode * Remove comments * Removing document and media RecycleBinNavigationService and their interfaces * Adding media rebuild bin * Fixing initialization with correct interfaces * Removing RecycleBinNavigationServices' registration * Remove IDocumentRecycleBinNavigationService dependency * Updating in-memory nav structure when content updates happen * Adding the rest of the integration tests * Clean up IMediaNavigationService * Fix comments * Remove CustomTestSetup in integration tests as the structure is updated when content updates happen * Adding and fixing comments * Making RebuildBinAsync abstract as well * Adding DocumentNavigationServiceTestsBase * Splitting DocumentNavigationServiceTests into partial test classes * Cleaning up DocumentNavigationServiceTests since tests have been moved to specific partial classes * Reuse a method for creating content in tests * Change type in test base * Adding navigation structure updates in media service * Adding MediaNavigationServiceTestsBase * Adding integration tests for media nav str * Remove services as we will have more concrete ones * Add document and media IXNavigationQueryService and IXNavigationManagementService * Inject ManagementService in ContentService.cs and MediaService.cs * Change implementation to implement the new services + registration * Make classes sealed * Inject correct services in InitializationService * Using the right services in integration tests * Adding comments * Removing bin interfaces from main navigation ones * Rename Remove to MoveToBin * V14 QA added block list editor tests (#16862) * Added tests for blocklistEditor * Added more tets * Removed faker * Added blockTest * Updates * Added tests * Removed dependencies * Fixes * Clean up * Fixed naming * Cleaned up * Bumped version * Added missing semicolons * Added tags * Only runs the new tests * Updates * Bumped version * Fixed tests * Cleaned up * Updated version * Fixes, not done * Fixed tests * Bumped helpers * Bumped helpers * Fixed conflict * Fixed comment * Reverted to run smokeTests * Updated helpers * improve missingProperties data returned for missing propertie values (#16910) Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> * update backoffice submodule * Rename initialization service to initialization hosted service * Refactor repository to return a collection * Add interface for the NavigationDto * Add constants to bind property names between DTOs * Move factory and fix input type * Use constants for column names * Use factory from base --------- Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com> Co-authored-by: Bjarke Berg <mail@bergmania.dk> Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
2024-09-04 11:18:08 +02:00
}