Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
50.00% covered (danger)
50.00%
1 / 2
62.50% covered (warning)
62.50%
5 / 8
CRAP
95.45% covered (success)
95.45%
63 / 66
Migrator_Add_Submenu_Page_Function_Test
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
5 / 5
5
100.00% covered (success)
100.00%
63 / 63
 setUp
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
4 / 4
 arguments_must_pass_to_specified_callback
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
18 / 18
 if_user_is_in_a_sub_page_then_the_associated_callback_must_call
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
23 / 23
 callback_should_not_call_when_user_is_not_in_the_sub_menu_page
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
15 / 15
 tearDown
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
_sample_controller_3
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
12
0.00% covered (danger)
0.00%
0 / 3
 show
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 sub_page_1
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 main
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
<?php
class Migrator_Add_Submenu_Page_Function_Test extends WP_UnitTestCase {
    public $user_id;
    function setUp() {
        parent::setUp();
        $this->user_id = self::factory()->user->create( array( 'role' => 'administrator' ) );
        wp_set_current_user( $this->user_id );
    }
    /**
     * @test
     *
     * @covers migrator_add_submenu_page
     * @covers _migrator_submenu_page_callback
     */
    public function arguments_must_pass_to_specified_callback() {
        $class  = '_sample_controller_3';
        $method = 'show';
        $parent_slug = 'index.php';
        $page_title  = 'page-title';
        $menu_title  = 'page-title';
        $capability  = 'manage_options';
        $menu_slug   = 'custom-slug';
        $arguments   = [ [ 1, 2, 3 ], 'string' ];
        $mock = $this->createMock( $class );
        $mock->expects( $this->once() )
             ->method( $method )
             ->with( $this->equalTo( $arguments[0] ), $this->equalTo( $arguments[1] ) );
        $function = array( $mock, $method );
        $hook = migrator_add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function, $arguments );
        $this->assertNotFalse( $hook );
        $this->assertInternalType( 'string', $hook );
        do_action( $hook );
    }
    /**
     * @test
     *
     * @covers _migrator_submenu_page_callback
     */
    public function if_user_is_in_a_sub_page_then_the_associated_callback_must_call() {
        global $mg_routes_sub_pages;
        $var1 = '123';
        $parent_slug = 'plugins.php';
        $page_title  = 'sample';
        $menu_title  = 'sample';
        $capability  = 'manage_options';
        $menu_slug = 'wp-migrator-6';
        $mock = $this->createMock( '_sample_controller_3' );
        $mock->expects( $this->once() )
             ->method( 'sub_page_1' )
             ->with( $this->equalTo( $var1 ) );
        $mock->expects( $this->never() )
             ->method( 'main' );
        $hook = migrator_add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, [
            $mock,
            'main'
        ] );
        $this->assertTrue( TRUE );
        $_REQUEST['var1'] = $var1;
        $mg_routes_sub_pages[ $hook ] = [
            'var1' => array( $mock, 'sub_page_1' ),
        ];
        do_action( $hook );
        unset( $_REQUEST['var1'] );
    }
    /**
     * @test
     *
     * @covers migrator_add_submenu_page
     */
    public function callback_should_not_call_when_user_is_not_in_the_sub_menu_page() {
        $class  = '_sample_controller_3';
        $method = 'show';
        $parent_slug = 'index.php';
        $page_title  = 'page-title';
        $menu_title  = 'page-title';
        $capability  = 'manage_options';
        $menu_slug   = 'custom-slug2';
        $mock = $this->createMock( $class );
        $mock->expects( $this->never() )
             ->method( $method );
        $function = array( $mock, $method );
        $hook = migrator_add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
        $this->assertNotFalse( $hook );
        $this->assertInternalType( 'string', $hook );
    }
    function tearDown() {
        parent::tearDown();
        wp_set_current_user( 0 );
    }
}
class _sample_controller_3 extends Migrator_Controller {
    public function show() {
    }
    public function sub_page_1() {
    }
    public function main() {
    }
}