Migrations: Handles rich text blocks created with TinyMCE in convert local links migration and refreshes internal datatype cache following migration requiring cache rebuild (closes #20885) (#20887)
Handles rich text blocks created with TinyMCE in convert local links migration. Refreshes internal datatype cache following migration requiring cache rebuild. # Conflicts: # src/Umbraco.Infrastructure/Migrations/MigrationPlanExecutor.cs
This commit is contained in:
@@ -10,6 +10,7 @@ using Umbraco.Cms.Core.Cache;
|
||||
using Umbraco.Cms.Core.Configuration;
|
||||
using Umbraco.Cms.Core.Events;
|
||||
using Umbraco.Cms.Core.Migrations;
|
||||
using Umbraco.Cms.Core.Models.PublishedContent;
|
||||
using Umbraco.Cms.Core.PublishedCache;
|
||||
using Umbraco.Cms.Core.Scoping;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
@@ -38,6 +39,7 @@ internal sealed class AdvancedMigrationTests : UmbracoIntegrationTest
|
||||
private IServiceScopeFactory ServiceScopeFactory => GetRequiredService<IServiceScopeFactory>();
|
||||
private DistributedCache DistributedCache => GetRequiredService<DistributedCache>();
|
||||
private IDatabaseCacheRebuilder DatabaseCacheRebuilder => GetRequiredService<IDatabaseCacheRebuilder>();
|
||||
private IPublishedContentTypeFactory PublishedContentTypeFactory => GetRequiredService<IPublishedContentTypeFactory>();
|
||||
private IMigrationPlanExecutor MigrationPlanExecutor => new MigrationPlanExecutor(
|
||||
CoreScopeProvider,
|
||||
ScopeAccessor,
|
||||
@@ -48,7 +50,8 @@ internal sealed class AdvancedMigrationTests : UmbracoIntegrationTest
|
||||
DistributedCache,
|
||||
Mock.Of<IKeyValueService>(),
|
||||
ServiceScopeFactory,
|
||||
AppCaches.NoCache);
|
||||
AppCaches.NoCache,
|
||||
PublishedContentTypeFactory);
|
||||
|
||||
[Test]
|
||||
public async Task CreateTableOfTDtoAsync()
|
||||
|
||||
@@ -110,15 +110,16 @@ public class RichTextPropertyEditorHelperTests
|
||||
Assert.IsNull(value.Blocks);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Parse_Blocks_With_Both_Content_And_Settings()
|
||||
[TestCase(Constants.PropertyEditors.Aliases.RichText)]
|
||||
[TestCase("Umbraco.TinyMCE")]
|
||||
public void Can_Parse_Blocks_With_Both_Content_And_Settings(string propertyEditorAlias)
|
||||
{
|
||||
const string input = """
|
||||
string input = """
|
||||
{
|
||||
"markup": "<p>this is some markup</p><umb-rte-block data-content-key=\"36cc710a-d8a6-45d0-a07f-7bbd8742cf02\"><!--Umbraco-Block--></umb-rte-block>",
|
||||
"blocks": {
|
||||
"layout": {
|
||||
"Umbraco.RichText": [{
|
||||
"[PropertyEditorAlias]": [{
|
||||
"contentKey": "36cc710a-d8a6-45d0-a07f-7bbd8742cf02",
|
||||
"settingsKey": "d2eeef66-4111-42f4-a164-7a523eaffbc2"
|
||||
}
|
||||
@@ -143,6 +144,7 @@ public class RichTextPropertyEditorHelperTests
|
||||
}
|
||||
}
|
||||
""";
|
||||
input = input.Replace("[PropertyEditorAlias]", propertyEditorAlias);
|
||||
|
||||
var result = RichTextPropertyEditorHelper.TryParseRichTextEditorValue(input, JsonSerializer(), Logger(), out RichTextEditorValue? value);
|
||||
Assert.IsTrue(result);
|
||||
@@ -180,6 +182,12 @@ public class RichTextPropertyEditorHelperTests
|
||||
Assert.AreEqual("settingsPropertyAlias", settingsProperties.First().Alias);
|
||||
Assert.AreEqual("A settings property value", settingsProperties.First().Value);
|
||||
});
|
||||
|
||||
Assert.IsTrue(value.Blocks.Layout.ContainsKey(Constants.PropertyEditors.Aliases.RichText));
|
||||
var layout = value.Blocks.Layout[Constants.PropertyEditors.Aliases.RichText];
|
||||
Assert.AreEqual(1, layout.Count());
|
||||
Assert.AreEqual(Guid.Parse("36cc710a-d8a6-45d0-a07f-7bbd8742cf02"), layout.First().ContentKey);
|
||||
Assert.AreEqual(Guid.Parse("d2eeef66-4111-42f4-a164-7a523eaffbc2"), layout.First().SettingsKey);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -12,6 +12,7 @@ using NUnit.Framework;
|
||||
using Umbraco.Cms.Core.Cache;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
using Umbraco.Cms.Core.Events;
|
||||
using Umbraco.Cms.Core.Models.PublishedContent;
|
||||
using Umbraco.Cms.Core.PublishedCache;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
using Umbraco.Cms.Core.Sync;
|
||||
@@ -85,7 +86,8 @@ public class MigrationPlanTests
|
||||
distributedCache,
|
||||
Mock.Of<IKeyValueService>(),
|
||||
Mock.Of<IServiceScopeFactory>(),
|
||||
appCaches);
|
||||
appCaches,
|
||||
Mock.Of<IPublishedContentTypeFactory>());
|
||||
|
||||
var plan = new MigrationPlan("default")
|
||||
.From(string.Empty)
|
||||
|
||||
Reference in New Issue
Block a user