Feature: Export content.
Scenario: Basic export
Given a WP install
When I run `wp export`
Then STDOUT should contain:
"""
All done with export.
"""
Scenario: Export argument validator
Given a WP install
When I try `wp export --post_type=wp-cli-party`
Then STDERR should contain:
"""
Warning: The post type wp-cli-party does not exist.
"""
And the return code should be 1
When I try `wp export --author=invalid-author`
Then STDERR should contain:
"""
Warning: Could not find a matching author for invalid-author
"""
And the return code should be 1
When I try `wp export --start_date=invalid-date`
Then STDERR should contain:
"""
Warning: The start_date invalid-date is invalid.
"""
And the return code should be 1
When I try `wp export --end_date=invalid-date`
Then STDERR should contain:
"""
Warning: The end_date invalid-date is invalid.
"""
And the return code should be 1
@require-wp-5.2
Scenario: Export with post_type and post_status argument
Given a WP install
When I run `wp plugin install wordpress-importer --activate`
Then STDERR should not contain:
"""
Warning:
"""
When I run `wp site empty --yes`
And I run `wp post generate --post_type=page --post_status=draft --count=10`
And I run `wp post list --post_type=page --post_status=draft --format=count`
Then STDOUT should be:
"""
10
"""
When I run `wp export --post_type=page --post_status=draft`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp post list --post_type=page --post_status=draft --format=count`
Then STDOUT should be:
"""
0
"""
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=page --post_status=draft --format=count`
Then STDOUT should be:
"""
10
"""
@require-wp-5.2
Scenario: Export a comma-separated list of post types
Given a WP install
When I run `wp plugin install wordpress-importer --activate`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp site empty --yes`
And I run `wp post generate --post_type=page --count=10`
And I run `wp post generate --post_type=post --count=10`
And I run `wp post generate --post_type=attachment --count=10`
And I run `wp post list --post_type=page,post,attachment --format=count`
Then STDOUT should be:
"""
30
"""
When I run `wp export --post_type=page,post`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp post list --format=count`
Then STDOUT should be:
"""
0
"""
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=page,post --format=count`
Then STDOUT should be:
"""
20
"""
When I run `wp post list --post_type=page --format=count`
Then STDOUT should be:
"""
10
"""
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
10
"""
@require-wp-5.2
Scenario: Export only one post
Given a WP install
When I run `wp plugin install wordpress-importer --activate`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp post generate --count=10`
And I run `wp post list --format=count`
Then STDOUT should be:
"""
11
"""
When I run `wp post create --post_title='Post with attachment' --porcelain`
Then STDOUT should be a number
And save STDOUT as {ATTACHMENT_POST_ID}
When I run `wp post create --post_type=attachment --porcelain`
Then STDOUT should be a number
And save STDOUT as {ATTACHMENT_ID}
When I run `wp post update {ATTACHMENT_ID} --post_parent={ATTACHMENT_POST_ID} --porcelain`
Then STDOUT should contain:
"""
Success: Updated post {ATTACHMENT_ID}
"""
When I run `wp post create --post_title='Test post' --porcelain`
Then STDOUT should be a number
And save STDOUT as {POST_ID}
When I run `wp comment generate --count=2 --post_id={POST_ID}`
And I run `wp comment list --format=count`
Then STDOUT should contain:
"""
3
"""
When I run `wp export --post__in={POST_ID}`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
And the {EXPORT_FILE} file should not contain:
"""
{ATTACHMENT_ID}
"""
And the {EXPORT_FILE} file should not contain:
"""
attachment
"""
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
1
"""
When I run `wp comment list --format=count`
Then STDOUT should be:
"""
2
"""
@require-wp-5.2
Scenario: Export multiple posts, separated by spaces
Given a WP install
When I run `wp plugin install wordpress-importer --activate`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp post create --post_title='Test post' --porcelain`
Then STDOUT should be a number
And save STDOUT as {POST_ID}
When I run `wp post create --post_title='Test post 2' --porcelain`
Then STDOUT should be a number
And save STDOUT as {POST_ID_TWO}
When I run `wp export --post__in="{POST_ID} {POST_ID_TWO}"`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
2
"""
@require-wp-5.2
Scenario: Export multiple posts, separated by comma
Given a WP install
When I run `wp plugin install wordpress-importer --activate`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp post create --post_title='Test post' --porcelain`
Then STDOUT should be a number
And save STDOUT as {POST_ID}
When I run `wp post create --post_title='Test post 2' --porcelain`
Then STDOUT should be a number
And save STDOUT as {POST_ID_TWO}
When I run `wp export --post__in="{POST_ID},{POST_ID_TWO}"`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
2
"""
@require-wp-5.2
Scenario: Export posts within a given date range
Given a WP install
When I run `wp plugin install wordpress-importer --activate`
Then STDERR should not contain:
"""
Warning:
"""
When I run `wp site empty --yes`
And I run `wp post generate --post_type=post --post_date=2013-08-01 --count=10`
And I run `wp post generate --post_type=post --post_date=2013-08-02 --count=10`
And I run `wp post generate --post_type=post --post_date=2013-08-03 --count=10`
And I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
30
"""
When I run `wp export --post_type=post --start_date=2013-08-02 --end_date=2013-08-02`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
0
"""
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
10
"""
@require-wp-5.2
Scenario: Export posts from a given category
Given a WP install
And I run `wp site empty --yes`
And I run `wp plugin install wordpress-importer --activate`
When I run `wp term create category Apple --porcelain`
Then STDOUT should be a number
And save STDOUT as {APPLE_TERM_ID}
When I run `wp term create category Pear --porcelain`
Then STDOUT should be a number
And save STDOUT as {PEAR_TERM_ID}
When I run `wp post create --post_type=post --post_title='Apple Post' --post_category={APPLE_TERM_ID} --porcelain`
Then STDOUT should be a number
And save STDOUT as {APPLE_POST_ID}
When I run `wp post create --post_type=post --post_title='Pear Post' --post_category={PEAR_TERM_ID} --porcelain`
Then STDOUT should be a number
And save STDOUT as {PEAR_POST_ID}
When I run `wp export --post_type=post --category=apple`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
Then the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should not contain:
"""
"""
And the {EXPORT_FILE} file should not contain:
"""
"""
When I run `wp export --post_type=post --category={PEAR_TERM_ID}`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
Then the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should not contain:
"""
"""
And the {EXPORT_FILE} file should not contain:
"""
"""
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
0
"""
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=post`
Then STDOUT should contain:
"""
Pear Post
"""
And STDOUT should not contain:
"""
Apple Post
"""
@require-wp-5.2
Scenario: Export posts from a given author
Given a WP install
And I run `wp site empty --yes`
And I run `wp plugin install wordpress-importer --activate`
When I run `wp user create john john.doe@example.com --porcelain`
Then STDOUT should be a number
And save STDOUT as {JOHN_USER_ID}
When I run `wp user create jane jane.doe@example.com --porcelain`
Then STDOUT should be a number
And save STDOUT as {JANE_USER_ID}
When I run `wp post create --post_type=post --post_title='Post by John' --post_author={JOHN_USER_ID} --porcelain`
Then STDOUT should be a number
And save STDOUT as {JOHN_POST_ID}
When I run `wp post create --post_type=post --post_title='Post by Jane' --post_author={JANE_USER_ID} --porcelain`
Then STDOUT should be a number
And save STDOUT as {JANE_POST_ID}
When I run `wp export --post_type=post --author={JANE_USER_ID}`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
Then the {EXPORT_FILE} file should contain:
"""
jane.doe@example.com
"""
And the {EXPORT_FILE} file should contain:
"""
Post by Jane
"""
And the {EXPORT_FILE} file should not contain:
"""
john.doe@example.com
"""
And the {EXPORT_FILE} file should not contain:
"""
Post by John
"""
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp user delete {JOHN_USER_ID} {JANE_USER_ID} --yes`
Then STDOUT should contain:
"""
Success: Removed user {JOHN_USER_ID} from https://example.com.
"""
And STDOUT should contain:
"""
Success: Removed user {JANE_USER_ID} from https://example.com.
"""
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
0
"""
When I run `wp import {EXPORT_FILE} --authors=create`
Then STDOUT should not be empty
When I run `wp post list --post_type=post`
Then STDOUT should contain:
"""
Post by Jane
"""
And STDOUT should not contain:
"""
Post by John
"""
When I run `wp user list`
Then STDOUT should contain:
"""
jane.doe@example.com
"""
And STDOUT should not contain:
"""
john.doe@example.com
"""
@require-wp-5.2
Scenario: Export posts should include user information
Given a WP install
And I run `wp plugin install wordpress-importer --activate`
And I run `wp user create user user@user.com --role=editor --display_name="Test User"`
And I run `wp post generate --post_type=post --count=10 --post_author=user`
When I run `wp export`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
Then the {EXPORT_FILE} file should contain:
"""
"""
When I run `wp site empty --yes`
And I run `wp user list --field=user_login | xargs -n 1 wp user delete --yes`
Then STDOUT should not be empty
When I run `wp import {EXPORT_FILE} --authors=create`
Then STDOUT should not be empty
When I run `wp user get user --field=display_name`
Then STDOUT should be:
"""
Test User
"""
@require-wp-5.2
Scenario: Export posts from a given starting post ID
Given a WP install
When I run `wp plugin install wordpress-importer --activate`
Then STDERR should not contain:
"""
Warning:
"""
When I run `wp site empty --yes`
And I run `wp post generate --post_type=post --count=10`
And I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
10
"""
When I run `wp export --start_id=6`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
0
"""
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
5
"""
@require-wp-5.2
Scenario: Exclude a specific post type from export
Given a WP install
And I run `wp site empty --yes`
And I run `wp post create --post_title="Some page" --post_type=page`
And I run `wp post generate --post_type=post --count=10`
And I run `wp plugin install wordpress-importer --activate`
When I run `wp post list --post_type=any --format=count`
Then STDOUT should be:
"""
11
"""
When I run `wp export --post_type__not_in=post`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp post list --post_type=any --format=count`
Then STDOUT should be:
"""
0
"""
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=any --format=count`
Then STDOUT should be:
"""
1
"""
When I run `wp post generate --post_type=post --count=10`
And I run `wp post list --post_type=any --format=count`
Then STDOUT should be:
"""
11
"""
When I run `wp export --post_type__not_in=post,page`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp post list --post_type=any --format=count`
Then STDOUT should be:
"""
0
"""
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --post_type=any --format=count`
Then STDOUT should be:
"""
0
"""
Scenario: Export posts using --max_num_posts
Given a WP install
And I run `wp site empty --yes`
And a count-instances.php file:
"""
' . $args[0] . '<\/wp:post_type>#', file_get_contents( 'php://stdin' ), $matches );
"""
When I run `wp post generate --post_type=post --count=10`
And I run `wp export --post_type=post --max_num_posts=1 --stdout | wp --skip-wordpress eval-file count-instances.php post`
Then STDOUT should contain:
"""
count=1
"""
When I run `wp post generate --post_type=post --count=10`
And I run `wp post generate --post_type=attachment --count=10`
And I run `wp export --max_num_posts=1 --stdout | wp --skip-wordpress eval-file count-instances.php "(post|attachment)"`
Then STDOUT should contain:
"""
count=1
"""
When I run `wp export --max_num_posts=5 --stdout | wp --skip-wordpress eval-file count-instances.php "(post|attachment)"`
Then STDOUT should contain:
"""
count=5
"""
Scenario: Export a site with a custom filename format
Given a WP install
When I run `wp export --filename_format='foo-bar.{date}.{n}.xml'`
Then STDOUT should contain:
"""
foo-bar.
"""
And STDOUT should contain:
"""
000.xml
"""
@require-wp-5.2
Scenario: Export a site and skip the comments
Given a WP install
And I run `wp comment generate --post_id=1 --count=2`
And I run `wp plugin install wordpress-importer --activate`
When I run `wp comment list --format=count`
Then STDOUT should contain:
"""
3
"""
When I run `wp export --skip_comments`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
When I run `wp site empty --yes`
Then STDOUT should not be empty
When I run `wp post list --format=count`
Then STDOUT should contain:
"""
0
"""
When I run `wp comment list --format=count`
Then STDOUT should contain:
"""
0
"""
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should not be empty
When I run `wp post list --format=count`
Then STDOUT should contain:
"""
1
"""
When I run `wp comment list --format=count`
Then STDOUT should contain:
"""
0
"""
Scenario: Export splitting the dump
Given a WP install
When I run `wp export --max_file_size=0.0001 --filename_format='{n}.xml'`
Then STDOUT should contain:
"""
001.xml
"""
And STDERR should be empty
When I run `cat 000.xml`
Then STDOUT should contain:
"""
"""
When I run `cat 001.xml`
Then STDOUT should contain:
"""
"""
Scenario: Export splitting the dump with a bad --include_once value
Given a WP install
And I run `wp term generate post_tag --count=1`
When I try `wp export --max_file_size=0.0001 --include_once=invalid --filename_format='{n}.xml'`
Then STDERR should contain:
"""
Warning: include_once should be comma-separated values for optional before_posts sections
"""
Scenario: Export splitting the dump with a single --include_once value
Given a WP install
And I run `wp term generate post_tag --count=1`
When I run `wp export --max_file_size=0.0001 --include_once=categories --filename_format='{n}.xml'`
Then STDOUT should contain:
"""
001.xml
"""
And STDERR should be empty
When I run `cat 000.xml`
Then STDOUT should contain:
"""
"""
And STDOUT should contain:
"""
"""
When I run `cat 001.xml`
Then STDOUT should not contain:
"""
"""
And STDOUT should contain:
"""
"""
Scenario: Export splitting the dump with multiple --include_once values
Given a WP install
And I run `wp term generate post_tag --count=1`
When I run `wp export --max_file_size=0.0001 --include_once=categories,tags --filename_format='{n}.xml'`
Then STDOUT should contain:
"""
001.xml
"""
And STDERR should be empty
When I run `cat 000.xml`
Then STDOUT should contain:
"""
"""
And STDOUT should contain:
"""
"""
When I run `cat 001.xml`
Then STDOUT should not contain:
"""
"""
And STDOUT should not contain:
"""
"""
Scenario: Export without splitting the dump
Given a WP install
# Make export file > 15MB so will split by default. Need to split into 4 * 4MB to stay below 10% of default redo log size of 48MB, otherwise get MySQL error.
And I run `wp db query "INSERT INTO wp_postmeta (post_id, meta_key, meta_value) VALUES (1, '_dummy', REPEAT( 'A', 4 * 1024 * 1024 ) );"`
And I run `wp db query "INSERT INTO wp_postmeta (post_id, meta_key, meta_value) VALUES (1, '_dummy', REPEAT( 'A', 4 * 1024 * 1024 ) );"`
And I run `wp db query "INSERT INTO wp_postmeta (post_id, meta_key, meta_value) VALUES (1, '_dummy', REPEAT( 'A', 4 * 1024 * 1024 ) );"`
And I run `wp db query "INSERT INTO wp_postmeta (post_id, meta_key, meta_value) VALUES (1, '_dummy', REPEAT( 'A', 4 * 1024 * 1024 ) );"`
When I run `wp export`
Then STDOUT should contain:
"""
000.xml
"""
And STDOUT should contain:
"""
001.xml
"""
And STDERR should be empty
When I run `wp export --max_file_size=0`
Then STDOUT should contain:
"""
000.xml
"""
And STDOUT should contain:
"""
001.xml
"""
And STDERR should be empty
When I run `wp export --max_file_size=-1`
Then STDOUT should contain:
"""
000.xml
"""
And STDOUT should not contain:
"""
001.xml
"""
And STDERR should be empty
@require-wp-5.2
Scenario: Export a site to stdout
Given a WP install
And I run `wp comment generate --post_id=1 --count=1`
And I run `wp plugin install wordpress-importer --activate`
When I run `wp export --stdout > export.xml`
Then STDOUT should be empty
And the return code should be 0
When I run `cat export.xml`
Then STDOUT should not contain:
"""
Writing to file
"""
And STDOUT should contain:
"""
"""
When I run `wp site empty --yes`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp comment list --format=count`
Then STDOUT should be:
"""
0
"""
When I run `wp import export.xml --authors=skip`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp comment list --format=count`
Then STDOUT should be:
"""
2
"""
Scenario: Error when --stdout and --dir are both provided
Given a WP install
When I try `wp export --stdout --dir=foo`
Then STDERR should be:
"""
Error: --stdout and --dir cannot be used together.
"""
And the return code should be 1
@require-wp-5.2
Scenario: Export individual post with attachments
Given a WP install
And I run `wp plugin install wordpress-importer --activate`
And I run `wp site empty --yes`
When I run `wp post generate --count=10`
And I run `wp post list --format=count`
Then STDOUT should be:
"""
10
"""
When I run `wp post create --post_title='Post with attachment to export' --porcelain`
Then STDOUT should be a number
And save STDOUT as {EXPORT_ATTACHMENT_POST_ID}
When I run `wp media import 'http://wp-cli.org/behat-data/codeispoetry.png' --post_id={EXPORT_ATTACHMENT_POST_ID} --porcelain`
Then STDOUT should be a number
And save STDOUT as {EXPORT_ATTACHMENT_ID}
When I run `wp post create --post_title='Post with attachment to ignore' --porcelain`
Then STDOUT should be a number
And save STDOUT as {IGNORE_ATTACHMENT_POST_ID}
When I run `wp media import 'http://wp-cli.org/behat-data/white-150-square.jpg' --post_id={IGNORE_ATTACHMENT_POST_ID} --porcelain`
Then STDOUT should be a number
And save STDOUT as {IGNORE_ATTACHMENT_ID}
When I run `wp post list --post_type=post --format=count`
Then STDOUT should be:
"""
12
"""
When I run `wp post list --post_type=attachment --format=count`
Then STDOUT should be:
"""
2
"""
When I run `wp export --post__in={EXPORT_ATTACHMENT_POST_ID} --with_attachments`
Then save STDOUT 'Writing to file %s' as {EXPORT_FILE}
And the {EXPORT_FILE} file should contain:
"""
{EXPORT_ATTACHMENT_POST_ID}
"""
And the {EXPORT_FILE} file should contain:
"""
attachment
"""
And the {EXPORT_FILE} file should contain:
"""
{EXPORT_ATTACHMENT_ID}
"""
And the {EXPORT_FILE} file should contain:
"""
_wp_attachment_metadata
"""
And the {EXPORT_FILE} file should contain:
"""
codeispoetry.png";s:
"""
And the {EXPORT_FILE} file should contain:
"""
_wp_attached_file
"""
And the {EXPORT_FILE} file should contain:
"""
codeispoetry.png]]>
"""
And the {EXPORT_FILE} file should not contain:
"""
_edit_lock
"""
And the {EXPORT_FILE} file should not contain:
"""
{IGNORE_ATTACHMENT_POST_ID}
"""
And the {EXPORT_FILE} file should not contain:
"""
{IGNORE_ATTACHMENT_ID}
"""
And the {EXPORT_FILE} file should not contain:
"""
white-150-square.jpg]]>
"""
And the {EXPORT_FILE} file should not contain:
"""
white-150-square.jpg";s:
"""
@require-wp-5.2
Scenario: Export categories, tags and terms
Given a WP install
And a wp-content/mu-plugins/register-region-taxonomy.php file:
"""
'Region',
'rewrite' => [ 'slug' => 'region' ],
'hierarchical' => true,
] );
}
add_action( 'init', 'wp_cli_region_taxonomy' );
"""
And I run `wp plugin install wordpress-importer --activate`
And I run `wp site empty --yes`
When I run `wp term create category News --description="A news article" --porcelain`
Then STDOUT should be a number
And save STDOUT as {EXPORT_CATEGORY_ID}
When I run `wp term create category National --parent={EXPORT_CATEGORY_ID} --porcelain`
Then STDOUT should be a number
And save STDOUT as {EXPORT_SUBCATEGORY_ID}
When I run `wp term create post_tag Tech --description="Technology-related" --porcelain`
Then STDOUT should be a number
And save STDOUT as {EXPORT_TAG_ID}
When I run `wp term create region Europe --description="Concerns Europe" --porcelain`
Then STDOUT should be a number
And save STDOUT as {EXPORT_TERM_ID}
When I run `wp post create --post_title='Breaking News' --post_category={EXPORT_CATEGORY_ID} --tags_input={EXPORT_TAG_ID} --porcelain`
Then STDOUT should be a number
And save STDOUT as {EXPORT_POST_ID}
When I run `wp post term add {EXPORT_POST_ID} region {EXPORT_TERM_ID}`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp export --post__in={EXPORT_POST_ID}`
Then save STDOUT 'Writing to file %s' as {EXPORT_FILE}
And the {EXPORT_FILE} file should contain:
"""
{EXPORT_POST_ID}
"""
And the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should contain:
"""
{EXPORT_CATEGORY_ID}
"""
And the {EXPORT_FILE} file should contain:
"""
news
"""
And the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should contain:
"""
{EXPORT_TAG_ID}
"""
And the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should contain:
"""
{EXPORT_TERM_ID}
"""
And the {EXPORT_FILE} file should contain:
"""
"""
When I run `wp site empty --yes`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp post list`
Then STDOUT should not contain:
"""
Breaking News
"""
When I run `wp term list category`
Then STDOUT should not contain:
"""
News
"""
When I run `wp term list post_tag`
Then STDOUT should not contain:
"""
Tech
"""
When I run `wp term list region`
Then STDOUT should not contain:
"""
Europe
"""
When I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp post list`
Then STDOUT should contain:
"""
Breaking News
"""
When I run `wp term list category`
Then STDOUT should contain:
"""
News
"""
And STDOUT should contain:
"""
National
"""
When I run `wp term get category news --by=slug --field=id`
Then STDOUT should be a number
And save STDOUT as {IMPORT_CATEGORY_ID}
When I run `wp term get category national --by=slug --field=parent`
Then STDOUT should be:
"""
{IMPORT_CATEGORY_ID}
"""
When I run `wp term list post_tag`
Then STDOUT should contain:
"""
Tech
"""
When I run `wp term list region`
Then STDOUT should contain:
"""
Europe
"""
@require-wp-5.2
Scenario: Export posts should not include oembed_cache posts user information
Given a WP install
And I run `wp plugin install wordpress-importer --activate`
And I run `wp user create user user@user.com --role=editor --display_name="Test User"`
And I run `wp user create oembed_cache_user oembed_cache@user.com --role=editor --display_name="Oembed User"`
And I run `wp post generate --post_type=post --count=10 --post_author=user`
And I run `wp post generate --post_type=oembed_cache --count=1 --post_author=oembed_cache_user`
When I run `wp export`
And save STDOUT 'Writing to file %s' as {EXPORT_FILE}
Then the {EXPORT_FILE} file should contain:
"""
"""
And the {EXPORT_FILE} file should not contain:
"""
"""
When I run `wp site empty --yes`
And I run `wp user list --field=user_login | xargs -n 1 wp user delete --yes`
Then STDOUT should not be empty
When I run `wp import {EXPORT_FILE} --authors=create`
Then STDOUT should not be empty
When I run `wp user get user --field=display_name`
Then STDOUT should be:
"""
Test User
"""
@require-wp-5.2
Scenario: Allow export to proceed when orphaned terms are found
Given a WP install
And I run `wp term create category orphan --parent=1`
And I run `wp term create category parent`
And I run `wp term create category child --parent=3`
And I run `wp term create post_tag atag`
And I run `wp term create post_tag btag`
And I run `wp term create post_tag ctag`
And I run `wp db query "DELETE FROM wp_terms WHERE term_id = 1"`
When I run `wp export --allow_orphan_terms`
Then save STDOUT 'Writing to file %s' as {EXPORT_FILE}
And the {EXPORT_FILE} file should contain:
"""
orphan
"""
And the {EXPORT_FILE} file should contain:
"""
atag
"""
When I run `wp site empty --yes`
And I run `wp plugin install wordpress-importer --activate`
And I run `wp import {EXPORT_FILE} --authors=skip`
Then STDOUT should contain:
"""
Success:
"""
When I run `wp term get post_tag atag --by=slug --field=id`
Then STDOUT should be a number
When I run `wp term get post_tag btag --by=slug --field=id`
Then STDOUT should be a number
When I run `wp term get post_tag ctag --by=slug --field=id`
Then STDOUT should be a number
When I run `wp term get category parent --by=slug --field=id`
Then STDOUT should be a number
And save STDOUT as {EXPORT_CATEGORY_PARENT_ID}
When I run `wp term get category child --by=slug --field=parent`
Then STDOUT should be:
"""
{EXPORT_CATEGORY_PARENT_ID}
"""
When I run `wp term get category orphan --by=slug --field=parent`
Then STDOUT should be:
"""
0
"""
Scenario: Throw exception when orphaned terms are found
Given a WP install
And I run `wp term create category orphan --parent=1`
And I run `wp db query "DELETE FROM wp_terms WHERE term_id = 1"`
When I try `wp export`
Then STDERR should contain:
"""
Error: Term is missing a parent
"""