Wordpress/tests/phpunit/tests/canonical/permalinkFormats.php
Andrew Nacin 8045afd81b Move PHPUnit tests into a tests/phpunit directory.
wp-tests-config.php can/should reside in the root of a develop checkout. `phpunit` should be run from the root.

see #25088.


git-svn-id: https://develop.svn.wordpress.org/trunk@25165 602fd350-edb4-49c9-b593-d223f7449a82
2013-08-29 18:39:34 +00:00

81 lines
2.8 KiB
PHP

<?php
/**
* @group canonical
* @group rewrite
* @group query
*/
class Tests_Canonical_PermalinkFormat extends WP_UnitTestCase {
/**
* @ticket 21167
*/
public function test_dotted_formats() {
global $wp_rewrite;
// Create a sample post
$cat_id = $this->factory->term->create( array(
'name' => 'permalink-test',
'taxonomy' => 'category'
) );
$user_id = $this->factory->user->create( array(
'role' => 'editor',
'user_login' => 'permalink_user',
) );
$post_id = $this->factory->post->create( array(
'post_title' => 'lorem-ipsum',
'post_date' => '2012-08-02 14:15:05',
'post_author' => $user_id,
'category' => $cat_id
) );
wp_set_post_categories( $post_id, array( $cat_id ) );
// Sample permalinks
$tests = array(
'/%postname%.%post_id%/ ' => array(
'regex' => '([^/]+)\.([0-9]+)(/[0-9]+)?/?$',
'url' => 'index.php?name=$1&p=$2&page=$3'
),
'/%year%.%monthnum%.%postname%/' => array(
'regex' => '([0-9]{4})\.([0-9]{1,2})\.([^/]+)(/[0-9]+)?/?$',
'url' => 'index.php?year=$1&monthnum=$2&name=$3&page=$4'
),
'/%post_id%.%postname%/' => array(
'regex' => '([0-9]+)\.([^/]+)(/[0-9]+)?/?$',
'url' => 'index.php?p=$1&name=$2&page=$3'
),
'/%postname%.%year%/' => array(
'regex' => '([^/]+)\.([0-9]{4})(/[0-9]+)?/?$',
'url' => 'index.php?name=$1&year=$2&page=$3'
),
'/$%postname%$/' => array(
'regex' => '\$([^/]+)\$(/[0-9]+)?/?$',
'url' => 'index.php?name=$1&page=$2'
),
'%year%.+?%monthnum%.+?%day%.+?%hour%.+?%minute%.+?%second%.+?%post_id%.+?%postname%.+?%category%.+?%author%.+?' => array(
'regex' => '([0-9]{4})\.\+\?([0-9]{1,2})\.\+\?([0-9]{1,2})\.\+\?([0-9]{1,2})\.\+\?([0-9]{1,2})\.\+\?([0-9]{1,2})\.\+\?([0-9]+)\.\+\?([^/]+)\.\+\?%category%\.\+\?([^/]+)\.\+\?(/[0-9]+)?/?$',
'url' => 'index.php?year=$1&monthnum=$2&day=$3&hour=$4&minute=$5&second=$6&p=$7&name=$8&%category%$9&author_name=$10&page=$11'
),
);
// Test permalinks
foreach ( $tests as $permalink_format => $expected ) {
update_option( 'permalink_structure', $permalink_format );
// Get the rewrite rules
$rules = $wp_rewrite->generate_rewrite_rules( get_option( 'permalink_structure' ), EP_PERMALINK, false, false, false, false );
// Filter out only the post rewrite rule
foreach ( $rules as $regex => $url ) {
if ( false === strpos( $url, 'attachment=$' ) && false === strpos( $url, 'tb=' ) && false === strpos( $url, 'cpage=$' ) ) {
break;
}
}
// Test that expected === actual
$this->assertEquals( $regex, $expected['regex'], "Problem with permalink format: $permalink_format" );
$this->assertEquals( $url, $expected['url'], "Problem with permalink format: $permalink_format" );
}
}
}