From c013727ebe9491d4058111024f0051c2f4e0ab21 Mon Sep 17 00:00:00 2001 From: Drew Jaynes Date: Wed, 25 May 2016 18:30:57 +0000 Subject: [PATCH] Posts: Add test coverage for `get_preview_post_link()`. Props swissspidy. Fixes #35915. git-svn-id: https://develop.svn.wordpress.org/trunk@37566 602fd350-edb4-49c9-b593-d223f7449a82 --- .../phpunit/tests/link/getPreviewPostLink.php | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 tests/phpunit/tests/link/getPreviewPostLink.php diff --git a/tests/phpunit/tests/link/getPreviewPostLink.php b/tests/phpunit/tests/link/getPreviewPostLink.php new file mode 100644 index 0000000000..40d1ee9614 --- /dev/null +++ b/tests/phpunit/tests/link/getPreviewPostLink.php @@ -0,0 +1,66 @@ +post->create(); + + $this->assertEquals( add_query_arg( 'preview', 'true', get_permalink( $post ) ), get_preview_post_link( $post) ); + } + + public function test_get_preview_post_link_should_add_additional_query_vars() { + $post = self::factory()->post->create(); + + $expected = add_query_arg( array( + 'foo' => 'bar', + 'bar' => 'baz', + 'preview' => 'true', + ), get_permalink( $post ) ); + + $this->assertEquals( $expected, get_preview_post_link( $post, array( + 'foo' => 'bar', + 'bar' => 'baz', + ) ) ); + } + + public function test_get_preview_post_link_should_use_custom_base_preview_link() { + $post = self::factory()->post->create(); + + $expected = 'https://google.com/?foo=bar&bar=baz&preview=true'; + + $this->assertEquals( $expected, get_preview_post_link( $post, array( + 'foo' => 'bar', + 'bar' => 'baz', + ), 'https://google.com/' ) ); + } + + public function test_get_preview_post_link_should_return_null_for_non_existent_post() { + $this->assertNull( get_preview_post_link() ); + $this->assertNull( get_preview_post_link( 9999 ) ); + $this->assertNull( get_preview_post_link( 'foo' ) ); + } + + public function test_get_preview_post_link_for_global_post() { + $post = self::factory()->post->create_and_get(); + + $GLOBALS['post'] = $post; + + $this->assertEquals( add_query_arg( 'preview', 'true', get_permalink( $post ) ), get_preview_post_link() ); + } + + public function test_get_preview_post_link_should_return_empty_string_for_non_viewable_post_type() { + $post_type = register_post_type( rand_str(12), array( + 'public' => false, + ) ); + + $post = self::factory()->post->create( array( + 'post_type' => $post_type->name + ) ); + + $this->assertSame( '', get_preview_post_link( $post ) ); + } + +}