mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
See #38716 git-svn-id: https://develop.svn.wordpress.org/trunk@39172 602fd350-edb4-49c9-b593-d223f7449a82
255 lines
7.1 KiB
PHP
255 lines
7.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* A set of unit tests for functions in wp-includes/general-template.php
|
|
*
|
|
* @group template
|
|
* @group document-title
|
|
*/
|
|
class Tests_General_DocumentTitle extends WP_UnitTestCase {
|
|
|
|
public $blog_name;
|
|
public static $category_id;
|
|
public static $author_id;
|
|
public static $post_id;
|
|
|
|
public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
|
|
self::$category_id = $factory->category->create( array(
|
|
'name' => 'test_category',
|
|
) );
|
|
|
|
self::$author_id = $factory->user->create( array(
|
|
'role' => 'author',
|
|
'user_login' => 'test_author',
|
|
'description' => 'test_author',
|
|
) );
|
|
|
|
self::$post_id = $factory->post->create( array(
|
|
'post_author' => self::$author_id,
|
|
'post_status' => 'publish',
|
|
'post_title' => 'test_title',
|
|
'post_type' => 'post',
|
|
'post_date' => '2015-09-22 18:52:17',
|
|
'category' => self::$category_id,
|
|
) );
|
|
}
|
|
|
|
function setUp() {
|
|
parent::setUp();
|
|
|
|
add_action( 'after_setup_theme', array( $this, '_add_title_tag_support' ) );
|
|
|
|
$this->blog_name = get_option( 'blogname' );
|
|
|
|
setup_postdata( get_post( self::$post_id ) );
|
|
}
|
|
|
|
function tearDown() {
|
|
wp_reset_postdata();
|
|
parent::tearDown();
|
|
}
|
|
|
|
function _add_title_tag_support() {
|
|
add_theme_support( 'title-tag' );
|
|
}
|
|
|
|
function test__wp_render_title_tag() {
|
|
$this->go_to( '/' );
|
|
|
|
$this->expectOutputString( sprintf( "<title>%s – %s</title>\n", $this->blog_name, get_option( 'blogdescription' ) ) );
|
|
_wp_render_title_tag();
|
|
}
|
|
|
|
function test__wp_render_title_no_theme_support() {
|
|
$this->go_to( '/' );
|
|
|
|
remove_theme_support( 'title-tag' );
|
|
|
|
$this->expectOutputString( '' );
|
|
_wp_render_title_tag();
|
|
}
|
|
|
|
function test_short_circuiting_title() {
|
|
$this->go_to( '/' );
|
|
|
|
add_filter( 'pre_get_document_title', array( $this, '_short_circuit_title' ) );
|
|
|
|
$this->assertEquals( 'A Wild Title', wp_get_document_title() );
|
|
}
|
|
|
|
function _short_circuit_title( $title ) {
|
|
return 'A Wild Title';
|
|
}
|
|
|
|
function test_front_page_title() {
|
|
update_option( 'show_on_front', 'page' );
|
|
update_option( 'page_on_front', $this->factory->post->create( array( 'post_title' => 'front-page', 'post_type' => 'page' ) ) );
|
|
add_filter( 'document_title_parts', array( $this, '_front_page_title_parts' ) );
|
|
|
|
$this->go_to( '/' );
|
|
$this->assertEquals( sprintf( '%s – Just another WordPress site', $this->blog_name ), wp_get_document_title() );
|
|
|
|
update_option( 'show_on_front', 'posts' );
|
|
|
|
$this->go_to( '/' );
|
|
$this->assertEquals( sprintf( '%s – Just another WordPress site', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function _front_page_title_parts( $parts ) {
|
|
$this->assertArrayHasKey( 'title', $parts );
|
|
$this->assertArrayHasKey( 'tagline', $parts );
|
|
$this->assertArrayNotHasKey( 'site', $parts );
|
|
|
|
return $parts;
|
|
}
|
|
|
|
function test_home_title() {
|
|
$blog_page_id = $this->factory->post->create( array( 'post_title' => 'blog-page', 'post_type' => 'page' ) );
|
|
update_option( 'show_on_front', 'page' );
|
|
update_option( 'page_for_posts', $blog_page_id );
|
|
|
|
// Show page name on home page if it's not the front page.
|
|
$this->go_to( get_permalink( $blog_page_id ) );
|
|
$this->assertEquals( sprintf( 'blog-page – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function test_paged_title() {
|
|
$this->go_to( '?page=4' );
|
|
|
|
add_filter( 'document_title_parts', array( $this, '_paged_title_parts' ) );
|
|
|
|
$this->assertEquals( sprintf( '%s – Page 4 – Just another WordPress site', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function _paged_title_parts( $parts ) {
|
|
$this->assertArrayHasKey( 'page', $parts );
|
|
$this->assertArrayHasKey( 'title', $parts );
|
|
$this->assertArrayHasKey( 'tagline', $parts );
|
|
$this->assertArrayNotHasKey( 'site', $parts );
|
|
|
|
return $parts;
|
|
}
|
|
|
|
function test_singular_title() {
|
|
$this->go_to( '?p=' . self::$post_id );
|
|
|
|
add_filter( 'document_title_parts', array( $this, '_singular_title_parts' ) );
|
|
|
|
$this->assertEquals( sprintf( 'test_title – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function _singular_title_parts( $parts ) {
|
|
$this->assertArrayHasKey( 'site', $parts );
|
|
$this->assertArrayHasKey( 'title', $parts );
|
|
$this->assertArrayNotHasKey( 'tagline', $parts );
|
|
|
|
return $parts;
|
|
}
|
|
|
|
function test_category_title() {
|
|
$this->go_to( '?cat=' . self::$category_id );
|
|
|
|
$this->assertEquals( sprintf( 'test_category – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function test_search_title() {
|
|
$this->go_to( '?s=test_title' );
|
|
|
|
$this->assertEquals( sprintf( 'Search Results for “test_title” – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function test_author_title() {
|
|
$this->go_to( '?author=' . self::$author_id );
|
|
|
|
$this->assertEquals( sprintf( 'test_author – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function test_post_type_archive_title() {
|
|
register_post_type( 'cpt', array(
|
|
'public' => true,
|
|
'has_archive' => true,
|
|
'labels' => array(
|
|
'name' => 'test_cpt',
|
|
),
|
|
) );
|
|
|
|
$this->factory->post->create( array(
|
|
'post_type' => 'cpt',
|
|
) );
|
|
|
|
$this->go_to( '?post_type=cpt' );
|
|
|
|
$this->assertEquals( sprintf( 'test_cpt – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function test_year_title() {
|
|
$this->go_to( '?year=2015' );
|
|
|
|
$this->assertEquals( sprintf( '2015 – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function test_month_title() {
|
|
$this->go_to( '?monthnum=09' );
|
|
|
|
$this->assertEquals( sprintf( 'September 2015 – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function test_day_title() {
|
|
$this->go_to( '?day=22' );
|
|
|
|
$this->assertEquals( sprintf( 'September 22, 2015 – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function test_404_title() {
|
|
$this->go_to( '?m=404' );
|
|
|
|
$this->assertEquals( sprintf( 'Page not found – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function test_paged_post_title() {
|
|
$this->go_to( '?paged=4&p=' . self::$post_id );
|
|
|
|
add_filter( 'title_tag_parts', array( $this, '_paged_post_title_parts' ) );
|
|
|
|
$this->assertEquals( sprintf( 'test_title – Page 4 – %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function _paged_post_title_parts( $parts ) {
|
|
$this->assertArrayHasKey( 'page', $parts );
|
|
$this->assertArrayHasKey( 'site', $parts );
|
|
$this->assertArrayHasKey( 'title', $parts );
|
|
$this->assertArrayNotHasKey( 'tagline', $parts );
|
|
|
|
return $parts;
|
|
}
|
|
|
|
function test_rearrange_title_parts() {
|
|
$this->go_to( '?p=' . self::$post_id );
|
|
|
|
add_filter( 'document_title_parts', array( $this, '_rearrange_title_parts' ) );
|
|
|
|
$this->assertEquals( sprintf( '%s – test_title', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function _rearrange_title_parts( $parts ) {
|
|
$parts = array(
|
|
$parts['site'],
|
|
$parts['title'],
|
|
);
|
|
|
|
return $parts;
|
|
}
|
|
|
|
function test_change_title_separator() {
|
|
$this->go_to( '?p=' . self::$post_id );
|
|
|
|
add_filter( 'document_title_separator', array( $this, '_change_title_separator' ) );
|
|
|
|
$this->assertEquals( sprintf( 'test_title %%%% %s', $this->blog_name ), wp_get_document_title() );
|
|
}
|
|
|
|
function _change_title_separator( $sep ) {
|
|
return '%%';
|
|
}
|
|
}
|