diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/CollectionBuilders/TreeCollectionBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/CollectionBuilders/TreeCollectionBuilderTests.cs new file mode 100644 index 0000000000..5392d50ebd --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/CollectionBuilders/TreeCollectionBuilderTests.cs @@ -0,0 +1,36 @@ +using System.Linq; +using NUnit.Framework; +using Umbraco.Cms.Core.Trees; +using Umbraco.Cms.Web.BackOffice.Trees; + +namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Web.BackOffice.CollectionBuilders +{ + public class TreeCollectionBuilderTests + { + [Test] + public void Adding_Tree_To_Collection_Builder() + { + var collectionBuilder = new TreeCollectionBuilder(); + var treeDefinition = new Tree(0, "test", "test", "test", "test", TreeUse.Main, typeof(LanguageTreeController), false); + + collectionBuilder.AddTree(treeDefinition); + var collection = collectionBuilder.CreateCollection(null); + + Assert.AreEqual(1, collection.Count); + Assert.AreEqual(treeDefinition, collection.FirstOrDefault()); + } + + [Test] + public void Remove_Tree_From_Collection_Builder() + { + var collectionBuilder = new TreeCollectionBuilder(); + var treeDefinition = new Tree(0, "test", "test", "test", "test", TreeUse.Main, typeof(LanguageTreeController), false); + + collectionBuilder.AddTree(treeDefinition); + collectionBuilder.RemoveTreeController(); + var collection = collectionBuilder.CreateCollection(null); + + Assert.AreEqual(0, collection.Count); + } + } +} diff --git a/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs b/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs index 37a857f78d..d8d8afe13a 100644 --- a/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs +++ b/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using Microsoft.Extensions.DependencyInjection; using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.Trees; @@ -56,5 +57,16 @@ namespace Umbraco.Cms.Web.BackOffice.Trees foreach (var controllerType in controllerTypes) AddTreeController(controllerType); } + + public void RemoveTreeController() => RemoveTreeController(typeof(T)); + + public void RemoveTreeController(Type type) + { + var tree = _trees.FirstOrDefault(it => it.TreeControllerType == type); + if (tree != null) + { + _trees.Remove(tree); + } + } } }