{ "uuid": [ { "value": "960814d3-b3bd-4a5a-a541-906c1e121902" } ], "langcode": [ { "value": "en" } ], "type": [ { "target_id": "daily_email", "target_type": "node_type", "target_uuid": "8bde1f2f-eef9-4f2d-ae9c-96921f8193d7" } ], "revision_timestamp": [ { "value": "2025-05-11T09:00:20+00:00" } ], "revision_uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "revision_log": [], "status": [ { "value": true } ], "uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "title": [ { "value": "Another way to create test module configuration" } ], "created": [ { "value": "2024-02-17T00:00:00+00:00" } ], "changed": [ { "value": "2025-05-11T09:00:20+00:00" } ], "promote": [ { "value": false } ], "sticky": [ { "value": false } ], "default_langcode": [ { "value": true } ], "revision_translation_affected": [ { "value": true } ], "path": [ { "alias": "\/daily\/2024\/02\/17\/another-way-to-create-test-module-configuration", "langcode": "en" } ], "body": [ { "value": "\n

In one of the lessons in my free automated testing in Drupal email course<\/a>, I explain how I create configuration that I need within my tests, such as adding a custom field:<\/p>\n\n

\n

But how do you know what to name the configuration files and what content to put in them?<\/p>\n \n

Rather than trying to write them by hand, I create the configuration I need, such as fields, within a Drupal site and then export and edit the files I need.<\/p>\n<\/blockquote>\n\n

As well as creating the fields in the Drupal UI, I was also using it to export the configuration files I needed:<\/p>\n\n

\n

Once Drupal is installed and the configuration has been created, you can go to - \/admin\/config\/development\/configuration\/single\/export and select the configuration type and name.<\/p>\n \n

The filename is shown at the bottom of the page, and you can copy the content into files within your module.<\/p>\n<\/blockquote>\n\n

There's another way<\/h2>\n\n

After reading that lesson, somene replied and reminded me that there's a --destination<\/code> option you can use with the drush config:export<\/code> command.<\/p>\n\n

Instead of exporting to the standard configuration directory, I can do it to a temporary directory:<\/p>\n\n

run drush cex --destination \/app\/.ignored\/config\n<\/code><\/pre>\n\n

Everyhing in a .ignored<\/code> direcotry is automatically ignored by Git, and to get the files I need, I can use Linux's find<\/code> command to find any files that contain the field name and copy them into my test module directory:<\/p>\n\n

find .ignored\/config \\\n  -type f \\\n  -name \\*drupal_project\\* \\\n  -exec cp -r {} web\/modules\/custom\/foo\/modules\/foo_test\/config\/install \\;\n<\/code><\/pre>\n\n

I still need to edit the files to remove the uuid<\/code> and _core<\/code> values, but this approach means less clicking in the Drupal UI which makes me more productive.<\/p>\n\n

I used this approach when writing my SaaS code yesterday<\/a> and it worked well.<\/p>\n\n ", "format": "full_html", "processed": "\n

In one of the lessons in my free automated testing in Drupal email course<\/a>, I explain how I create configuration that I need within my tests, such as adding a custom field:<\/p>\n\n

\n

But how do you know what to name the configuration files and what content to put in them?<\/p>\n \n

Rather than trying to write them by hand, I create the configuration I need, such as fields, within a Drupal site and then export and edit the files I need.<\/p>\n<\/blockquote>\n\n

As well as creating the fields in the Drupal UI, I was also using it to export the configuration files I needed:<\/p>\n\n

\n

Once Drupal is installed and the configuration has been created, you can go to - \/admin\/config\/development\/configuration\/single\/export and select the configuration type and name.<\/p>\n \n

The filename is shown at the bottom of the page, and you can copy the content into files within your module.<\/p>\n<\/blockquote>\n\n

There's another way<\/h2>\n\n

After reading that lesson, somene replied and reminded me that there's a --destination<\/code> option you can use with the drush config:export<\/code> command.<\/p>\n\n

Instead of exporting to the standard configuration directory, I can do it to a temporary directory:<\/p>\n\n

run drush cex --destination \/app\/.ignored\/config\n<\/code><\/pre>\n\n

Everyhing in a .ignored<\/code> direcotry is automatically ignored by Git, and to get the files I need, I can use Linux's find<\/code> command to find any files that contain the field name and copy them into my test module directory:<\/p>\n\n

find .ignored\/config \\\n  -type f \\\n  -name \\*drupal_project\\* \\\n  -exec cp -r {} web\/modules\/custom\/foo\/modules\/foo_test\/config\/install \\;\n<\/code><\/pre>\n\n

I still need to edit the files to remove the uuid<\/code> and _core<\/code> values, but this approach means less clicking in the Drupal UI which makes me more productive.<\/p>\n\n

I used this approach when writing my SaaS code yesterday<\/a> and it worked well.<\/p>\n\n ", "summary": null } ] }