123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?php
- /**
- * @group link
- */
- class Tests_Link_ThemeFile extends WP_UnitTestCase {
- public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
- $themes = array(
- 'theme-file-parent',
- 'theme-file-child',
- );
- // Copy themes from tests/phpunit/data to wp-content/themes.
- foreach ( $themes as $theme ) {
- $source_dir = DIR_TESTDATA . '/' . $theme;
- $dest_dir = WP_CONTENT_DIR . '/themes/' . $theme;
- mkdir( $dest_dir );
- foreach ( glob( $source_dir . '/*.*' ) as $theme_file ) {
- copy( $theme_file, $dest_dir . '/' . basename( $theme_file ) );
- }
- }
- }
- public static function wpTearDownAfterClass() {
- $themes = array(
- 'theme-file-parent',
- 'theme-file-child',
- );
- // Remove previously copied themes from wp-content/themes.
- foreach ( $themes as $theme ) {
- $dest_dir = WP_CONTENT_DIR . '/themes/' . $theme;
- foreach ( glob( $dest_dir . '/*.*' ) as $theme_file ) {
- unlink( $theme_file );
- }
- rmdir( $dest_dir );
- }
- }
- /**
- * @ticket 18302
- *
- * @dataProvider data_theme_files
- *
- * @covers ::get_theme_file_uri
- * @covers ::get_parent_theme_file_uri
- */
- public function test_theme_file_uri_with_parent_theme( $file, $expected_theme, $existence ) {
- switch_theme( 'theme-file-parent' );
- // Ensure the returned URL always uses the parent theme:
- $this->assertSame( content_url( "themes/theme-file-parent/{$file}" ), get_theme_file_uri( $file ) );
- $this->assertSame( content_url( "themes/theme-file-parent/{$file}" ), get_parent_theme_file_uri( $file ) );
- }
- /**
- * @ticket 18302
- *
- * @dataProvider data_theme_files
- *
- * @covers ::get_theme_file_uri
- * @covers ::get_parent_theme_file_uri
- */
- public function test_theme_file_uri_with_child_theme( $file, $expected_theme, $existence ) {
- switch_theme( 'theme-file-child' );
- // Ensure the returned URL uses the expected theme:
- $this->assertSame( content_url( "themes/{$expected_theme}/{$file}" ), get_theme_file_uri( $file ) );
- // Ensure the returned URL always uses the parent theme:
- $this->assertSame( content_url( "themes/theme-file-parent/{$file}" ), get_parent_theme_file_uri( $file ) );
- }
- /**
- * @ticket 18302
- *
- * @dataProvider data_theme_files
- *
- * @covers ::get_theme_file_path
- * @covers ::get_parent_theme_file_path
- */
- public function test_theme_file_path_with_parent_theme( $file, $expected_theme, $existence ) {
- switch_theme( 'theme-file-parent' );
- // Ensure the returned path always uses the parent theme:
- $this->assertSame( WP_CONTENT_DIR . "/themes/theme-file-parent/{$file}", get_theme_file_path( $file ) );
- $this->assertSame( WP_CONTENT_DIR . "/themes/theme-file-parent/{$file}", get_parent_theme_file_path( $file ) );
- }
- /**
- * @ticket 18302
- *
- * @dataProvider data_theme_files
- *
- * @covers ::get_theme_file_path
- * @covers ::get_parent_theme_file_path
- */
- public function test_theme_file_path_with_child_theme( $file, $expected_theme, $existence ) {
- switch_theme( 'theme-file-child' );
- // Ensure the returned path uses the expected theme:
- $this->assertSame( WP_CONTENT_DIR . "/themes/{$expected_theme}/{$file}", get_theme_file_path( $file ) );
- // Ensure the returned path always uses the parent theme:
- $this->assertSame( WP_CONTENT_DIR . "/themes/theme-file-parent/{$file}", get_parent_theme_file_path( $file ) );
- }
- /**
- * Test the tests.
- *
- * @ticket 18302
- *
- * @dataProvider data_theme_files
- */
- public function test_theme_file_existance( $file, $expected_theme, $existence ) {
- if ( in_array( 'theme-file-child', $existence, true ) ) {
- $this->assertFileExists( WP_CONTENT_DIR . "/themes/theme-file-child/{$file}" );
- } else {
- $this->assertFileNotExists( WP_CONTENT_DIR . "/themes/theme-file-child/{$file}" );
- }
- if ( in_array( 'theme-file-parent', $existence, true ) ) {
- $this->assertFileExists( WP_CONTENT_DIR . "/themes/theme-file-parent/{$file}" );
- } else {
- $this->assertFileNotExists( WP_CONTENT_DIR . "/themes/theme-file-parent/{$file}" );
- }
- }
- /**
- * @ticket 18302
- *
- * @dataProvider data_theme_files
- *
- * @covers ::get_theme_file_uri
- * @covers ::get_parent_theme_file_uri
- */
- public function test_theme_file_uri_returns_valid_uri( $file, $expected_theme, $existence ) {
- $uri = get_theme_file_uri( $file );
- $parent_uri = get_parent_theme_file_uri( $file );
- $this->assertSame( esc_url_raw( $uri ), $uri );
- $this->assertSame( esc_url_raw( $parent_uri ), $parent_uri );
- }
- public function data_theme_files() {
- $parent = 'theme-file-parent';
- $child = 'theme-file-child';
- return array(
- array(
- 'parent-only.php',
- $parent,
- array(
- $parent,
- ),
- ),
- array(
- 'child-only.php',
- $child,
- array(
- $child,
- ),
- ),
- array(
- 'parent-and-child.php',
- $child,
- array(
- $parent,
- $child,
- ),
- ),
- array(
- 'neither.php',
- $parent,
- array(),
- ),
- );
- }
- }
|