function SmartDefaultSettingsTest::setUp
Same name in other branches
- 10 core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php \Drupal\Tests\ckeditor5\Kernel\SmartDefaultSettingsTest::setUp()
- 11.x core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php \Drupal\Tests\ckeditor5\Kernel\SmartDefaultSettingsTest::setUp()
Overrides KernelTestBase::setUp
File
-
core/
modules/ ckeditor5/ tests/ src/ Kernel/ SmartDefaultSettingsTest.php, line 85
Class
- SmartDefaultSettingsTest
- @covers \Drupal\ckeditor5\SmartDefaultSettings::computeSmartDefaultSettings() @group ckeditor5 @internal
Namespace
Drupal\Tests\ckeditor5\KernelCode
protected function setUp() : void {
parent::setUp();
$this->manager = $this->container
->get('plugin.manager.ckeditor5.plugin');
$this->typedConfig = $this->container
->get('config.typed');
$this->smartDefaultSettings = $this->container
->get('ckeditor5.smart_default_settings');
$this->database = $this->container
->get('database');
$this->installSchema('dblog', [
'watchdog',
]);
FilterFormat::create([
'format' => 'minimal_ckeditor_wrong_allowed_html',
'name' => 'Most basic HTML, but with allowed_html misconfigured',
'filters' => [
'filter_html' => [
'status' => 1,
'settings' => [
// Misconfiguration aspects:
// 1. `<a>`, not `<a href>`, while `DrupalLink` is enabled
// 2. `<p style>` even though `style` is globally disallowed by
// filter_html
// 3. `<a onclick>` even though `on*` is globally disallowed by
// filter_html
'allowed_html' => '<p style> <br> <a onclick>',
],
],
],
])->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'minimal_ckeditor_wrong_allowed_html',
'editor' => 'ckeditor',
'settings' => [
'toolbar' => [
'rows' => [
0 => [
[
'name' => 'Basic Formatting',
'items' => [
'DrupalLink',
],
],
],
],
],
'plugins' => [],
],
])->setSyncing(TRUE)
->save();
FilterFormat::create(Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/filter.format.full_html.yml'))->setSyncing(TRUE)
->save();
Editor::create(Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.full_html.yml'))->setSyncing(TRUE)
->save();
$basic_html_format = Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/filter.format.basic_html.yml');
FilterFormat::create($basic_html_format)->setSyncing(TRUE)
->save();
Editor::create(Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'))->setSyncing(TRUE)
->save();
FilterFormat::create(Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/filter.format.restricted_html.yml'))->setSyncing(TRUE)
->save();
$basic_html_format_without_image_uploads = $basic_html_format;
$basic_html_format_without_image_uploads['name'] .= ' (without image uploads)';
$basic_html_format_without_image_uploads['format'] = 'basic_html_without_image_uploads';
FilterFormat::create($basic_html_format_without_image_uploads)->save();
Editor::create([
'format' => 'basic_html_without_image_uploads',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'))->setImageUploadSettings([
'status' => FALSE,
])
->setSyncing(TRUE)
->save();
$allowed_html_parents = [
'filters',
'filter_html',
'settings',
'allowed_html',
];
$current_value = NestedArray::getValue($basic_html_format, $allowed_html_parents);
$new_value = str_replace([
'<h4 id> ',
'<h6 id> ',
], '', $current_value);
$basic_html_format_without_h4_h6 = $basic_html_format;
$basic_html_format_without_h4_h6['name'] .= ' (without H4 and H6)';
$basic_html_format_without_h4_h6['format'] = 'basic_html_without_h4_h6';
NestedArray::setValue($basic_html_format_without_h4_h6, $allowed_html_parents, $new_value);
FilterFormat::create($basic_html_format_without_h4_h6)->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'basic_html_without_h4_h6',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'))->setSyncing(TRUE)
->save();
$new_value = str_replace([
'<h2 id> ',
'<h3 id> ',
'<h4 id> ',
'<h5 id> ',
'<h6 id> ',
], '', $current_value);
$basic_html_format_without_headings = $basic_html_format;
$basic_html_format_without_headings['name'] .= ' (without H*)';
$basic_html_format_without_headings['format'] = 'basic_html_without_headings';
NestedArray::setValue($basic_html_format_without_headings, $allowed_html_parents, $new_value);
FilterFormat::create($basic_html_format_without_headings)->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'basic_html_without_headings',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'))->setSyncing(TRUE)
->save();
$basic_html_format_with_pre = $basic_html_format;
$basic_html_format_with_pre['name'] .= ' (with <pre>)';
$basic_html_format_with_pre['format'] = 'basic_html_with_pre';
NestedArray::setValue($basic_html_format_with_pre, $allowed_html_parents, $current_value . ' <pre>');
FilterFormat::create($basic_html_format_with_pre)->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'basic_html_with_pre',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'))->setSyncing(TRUE)
->save();
$basic_html_format_with_h1 = $basic_html_format;
$basic_html_format_with_h1['name'] .= ' (with <h1>)';
$basic_html_format_with_h1['format'] = 'basic_html_with_h1';
NestedArray::setValue($basic_html_format_with_h1, $allowed_html_parents, $current_value . ' <h1>');
FilterFormat::create($basic_html_format_with_h1)->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'basic_html_with_h1',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'))->setSyncing(TRUE)
->save();
$new_value = str_replace('<p>', '<p class="text-align-center text-align-justify">', $current_value);
$basic_html_format_with_alignable_p = $basic_html_format;
$basic_html_format_with_alignable_p['name'] .= ' (with alignable paragraph support)';
$basic_html_format_with_alignable_p['format'] = 'basic_html_with_alignable_p';
NestedArray::setValue($basic_html_format_with_alignable_p, $allowed_html_parents, $new_value);
FilterFormat::create($basic_html_format_with_alignable_p)->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'basic_html_with_alignable_p',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'))->setSyncing(TRUE)
->save();
$basic_html_format_with_media_embed = $basic_html_format;
$basic_html_format_with_media_embed['name'] .= ' (with Media Embed support)';
$basic_html_format_with_media_embed['format'] = 'basic_html_with_media_embed';
// Add media_embed filter, update filter_html filter settings.
$basic_html_format_with_media_embed['filters']['media_embed'] = [
'status' => TRUE,
];
$new_value = $current_value . ' <drupal-media data-entity-type data-entity-uuid data-align data-caption alt>';
NestedArray::setValue($basic_html_format_with_media_embed, $allowed_html_parents, $new_value);
FilterFormat::create($basic_html_format_with_media_embed)->setSyncing(TRUE)
->save();
$basic_html_editor_with_media_embed = Editor::create([
'format' => 'basic_html_with_media_embed',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'));
$settings = $basic_html_editor_with_media_embed->getSettings();
// Add "insert media from library" button to CKEditor 4 configuration, the
// pre-existing toolbar item group labeled "Media".
$settings['toolbar']['rows'][0][3]['items'][] = 'DrupalMediaLibrary';
$basic_html_editor_with_media_embed->setSettings($settings);
$basic_html_editor_with_media_embed->setSyncing(TRUE)
->save();
$basic_html_format_with_media_embed_view_mode_invalid = $basic_html_format_with_media_embed;
$basic_html_format_with_media_embed_view_mode_invalid['name'] = ' (with Media Embed support, view mode enabled but no view modes configured)';
$basic_html_format_with_media_embed_view_mode_invalid['format'] = 'basic_html_with_media_embed_view_mode_enabled_no_view_modes_configured';
$current_value_media_embed = NestedArray::getValue($basic_html_format_with_media_embed, $allowed_html_parents);
$new_value = str_replace('<drupal-media data-entity-type data-entity-uuid data-align data-caption alt>', '<drupal-media data-entity-type data-entity-uuid data-align data-caption alt data-view-mode>', $current_value_media_embed);
NestedArray::setValue($basic_html_format_with_media_embed_view_mode_invalid, $allowed_html_parents, $new_value);
FilterFormat::create($basic_html_format_with_media_embed_view_mode_invalid)->setSyncing(TRUE)
->save();
$basic_html_editor_with_media_embed_view_mode_enabled_no_view_modes_configured = Editor::create([
'format' => 'basic_html_with_media_embed_view_mode_enabled_no_view_modes_configured',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'));
$settings = $basic_html_editor_with_media_embed_view_mode_enabled_no_view_modes_configured->getSettings();
// Add "insert media from library" button to CKEditor 4 configuration, the
// pre-existing toolbar item group labeled "Media".
$settings['toolbar']['rows'][0][3]['items'][] = 'DrupalMediaLibrary';
$basic_html_editor_with_media_embed_view_mode_enabled_no_view_modes_configured->setSettings($settings);
$basic_html_editor_with_media_embed_view_mode_enabled_no_view_modes_configured->setSyncing(TRUE)
->save();
$new_value = str_replace('<img src alt height width data-entity-type data-entity-uuid data-align data-caption>', '<img src alt height width data-*>', $current_value);
$basic_html_format_with_any_data_attr = $basic_html_format;
$basic_html_format_with_any_data_attr['name'] .= ' (with any data-* attribute on images)';
$basic_html_format_with_any_data_attr['format'] = 'basic_html_with_any_data_attr';
NestedArray::setValue($basic_html_format_with_any_data_attr, $allowed_html_parents, $new_value);
FilterFormat::create($basic_html_format_with_any_data_attr)->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'basic_html_with_any_data_attr',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'))->setSyncing(TRUE)
->save();
$basic_html_format_with_media_embed_view_mode_enabled_two_view_modes_configured = $basic_html_format_with_media_embed_view_mode_invalid;
$basic_html_format_with_media_embed_view_mode_enabled_two_view_modes_configured['name'] = ' (with Media Embed support, view mode enabled and two view modes configured )';
$basic_html_format_with_media_embed_view_mode_enabled_two_view_modes_configured['format'] = 'basic_html_with_media_embed_view_mode_enabled_two_view_modes_configured';
FilterFormat::create($basic_html_format_with_media_embed_view_mode_enabled_two_view_modes_configured)->setSyncing(TRUE)
->save();
$basic_html_editor_with_media_embed_view_mode_enabled_two_view_modes_configured = Editor::create([
'format' => 'basic_html_with_media_embed_view_mode_enabled_two_view_modes_configured',
] + Yaml::parseFile('core/modules/ckeditor5/tests/fixtures/ckeditor4_config/editor.editor.basic_html.yml'));
$settings = $basic_html_editor_with_media_embed_view_mode_enabled_two_view_modes_configured->getSettings();
// Add "insert media from library" button to CKEditor 4 configuration, the
// pre-existing toolbar item group labeled "Media".
$settings['toolbar']['rows'][0][3]['items'][] = 'DrupalMediaLibrary';
$basic_html_editor_with_media_embed_view_mode_enabled_two_view_modes_configured->setSettings($settings);
$basic_html_editor_with_media_embed_view_mode_enabled_two_view_modes_configured->setSyncing(TRUE)
->save();
EntityViewMode::create([
'id' => 'media.view_mode_1',
'targetEntityType' => 'media',
'status' => TRUE,
'enabled' => TRUE,
'label' => 'View Mode 1',
])->setSyncing(TRUE)
->save();
EntityViewMode::create([
'id' => 'media.view_mode_2',
'targetEntityType' => 'media',
'status' => TRUE,
'enabled' => TRUE,
'label' => 'View Mode 2',
])->setSyncing(TRUE)
->save();
$filter_format = FilterFormat::load('basic_html_with_media_embed_view_mode_enabled_two_view_modes_configured');
$filter_format->setFilterConfig('media_embed', [
'status' => TRUE,
'settings' => [
'default_view_mode' => 'view_mode_1',
'allowed_media_types' => [],
'allowed_view_modes' => [
'view_mode_1' => 'view_mode_1',
'view_mode_2' => 'view_mode_2',
],
],
])
->setSyncing(TRUE)
->save();
$filter_plugin_manager = $this->container
->get('plugin.manager.filter');
FilterFormat::create([
'format' => 'filter_only__filter_html',
'name' => 'Only the "filter_html" filter and its default settings',
'filters' => [
'filter_html' => [
'status' => 1,
'settings' => $filter_plugin_manager->getDefinition('filter_html')['settings'],
],
],
])
->setSyncing(TRUE)
->save();
FilterFormat::create([
'format' => 'cke4_plugins_with_settings',
'name' => 'All CKEditor 4 core plugins with settings',
])->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'cke4_plugins_with_settings',
'editor' => 'ckeditor',
'settings' => [
'toolbar' => [
'rows' => [
0 => [
[
'name' => 'Buttons with settings',
'items' => [
'Language',
'Styles',
// Blockquote does not have settings. It's present only to
// support an additional tag, to test realistic styles.
'Blockquote',
],
],
[
'name' => 'Button without upgrade path',
'items' => [
'Llama',
],
],
],
],
],
'plugins' => [
'language' => [
'language_list' => 'all',
],
'stylescombo' => [
'styles' => "p.callout|Callout\r\nblockquote.interesting.highlighted|Interesting & highlighted quote\n\nblockquote.famous | Famous\n",
],
// Plugin setting without upgrade path.
'llama_contextual_and_button' => [
'ultra_llama_mode' => TRUE,
],
],
],
])->setSyncing(TRUE)
->save();
FilterFormat::create([
'format' => 'cke4_stylescombo_span',
'name' => 'A CKEditor 4 configured to have span styles',
'filters' => [
'filter_html' => [
'status' => 1,
'settings' => [
'allowed_html' => '<p> <br> <span class="llama">',
] + $filter_plugin_manager->getDefinition('filter_html')['settings'],
],
],
])
->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'cke4_stylescombo_span',
'editor' => 'ckeditor',
'settings' => [
'toolbar' => [
'rows' => [
0 => [
[
'name' => 'Whatever',
'items' => [
'Styles',
],
],
],
],
],
'plugins' => [
'stylescombo' => [
'styles' => "span.llama|Llama span",
],
],
],
])->setSyncing(TRUE)
->save();
FilterFormat::create([
'format' => 'cke4_contrib_plugins_now_in_core',
'name' => 'All CKEditor 4 contrib plugins now in core',
])->setSyncing(TRUE)
->save();
Editor::create([
'format' => 'cke4_contrib_plugins_now_in_core',
'editor' => 'ckeditor',
'settings' => [
'toolbar' => [
'rows' => [
0 => [
[
'name' => 'Contributed modules providing buttons without settings',
'items' => [
// @see https://www.drupal.org/project/codetag
'Code',
],
],
],
],
],
'plugins' => [],
],
])->setSyncing(TRUE)
->save();
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.