Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
50.00% covered (danger)
50.00%
1 / 2
80.00% covered (warning)
80.00%
4 / 5
CRAP
97.37% covered (success)
97.37%
37 / 38
tiny_helper_functions_Test
0.00% covered (danger)
0.00%
0 / 1
75.00% covered (warning)
75.00%
3 / 4
7
97.30% covered (success)
97.30%
36 / 37
 test_mg_sanitize_file_name
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
4 / 4
 test_mg_asset
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
5 / 5
 test_mg_current_controller
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
16 / 16
 test_mg_ajax_url
0.00% covered (danger)
0.00%
0 / 1
3.01
91.67% covered (success)
91.67%
11 / 12
_sample_controller_5
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 show
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
<?php
class tiny_helper_functions_Test extends WP_UnitTestCase {
    /**
     * @covers mg_sanitize_file_name
     */
    public function test_mg_sanitize_file_name() {
        $name = 'dir1.dir2.dir3.filename.php';
        $result = mg_sanitize_file_name( $name );
        $this->assertEquals( str_replace( '.', '/', $name ), $result );
    }
    /**
     * @covers mg_asset
     */
    public function test_mg_asset() {
        $asset_path = 'css/wp-migrator-panel.css';
        $plugin_dir = trim( plugin_basename( WP_MIGRATOR_PATH ), '/' );
        $plugin_url = untrailingslashit( WP_PLUGIN_URL );
        $this->assertEquals( "$plugin_url/$plugin_dir/assets/$asset_path", mg_asset( $asset_path ) );
    }
    /**
     * @covers mg_current_controller
     */
    public function test_mg_current_controller() {
        { # Set active user
            $user_id = self::factory()->user->create( array( 'role' => 'administrator' ) );
            if ( ! did_action( 'admin_menu' ) ) {
                do_action( 'admin_menu' );
            }
            wp_set_current_user( $user_id );
        }
        { # register  & fire a controller
            $unique_name = __METHOD__;
            $parent = 'themes.php';
            $slug   = $unique_name;
            $result = mg_admin_route(
                $parent, $slug, "_sample_controller_5@show", [], [
                    'menu_title' => 'My Menu Title',
                    'route_name' => $unique_name
                ]
            );
            $this->assertTrue( $result, 'cannot add admin page #6' );
            $page_hook = "admin_page_$slug";
            do_action( $page_hook );
        }
        $this->assertSame( '_sample_controller_5', mg_current_controller() );
    }
    /**
     * @covers  mg_ajax_url
     *
     * @depends test_mg_current_controller
     */
    public function test_mg_ajax_url() {
        $parse_url = parse_url( mg_ajax_url() );
        if ( ! isset( $parse_url['path'] ) ) {
            $parse_url['path'] = '';
        }
        $queries = isset( $parse_url['query'] ) ? $parse_url['query'] : [];
        parse_str( $queries, $queries );
        $this->assertSame( site_url( admin_url( 'admin-ajax.php', 'relative' ) ), "$parse_url[scheme]://$parse_url[host]$parse_url[path]" );
        $controller = '_sample_controller_5';
        $this->assertEmpty( array_diff_assoc( [
            '_mgctrl'       => $controller,
            '_mgctrl_token' => wp_create_nonce( "migrator-controller-$controller" ),
        ], $queries ), 'active controller should pass via ajax request' );
    }
}
class _sample_controller_5 extends Migrator_Controller {
    public function show() {
    }
}