mirror of
https://gh.wpcy.net/https://github.com/wp-cli/entity-command.git
synced 2026-04-27 20:37:10 +08:00
294 lines
8.2 KiB
Gherkin
294 lines
8.2 KiB
Gherkin
Feature: Manage WordPress options
|
|
|
|
Scenario: Option CRUD
|
|
Given a WP install
|
|
|
|
# String values
|
|
When I run `wp option add str_opt 'bar'`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option get str_opt`
|
|
Then STDOUT should be:
|
|
"""
|
|
bar
|
|
"""
|
|
|
|
When I run `wp option list`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option list`
|
|
Then STDOUT should contain:
|
|
"""
|
|
str_opt bar
|
|
"""
|
|
|
|
When I run `wp option list --autoload=off`
|
|
Then STDOUT should not contain:
|
|
"""
|
|
str_opt bar
|
|
"""
|
|
|
|
When I run `wp option list --search='str_o*'`
|
|
Then STDOUT should be a table containing rows:
|
|
| option_name | option_value |
|
|
| str_opt | bar |
|
|
|
|
When I run `wp option list --search='str_o*' --format=total_bytes`
|
|
Then STDOUT should be:
|
|
"""
|
|
3
|
|
"""
|
|
|
|
When I run `wp option list`
|
|
Then STDOUT should contain:
|
|
"""
|
|
home https://example.com
|
|
"""
|
|
|
|
When I run `wp option add auto_opt --autoload=no 'bar'`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option list --search='auto_opt' --autoload=off`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option list | grep -q "str_opt"`
|
|
Then the return code should be 0
|
|
|
|
When I run `wp option delete str_opt`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option add option_one "ONE"`
|
|
And I run `wp option add option_two "TWO"`
|
|
Then STDOUT should not be empty
|
|
|
|
When I try `wp option delete option_one option_two option_three`
|
|
Then STDOUT should be:
|
|
"""
|
|
Success: Deleted 'option_one' option.
|
|
Success: Deleted 'option_two' option.
|
|
"""
|
|
And STDERR should be:
|
|
"""
|
|
Warning: Could not delete 'option_three' option. Does it exist?
|
|
"""
|
|
|
|
When I run `wp option list`
|
|
Then STDOUT should not contain:
|
|
"""
|
|
str_opt bar
|
|
"""
|
|
|
|
When I try `wp option get str_opt`
|
|
Then STDERR should be:
|
|
"""
|
|
Error: Could not get 'str_opt' option. Does it exist?
|
|
"""
|
|
|
|
# Integer values
|
|
When I run `wp option update blog_public 1`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option update blog_public 0`
|
|
Then STDOUT should contain:
|
|
"""
|
|
Success: Updated 'blog_public' option.
|
|
"""
|
|
|
|
When I run the previous command again
|
|
Then STDOUT should contain:
|
|
"""
|
|
Success: Value passed for 'blog_public' option is unchanged.
|
|
"""
|
|
|
|
When I run `wp option get blog_public`
|
|
Then STDOUT should be:
|
|
"""
|
|
0
|
|
"""
|
|
|
|
# JSON values
|
|
When I run `wp option set json_opt '[ 1, 2 ]' --format=json`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run the previous command again
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option get json_opt --format=json`
|
|
Then STDOUT should be:
|
|
"""
|
|
[1,2]
|
|
"""
|
|
|
|
# Reading from files
|
|
Given a value.json file:
|
|
"""
|
|
{
|
|
"foo": "bar",
|
|
"list": [1, 2, 3]
|
|
}
|
|
"""
|
|
When I run `wp option set foo --format=json < value.json`
|
|
And I run `wp option get foo --format=json`
|
|
Then STDOUT should be JSON containing:
|
|
"""
|
|
{
|
|
"foo": "bar",
|
|
"list": [1, 2, 3]
|
|
}
|
|
"""
|
|
|
|
@require-wp-4.2
|
|
@less-than-wp-6.6
|
|
Scenario: Update autoload value for custom option
|
|
Given a WP install
|
|
And I run `wp option add hello world --autoload=no`
|
|
|
|
When I run `wp option update hello universe`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option list --search='hello' --fields=option_name,option_value,autoload`
|
|
Then STDOUT should be a table containing rows:
|
|
| option_name | option_value | autoload |
|
|
| hello | universe | no |
|
|
|
|
When I run `wp option update hello island --autoload=yes`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option list --search='hello' --fields=option_name,option_value,autoload`
|
|
Then STDOUT should be a table containing rows:
|
|
| option_name | option_value | autoload |
|
|
| hello | island | yes |
|
|
|
|
@require-wp-6.6
|
|
Scenario: Update autoload value for custom option
|
|
Given a WP install
|
|
And I run `wp option add hello world --autoload=off`
|
|
|
|
When I run `wp option update hello universe`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option list --search='hello' --fields=option_name,option_value,autoload`
|
|
Then STDOUT should be a table containing rows:
|
|
| option_name | option_value | autoload |
|
|
| hello | universe | off |
|
|
|
|
When I run `wp option update hello island --autoload=on`
|
|
Then STDOUT should not be empty
|
|
|
|
When I run `wp option list --search='hello' --fields=option_name,option_value,autoload`
|
|
Then STDOUT should be a table containing rows:
|
|
| option_name | option_value | autoload |
|
|
| hello | island | on |
|
|
|
|
@require-wp-4.2
|
|
@less-than-wp-6.6
|
|
Scenario: Managed autoloaded options
|
|
Given a WP install
|
|
|
|
When I run `wp option add wp_autoload_1 enabled --autoload=yes`
|
|
Then STDOUT should be:
|
|
"""
|
|
Success: Added 'wp_autoload_1' option.
|
|
"""
|
|
And STDERR should be empty
|
|
|
|
When I run `wp option add wp_autoload_2 implicit`
|
|
Then STDOUT should be:
|
|
"""
|
|
Success: Added 'wp_autoload_2' option.
|
|
"""
|
|
And STDERR should be empty
|
|
|
|
When I run `wp option add wp_autoload_3 disabled --autoload=no`
|
|
Then STDOUT should be:
|
|
"""
|
|
Success: Added 'wp_autoload_3' option.
|
|
"""
|
|
And STDERR should be empty
|
|
|
|
When I run `wp option list --search='wp_autoload*' --fields=option_name,option_value,autoload`
|
|
Then STDOUT should be a table containing rows:
|
|
| option_name | option_value | autoload |
|
|
| wp_autoload_1 | enabled | yes |
|
|
| wp_autoload_2 | implicit | yes |
|
|
| wp_autoload_3 | disabled | no |
|
|
|
|
When I run `wp option update wp_autoload_1 disabled --autoload=no`
|
|
Then STDOUT should be:
|
|
"""
|
|
Success: Updated 'wp_autoload_1' option.
|
|
"""
|
|
And STDERR should be empty
|
|
|
|
When I run `wp option update wp_autoload_2 implicit2`
|
|
Then STDOUT should be:
|
|
"""
|
|
Success: Updated 'wp_autoload_2' option.
|
|
"""
|
|
And STDERR should be empty
|
|
|
|
When I run `wp option update wp_autoload_3 enabled --autoload=yes`
|
|
Then STDOUT should be:
|
|
"""
|
|
Success: Updated 'wp_autoload_3' option.
|
|
"""
|
|
And STDERR should be empty
|
|
|
|
When I run `wp option list --search='wp_autoload*' --fields=option_name,option_value,autoload`
|
|
Then STDOUT should be a table containing rows:
|
|
| option_name | option_value | autoload |
|
|
| wp_autoload_1 | disabled | no |
|
|
| wp_autoload_2 | implicit2 | yes |
|
|
| wp_autoload_3 | enabled | yes |
|
|
|
|
Scenario: Extra removetrailingslash sanitization for whitelisted options
|
|
Given a WP install
|
|
|
|
When I run `wp option update home 'http://localhost/'`
|
|
Then STDOUT should be:
|
|
"""
|
|
Success: Updated 'home' option.
|
|
"""
|
|
|
|
When I run `wp option update home 'http://localhost/'`
|
|
Then STDOUT should be:
|
|
"""
|
|
Success: Value passed for 'home' option is unchanged.
|
|
"""
|
|
|
|
Scenario: Bad values for autoload
|
|
Given a WP install
|
|
When I run `wp option add str_opt 'bar'`
|
|
Then STDOUT should not be empty
|
|
|
|
When I try `wp option list --search='auto_opt' --autoload`
|
|
Then STDOUT should not be empty
|
|
And STDERR should be:
|
|
"""
|
|
Warning: --autoload parameter needs a value
|
|
"""
|
|
And the return code should be 0
|
|
|
|
When I try `wp option list --search='auto_opt' --autoload=nope`
|
|
Then STDOUT should be empty
|
|
And STDERR should contain:
|
|
"""
|
|
Error: Value of '--autoload' should be
|
|
"""
|
|
And the return code should be 1
|
|
|
|
When I try `wp option add str_opt_foo 'bar' --autoload`
|
|
Then STDOUT should not be empty
|
|
And STDERR should be:
|
|
"""
|
|
Warning: --autoload parameter needs a value
|
|
"""
|
|
And the return code should be 0
|
|
|
|
When I try `wp option add str_opt_foo 'bar' --autoload=bad`
|
|
Then STDOUT should be empty
|
|
And STDERR should contain:
|
|
"""
|
|
Error: Parameter errors:
|
|
"""
|
|
And the return code should be 1
|