Fix IContentBase.GetUdi() extension method to support document-blueprint entity type (#16939)
* Add tests for all UDI entity types * Fix IContentBase UDI entity type for blueprints * Remove redundant switch statements and reorder methods
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.Entities;
|
||||
using Umbraco.Cms.Tests.Common.Builders;
|
||||
using Umbraco.Cms.Tests.Common.Builders.Extensions;
|
||||
@@ -13,15 +14,22 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Extensions;
|
||||
[TestFixture]
|
||||
public class UdiGetterExtensionsTests
|
||||
{
|
||||
[TestCase("style.css", "umb://stylesheet/style.css")]
|
||||
[TestCase("editor\\style.css", "umb://stylesheet/editor/style.css")]
|
||||
[TestCase("editor/style.css", "umb://stylesheet/editor/style.css")]
|
||||
public void GetUdiForStylesheet(string path, string expected)
|
||||
[TestCase(Constants.ObjectTypes.Strings.DataType, "6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://data-type-container/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
[TestCase(Constants.ObjectTypes.Strings.DocumentType, "6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://document-type-container/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
[TestCase(Constants.ObjectTypes.Strings.MediaType, "6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://media-type-container/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
[TestCase(Constants.ObjectTypes.Strings.DocumentBlueprint, "6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://document-blueprint-container/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForEntityContainer(Guid containedObjectType, Guid key, string expected)
|
||||
{
|
||||
var builder = new StylesheetBuilder();
|
||||
var stylesheet = builder.WithPath(path).Build();
|
||||
var result = stylesheet.GetUdi();
|
||||
Assert.AreEqual(expected, result.ToString());
|
||||
EntityContainer entity = new EntityContainer(containedObjectType)
|
||||
{
|
||||
Key = key
|
||||
};
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("script.js", "umb://script/script.js")]
|
||||
@@ -29,10 +37,195 @@ public class UdiGetterExtensionsTests
|
||||
[TestCase("editor/script.js", "umb://script/editor/script.js")]
|
||||
public void GetUdiForScript(string path, string expected)
|
||||
{
|
||||
var builder = new ScriptBuilder();
|
||||
var script = builder.WithPath(path).Build();
|
||||
var result = script.GetUdi();
|
||||
Assert.AreEqual(expected, result.ToString());
|
||||
Script entity = new ScriptBuilder()
|
||||
.WithPath(path)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("style.css", "umb://stylesheet/style.css")]
|
||||
[TestCase("editor\\style.css", "umb://stylesheet/editor/style.css")]
|
||||
[TestCase("editor/style.css", "umb://stylesheet/editor/style.css")]
|
||||
public void GetUdiForStylesheet(string path, string expected)
|
||||
{
|
||||
Stylesheet entity = new StylesheetBuilder()
|
||||
.WithPath(path)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", false, "umb://document/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", true, "umb://document-blueprint/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForContent(Guid key, bool blueprint, string expected)
|
||||
{
|
||||
Content entity = new ContentBuilder()
|
||||
.WithKey(key)
|
||||
.WithBlueprint(blueprint)
|
||||
.WithContentType(ContentTypeBuilder.CreateBasicContentType())
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IContentBase)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://media/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForMedia(Guid key, string expected)
|
||||
{
|
||||
Media entity = new MediaBuilder()
|
||||
.WithKey(key)
|
||||
.WithMediaType(MediaTypeBuilder.CreateImageMediaType())
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IContentBase)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://member/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForMember(Guid key, string expected)
|
||||
{
|
||||
Member entity = new MemberBuilder()
|
||||
.WithKey(key)
|
||||
.WithMemberType(MemberTypeBuilder.CreateSimpleMemberType())
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IContentBase)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://document-type/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForContentType(Guid key, string expected)
|
||||
{
|
||||
IContentType entity = new ContentTypeBuilder()
|
||||
.WithKey(key)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IContentTypeComposition)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://media-type/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForMediaType(Guid key, string expected)
|
||||
{
|
||||
IMediaType entity = new MediaTypeBuilder()
|
||||
.WithKey(key)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IContentTypeComposition)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://member-type/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForMemberType(Guid key, string expected)
|
||||
{
|
||||
IMemberType entity = new MemberTypeBuilder()
|
||||
.WithKey(key)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IContentTypeComposition)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://data-type/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForDataType(Guid key, string expected)
|
||||
{
|
||||
DataType entity = new DataTypeBuilder()
|
||||
.WithKey(key)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://dictionary-item/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForDictionaryItem(Guid key, string expected)
|
||||
{
|
||||
DictionaryItem entity = new DictionaryItemBuilder()
|
||||
.WithKey(key)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("en-US", "umb://language/en-US")]
|
||||
[TestCase("en", "umb://language/en")]
|
||||
public void GetUdiForLanguage(string isoCode, string expected)
|
||||
{
|
||||
ILanguage entity = new LanguageBuilder()
|
||||
.WithCultureInfo(isoCode)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://member-group/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForMemberGroup(Guid key, string expected)
|
||||
{
|
||||
MemberGroup entity = new MemberGroupBuilder()
|
||||
.WithKey(key)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("test.cshtml", "umb://partial-view/test.cshtml")]
|
||||
@@ -40,26 +233,53 @@ public class UdiGetterExtensionsTests
|
||||
[TestCase("editor/test.cshtml", "umb://partial-view/editor/test.cshtml")]
|
||||
public void GetUdiForPartialView(string path, string expected)
|
||||
{
|
||||
var builder = new PartialViewBuilder();
|
||||
var partialView = builder
|
||||
IPartialView entity = new PartialViewBuilder()
|
||||
.WithPath(path)
|
||||
.Build();
|
||||
var result = partialView.GetUdi();
|
||||
Assert.AreEqual(expected, result.ToString());
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://relation-type/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForRelationType(Guid key, string expected)
|
||||
{
|
||||
IRelationTypeWithIsDependency entity = new RelationTypeBuilder()
|
||||
.WithKey(key)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://template/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForTemplate(Guid key, string expected)
|
||||
{
|
||||
ITemplate entity = new TemplateBuilder()
|
||||
.WithKey(key)
|
||||
.Build();
|
||||
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
|
||||
[TestCase("6ad82c70-685c-4e04-9b36-d81bd779d16f", "umb://webhook/6ad82c70685c4e049b36d81bd779d16f")]
|
||||
public void GetUdiForWebhook(string key, string expected)
|
||||
public void GetUdiForWebhook(Guid key, string expected)
|
||||
{
|
||||
var builder = new WebhookBuilder();
|
||||
var webhook = builder
|
||||
.WithKey(Guid.Parse(key))
|
||||
Webhook entity = new WebhookBuilder()
|
||||
.WithKey(key)
|
||||
.Build();
|
||||
|
||||
Udi result = webhook.GetUdi();
|
||||
Assert.AreEqual(expected, result.ToString());
|
||||
Udi udi = entity.GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
|
||||
result = ((IEntity)webhook).GetUdi();
|
||||
Assert.AreEqual(expected, result.ToString());
|
||||
udi = ((IEntity)entity).GetUdi();
|
||||
Assert.AreEqual(expected, udi.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user