Skip to content
Snippets Groups Projects

Add block-editor support

Merged Erick Hitter requested to merge fix/gutenberg into master
Compare and Show latest version
2 files
+ 352
5
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -27,6 +27,7 @@ class Test_Automatically_Paginate_Posts extends WP_UnitTestCase {
parent::set_up();
$this->_instance = new Automatically_Paginate_Posts();
$this->_instance->action_init();
}
/**
@@ -74,4 +75,317 @@ class Test_Automatically_Paginate_Posts extends WP_UnitTestCase {
'Failed to assert that settings link is added for this plugin.'
);
}
/**
* Test `the_post` filtering when in admin.
*
* @covers ::filter_the_posts()
*/
public function test_filter_the_posts_admin() {
$old_screen = $GLOBALS['current_screen'];
$GLOBALS['current_screen'] = new Test_Autopaging_Admin();
$test_posts = array(
'unit-test',
);
$this->assertEquals(
$test_posts,
$this->_instance->filter_the_posts( $test_posts ),
'Failed to assert that posts are not modified in admin.'
);
$GLOBALS['current_screen'] = $old_screen;
}
/**
* Test modifications to various posts.
*
* @covers ::filter_the_posts()
* @dataProvider data_provider_filter_the_posts
*
* @param string $expected Expected post content.
* @param array $input Test arguments.
*/
public function test_filter_the_posts( $expected, $input ) {
$post = $this->factory->post->create_and_get( $input['post_args'] );
// Bug in WPCS causes errors when `use` is used.
// phpcs:disable WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceAfterStructureOpen, WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceBeforeOpenParenthesis
add_filter(
'pre_option_pages',
static function() use( $input ) {
return $input['type'];
}
);
add_filter(
'autopaging_num_pages',
static function() use( $input ) {
return $input['num_pages'];
}
);
add_filter(
'autopaging_num_words',
static function() use( $input ) {
return $input['num_words'];
}
);
// phpcs:enable WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceAfterStructureOpen, WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceBeforeOpenParenthesis
$this->assertEquals(
$expected,
$this->_instance->filter_the_posts( array( $post ) )[0]->post_content
);
}
/**
* Data provide to test post filtering.
*
* @return array
*/
public function data_provider_filter_the_posts() {
return array(
'Unsupported type' => array(
"I am a page.\r\n\r\nI should not be paginated.",
array(
'post_args' => array(
'post_type' => 'page',
'post_content' => "I am a page.\r\n\r\nI should not be paginated.",
),
'type' => 'pages',
'num_pages' => 0,
'num_words' => 0,
),
),
'Already paginated' => array(
"1\r\n\r\n<!--nextpage-->\r\n\r\n2\r\n\r\n3",
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => "1\r\n\r\n<!--nextpage-->\r\n\r\n2\r\n\r\n3",
),
'type' => 'pages',
'num_pages' => 0,
'num_words' => 0,
),
),
'Classic post, two pages, split to pages' => array(
"1\r\n\r\n2<!--nextpage-->\r\n\r\n3",
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => "1\r\n\r\n2\r\n\r\n3",
),
'type' => 'pages',
'num_pages' => 2,
'num_words' => 0,
),
),
'Classic post, three pages, split to pages' => array(
"1<!--nextpage-->\r\n\r\n2<!--nextpage-->\r\n\r\n3",
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => "1\r\n\r\n2\r\n\r\n3",
),
'type' => 'pages',
'num_pages' => 3,
'num_words' => 0,
),
),
'Classic post, one page, split on words' => array(
"1\r\n\r\n2\r\n\r\n3\r\n\r\n4",
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => "1\r\n\r\n2\r\n\r\n3\r\n\r\n4",
),
'type' => 'words',
'num_pages' => 0,
'num_words' => 5,
),
),
'Classic post, two pages, split on words' => array(
"1\r\n\r\n2<!--nextpage-->\r\n\r\n3\r\n\r\n4",
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => "1\r\n\r\n2\r\n\r\n3\r\n\r\n4",
),
'type' => 'words',
'num_pages' => 0,
'num_words' => 2,
),
),
'Classic post, three pages, split on words' => array(
"1<!--nextpage-->\r\n\r\n2<!--nextpage-->\r\n\r\n3<!--nextpage-->\r\n\r\n4",
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => "1\r\n\r\n2\r\n\r\n3\r\n\r\n4",
),
'type' => 'words',
'num_pages' => 0,
'num_words' => 1,
),
),
'Block-editor post, two pages, split to pages' => array(
'<!-- wp:paragraph -->
<p>1</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>2</p>
<!-- /wp:paragraph --><!-- wp:nextpage -->
<!--nextpage-->
<!-- /wp:nextpage -->
<!-- wp:paragraph -->
<p>3</p>
<!-- /wp:paragraph -->',
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => '<!-- wp:paragraph -->
<p>1</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>2</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>3</p>
<!-- /wp:paragraph -->',
),
'type' => 'pages',
'num_pages' => 2,
'num_words' => 0,
),
),
'Block-editor post, three pages, split to pages' => array(
'<!-- wp:paragraph -->
<p>1</p>
<!-- /wp:paragraph -->
<!-- wp:nextpage -->
<!--nextpage-->
<!-- /wp:nextpage --><!-- wp:paragraph -->
<p>2</p>
<!-- /wp:paragraph -->
<!-- wp:nextpage -->
<!--nextpage-->
<!-- /wp:nextpage --><!-- wp:paragraph -->
<p>3</p>
<!-- /wp:paragraph -->',
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => '<!-- wp:paragraph -->
<p>1</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>2</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>3</p>
<!-- /wp:paragraph -->',
),
'type' => 'pages',
'num_pages' => 3,
'num_words' => 0,
),
),
'Block-editor post, two pages, split on words' => array(
'<!-- wp:paragraph -->
<p>1</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>2</p>
<!-- /wp:paragraph --><!-- wp:nextpage -->
<!--nextpage-->
<!-- /wp:nextpage -->
<!-- wp:paragraph -->
<p>3</p>
<!-- /wp:paragraph -->',
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => '<!-- wp:paragraph -->
<p>1</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>2</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>3</p>
<!-- /wp:paragraph -->',
),
'type' => 'words',
'num_pages' => 0,
'num_words' => 2,
),
),
'Block-editor post, three pages, split on words' => array(
'<!-- wp:paragraph -->
<p>1</p>
<!-- /wp:paragraph --><!-- wp:nextpage -->
<!--nextpage-->
<!-- /wp:nextpage -->
<!-- wp:paragraph -->
<p>2</p>
<!-- /wp:paragraph --><!-- wp:nextpage -->
<!--nextpage-->
<!-- /wp:nextpage -->
<!-- wp:paragraph -->
<p>3</p>
<!-- /wp:paragraph -->',
array(
'post_args' => array(
'post_type' => 'post',
'post_content' => '<!-- wp:paragraph -->
<p>1</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>2</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>3</p>
<!-- /wp:paragraph -->',
),
'type' => 'words',
'num_pages' => 0,
'num_words' => 1,
),
),
);
}
}
/**
* Test class for admin-related restrictions.
*/
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedClassFound
class Test_Autopaging_Admin {
/**
* Mock being in wp-admin.
*
* @return bool
*/
public function in_admin() {
return true;
}
}
Loading