Skip to content
Snippets Groups Projects
Verified Commit e9574d73 authored by Dave Long's avatar Dave Long
Browse files

Issue #3447994 by Akhil Babu, Josue2591, thejimbirch, mikelutz, jnicola,...

Issue #3447994 by Akhil Babu, Josue2591, thejimbirch, mikelutz, jnicola, b_sharpe: Example recipe isn't functional
parent b6c02433
No related branches found
No related tags found
18 merge requests!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!9470[10.3.x-only-DO-NOT-MERGE]: #3331771 Fix file_get_contents(): Passing null to parameter,!8736Update the Documention As per the Function uses.,!8513Issue #3453786: DefaultSelection should document why values for target_bundles NULL and [] behave as they do,!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3133core/modules/system/css/components/hidden.module.css,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2062Issue #3246454: Add weekly granularity to views date sort,!877Issue #2708101: Default value for link text is not saved,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493
Pipeline #247468 passed with warnings
+2
{
"name": "drupal_recipe/example",
"description": "An example Drupal recipe description",
"type": "drupal-recipe",
"require": {
"drupal/core": "^10.0.x-dev"
},
"license": "GPL-2.0-or-later"
}
# The type key is similar to the package key in module.info.yml. It
# can be used by the UI to group Drupal recipes. Additionally,
# the type 'Site' means that the Drupal recipe will be listed in
# the installer.
type: 'Content type'
# The name of the recipe.
name: 'Example'
# The description of the recipe.
description: 'Provides an example recipe.'
# The type key is similar to the package key in module.info.yml. It can be used
# to group Drupal recipes.
type: 'Content type'
install:
# An array of modules or themes to install, if they are not already.
# The system will detect if it is a theme or a module. During the
# install only simple configuration from the new modules is created.
# This allows the Drupal recipe control over the configuration.
# An array of modules or themes to install if they are not already. The system
# will detect if it is a theme or a module. During the install only simple
# configuration from the new modules is created. This allows the Drupal recipe
# control over the configuration.
- node
- text
config:
# A Drupal recipe can have a config directory. All configuration
# is this directory will be imported after the modules have been
# installed.
# Additionally, the Drupal recipe can install configuration entities
# provided by the modules it configures. This allows them to not have
# to maintain or copy this configuration. Note the examples below are
# fictitious.
# A Drupal recipe can have a config directory. All configuration is this
# directory will be imported after the modules have been installed.
# Additionally, the Drupal recipe can install configuration entities provided
# by the modules it configures. This allows them to not have to maintain or
# copy this configuration.
import:
node:
- node.type.article
# Import all configuration that is provided by the text module and any
text:
- text.settings
# Import all configuration that is provided by the node module and any
# optional configuration that depends on the text module that is provided by
# modules already installed.
text: '*'
node: '*'
# Configuration actions may be defined. The structure here should be
# entity_type.ID.action. Below the user role entity type with an ID of
# editor is having the permissions added. The permissions key will be
# mapped to the \Drupal\user\Entity\Role::grantPermission() method.
actions:
user.role.editor:
createIfNotExists:
label: 'Editor'
grantPermissions:
- 'delete any article content'
- 'edit any article content'
content: {}
# A Drupal recipe can have a content directory. All content in this
# directory will be created after the configuration is installed.
text.settings:
simpleConfigUpdate:
default_summary_length: 700
# A Drupal recipe can have a content directory. All content in this directory
# will be created after the configuration is installed.
......@@ -7,6 +7,7 @@
use Drupal\Core\Recipe\Recipe;
use Drupal\Core\Recipe\RecipeFileException;
use Drupal\Core\Recipe\RecipePreExistingConfigException;
use Drupal\Core\Recipe\RecipeRunner;
use Drupal\KernelTests\KernelTestBase;
/**
......@@ -67,4 +68,16 @@ public function testPreExistingMatchingConfiguration(): void {
$this->assertSame('core/tests/fixtures/recipes/install_node_with_config/config', $recipe->config->recipeConfigDirectory);
}
public function testExampleRecipe(): void {
// The example recipe imports all the configurations from the node module
// including optional configurations associated with the search and view
// modules. So we have to install them before applying the example recipe.
$this->container->get('module_installer')->install(['search', 'views']);
// Apply the example recipe.
$recipe = Recipe::createFromDirectory('core/recipes/example');
RecipeRunner::processRecipe($recipe);
// Verify if the 'default_summary_length' value is updated.
$this->assertSame($this->config('text.settings')->get('default_summary_length'), 700);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment