* Create sign provider collection and call registered providers on rendering a page of tree item view models. Re-work tree controller constructors to provide registered providers as a collection. * Stub implementation of sign provider for documents with a scheduled publish pending. * Complete implementation of tree sign for pending scheduled publish. * Added integration test for new method on IContentService. * Added unit test for HasScheduleSignProvider. * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Tidied usings and clarified method header comments. * Adding a fixed prefix to all future signs, and removing the provider property * Adding a sign for protected tree documents. * Adding IsProtectedSignProviderTest.cs & correcting HasScheduleSignProviderTests.cs to no longer assert the provider * Fixing minor things in accordance with CR * Adding collection items compatibility * Introduced IHasSigns interface to provide more re-use across trees and collections. Fixed updates to base content controllers (no need to introduce a new type variable). Removed passing entities for populating tree signs (we aren't using it, so simplifies things). * Refactoring a bit to make existing code less duplicated and fixing some constructor obsoletion * Introducing a has pending changes sign. * Applying changes based on CR * Introducing tests for HasPendingChangesSignProvider.cs and stopped the use of contentService * Introducing tests for HasPendingChangesSignProvider.cs and slight logic change * Introduced HasCollectionSignProvider.cs and tests. * Introducing collection signs to Media Tree & Media Collection items * Introducing Plain Items and tests. Refactoring tests as well * Introduced alternative CanProvideSigns() implementation on IsProtectedSignProvider.cs * Slight refactoring to reduce bloating. * Adding [ActivatorUtilitiesConstructor] since it threw an error otherwise * Minor cleanup. * Updated OpenApi.json. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: NillasKA <kramernicklas@gmail.com>
197 lines
6.5 KiB
C#
197 lines
6.5 KiB
C#
using NUnit.Framework;
|
|
using Umbraco.Cms.Api.Management.Services.Signs;
|
|
using Umbraco.Cms.Api.Management.ViewModels;
|
|
using Umbraco.Cms.Api.Management.ViewModels.Document.Collection;
|
|
using Umbraco.Cms.Api.Management.ViewModels.Document.Item;
|
|
using Umbraco.Cms.Api.Management.ViewModels.DocumentType;
|
|
using Umbraco.Cms.Api.Management.ViewModels.Media.Collection;
|
|
using Umbraco.Cms.Api.Management.ViewModels.Media.Item;
|
|
using Umbraco.Cms.Api.Management.ViewModels.MediaType;
|
|
using Umbraco.Cms.Api.Management.ViewModels.Tree;
|
|
|
|
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Cms.Api.Management.Services.Signs;
|
|
|
|
[TestFixture]
|
|
internal class HasCollectionSignProviderTests
|
|
{
|
|
[Test]
|
|
public void HasCollectionSignProvider_Can_Provide_Document_Tree_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
Assert.IsTrue(sut.CanProvideSigns<DocumentTreeItemResponseModel>());
|
|
}
|
|
|
|
[Test]
|
|
public void HasCollectionSignProvider_Can_Provide_Document_Collection_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
Assert.IsTrue(sut.CanProvideSigns<DocumentCollectionResponseModel>());
|
|
}
|
|
|
|
[Test]
|
|
public void HasCollectionSignProvider_Can_Provide_Document_Item_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
Assert.IsTrue(sut.CanProvideSigns<DocumentItemResponseModel>());
|
|
}
|
|
|
|
[Test]
|
|
public void HasCollectionSignProvider_Can_Provide_Media_Tree_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
Assert.IsTrue(sut.CanProvideSigns<MediaTreeItemResponseModel>());
|
|
}
|
|
|
|
[Test]
|
|
public void HasCollectionSignProvider_Can_Provide_Media_Collection_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
Assert.IsTrue(sut.CanProvideSigns<MediaCollectionResponseModel>());
|
|
}
|
|
|
|
[Test]
|
|
public void HasCollectionSignProvider_Can_Provide_Media_Item_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
Assert.IsTrue(sut.CanProvideSigns<MediaItemResponseModel>());
|
|
}
|
|
|
|
[Test]
|
|
public async Task HasCollectionSignProvider_Should_Populate_Document_Tree_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
|
|
var viewModels = new List<DocumentTreeItemResponseModel>
|
|
{
|
|
new()
|
|
{
|
|
Id = Guid.NewGuid(), DocumentType = new DocumentTypeReferenceResponseModel() { Collection = new ReferenceByIdModel(Guid.NewGuid()) },
|
|
},
|
|
new() { Id = Guid.NewGuid() },
|
|
};
|
|
|
|
await sut.PopulateSignsAsync(viewModels);
|
|
|
|
Assert.AreEqual(viewModels[0].Signs.Count(), 1);
|
|
Assert.AreEqual(viewModels[1].Signs.Count(), 0);
|
|
|
|
var signModel = viewModels[0].Signs.First();
|
|
Assert.AreEqual("Umb.HasCollection", signModel.Alias);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HasCollectionSignProvider_Should_Populate_Document_Collection_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
|
|
var viewModels = new List<DocumentCollectionResponseModel>
|
|
{
|
|
new()
|
|
{
|
|
Id = Guid.NewGuid(), DocumentType = new DocumentTypeCollectionReferenceResponseModel() { Collection = new ReferenceByIdModel(Guid.NewGuid()) },
|
|
},
|
|
new() { Id = Guid.NewGuid() },
|
|
};
|
|
|
|
await sut.PopulateSignsAsync(viewModels);
|
|
|
|
Assert.AreEqual(viewModels[0].Signs.Count(), 1);
|
|
Assert.AreEqual(viewModels[1].Signs.Count(), 0);
|
|
|
|
var signModel = viewModels[0].Signs.First();
|
|
Assert.AreEqual("Umb.HasCollection", signModel.Alias);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HasCollectionSignProvider_Should_Populate_Document_Item_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
|
|
var viewModels = new List<DocumentItemResponseModel>
|
|
{
|
|
new()
|
|
{
|
|
Id = Guid.NewGuid(), DocumentType = new DocumentTypeReferenceResponseModel() { Collection = new ReferenceByIdModel(Guid.NewGuid()) },
|
|
},
|
|
new() { Id = Guid.NewGuid() },
|
|
};
|
|
|
|
await sut.PopulateSignsAsync(viewModels);
|
|
|
|
Assert.AreEqual(viewModels[0].Signs.Count(), 1);
|
|
Assert.AreEqual(viewModels[1].Signs.Count(), 0);
|
|
|
|
var signModel = viewModels[0].Signs.First();
|
|
Assert.AreEqual("Umb.HasCollection", signModel.Alias);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HasCollectionSignProvider_Should_Populate_Media_Tree_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
|
|
var viewModels = new List<MediaTreeItemResponseModel>
|
|
{
|
|
new()
|
|
{
|
|
Id = Guid.NewGuid(), MediaType = new MediaTypeReferenceResponseModel() { Collection = new ReferenceByIdModel(Guid.NewGuid()) },
|
|
},
|
|
new() { Id = Guid.NewGuid() },
|
|
};
|
|
|
|
await sut.PopulateSignsAsync(viewModels);
|
|
|
|
Assert.AreEqual(viewModels[0].Signs.Count(), 1);
|
|
Assert.AreEqual(viewModels[1].Signs.Count(), 0);
|
|
|
|
var signModel = viewModels[0].Signs.First();
|
|
Assert.AreEqual("Umb.HasCollection", signModel.Alias);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HasCollectionSignProvider_Should_Populate_Media_Collection_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
|
|
var viewModels = new List<MediaCollectionResponseModel>
|
|
{
|
|
new()
|
|
{
|
|
Id = Guid.NewGuid(), MediaType = new MediaTypeCollectionReferenceResponseModel() { Collection = new ReferenceByIdModel(Guid.NewGuid()) },
|
|
},
|
|
new() { Id = Guid.NewGuid() },
|
|
};
|
|
|
|
await sut.PopulateSignsAsync(viewModels);
|
|
|
|
Assert.AreEqual(viewModels[0].Signs.Count(), 1);
|
|
Assert.AreEqual(viewModels[1].Signs.Count(), 0);
|
|
|
|
var signModel = viewModels[0].Signs.First();
|
|
Assert.AreEqual("Umb.HasCollection", signModel.Alias);
|
|
}
|
|
|
|
[Test]
|
|
public async Task HasCollectionSignProvider_Should_Populate_Media_Item_Signs()
|
|
{
|
|
var sut = new HasCollectionSignProvider();
|
|
|
|
var viewModels = new List<MediaItemResponseModel>
|
|
{
|
|
new()
|
|
{
|
|
Id = Guid.NewGuid(), MediaType = new MediaTypeReferenceResponseModel() { Collection = new ReferenceByIdModel(Guid.NewGuid()) },
|
|
},
|
|
new() { Id = Guid.NewGuid() },
|
|
};
|
|
|
|
await sut.PopulateSignsAsync(viewModels);
|
|
|
|
Assert.AreEqual(viewModels[0].Signs.Count(), 1);
|
|
Assert.AreEqual(viewModels[1].Signs.Count(), 0);
|
|
|
|
var signModel = viewModels[0].Signs.First();
|
|
Assert.AreEqual("Umb.HasCollection", signModel.Alias);
|
|
}
|
|
}
|