Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions WordPress/Tests/Helpers/WPHookHelper/GetHookNameParamUnitTest.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

/*
* The below should result in a false return value.
*/

/* testNotAHookFunction */
printf( 'my_action' );

/* testHookNameParamMissing */
apply_filters_ref_array( args: $args );

/*
* The below should result in the information on the hook name param being returned.
*/

/* testLowercaseName */
do_action( 'my_action' );

/* testMixedCaseName */
aPpLy_FiLtErS( 'my_filter', $value );

/* testNamedParameter */
do_action_deprecated( args: $args, hook_name: 'my_action' );
83 changes: 83 additions & 0 deletions WordPress/Tests/Helpers/WPHookHelper/GetHookNameParamUnitTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?php
/**
* WordPress Coding Standard.
*
* @package WPCS\WordPressCodingStandards
* @link https://github.com/WordPress/WordPress-Coding-Standards
* @license https://opensource.org/licenses/MIT MIT
*/

namespace WordPressCS\WordPress\Tests\Helpers\WPHookHelper;

use PHPCSUtils\TestUtils\UtilityMethodTestCase;
use PHPCSUtils\Utils\PassedParameters;
use WordPressCS\WordPress\Helpers\WPHookHelper;

/**
* Tests for the `WPHookHelper::get_hook_name_param()` method.
*
* @since 3.4.0
*
* @covers \WordPressCS\WordPress\Helpers\WPHookHelper::get_hook_name_param
*/
final class GetHookNameParamUnitTest extends UtilityMethodTestCase {

/**
* Test get_hook_name_param().
*
* @dataProvider dataGetHookNameParam
*
* @param string $testMarker The comment which prefaces the target token in the test file.
* @param string|false $expectedResult The raw content of the expected hook name parameter,
* or `false` when no hook name parameter is expected.
*
* @return void
*/
public function testGetHookNameParam( $testMarker, $expectedResult ) {
$stackPtr = $this->getTargetToken( $testMarker, \T_STRING );
$functionName = self::$phpcsFile->getTokens()[ $stackPtr ]['content'];
$parameters = PassedParameters::getParameters( self::$phpcsFile, $stackPtr );

$result = WPHookHelper::get_hook_name_param( $functionName, $parameters );

if ( is_array( $result ) ) {
// The details of the parameter are populated by PassedParameters::getParameters().
// Here we only verify which parameter was selected.
$result = $result['raw'];
}

$this->assertSame( $expectedResult, $result );
}

/**
* Data provider.
*
* @see testGetHookNameParam()
*
* @return array<string, array<string, string|false>>
*/
public static function dataGetHookNameParam() {
return array(
'not_a_hook_function' => array(
'testMarker' => '/* testNotAHookFunction */',
'expectedResult' => false,
),
'hook_name_param_missing' => array(
'testMarker' => '/* testHookNameParamMissing */',
'expectedResult' => false,
),
'lowercase_name' => array(
'testMarker' => '/* testLowercaseName */',
'expectedResult' => "'my_action'",
),
'mixedcase_name' => array(
'testMarker' => '/* testMixedCaseName */',
'expectedResult' => "'my_filter'",
),
'named_parameter' => array(
'testMarker' => '/* testNamedParameter */',
'expectedResult' => "'my_action'",
),
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* @since 0.10.0
* @since 0.13.0 Class name changed: this class is now namespaced.
*
* @covers \WordPressCS\WordPress\Helpers\WPHookHelper
* @covers \WordPressCS\WordPress\Helpers\WPHookHelper::get_functions
* @covers \WordPressCS\WordPress\Sniffs\NamingConventions\ValidHookNameSniff
*/
final class ValidHookNameUnitTest extends AbstractSniffUnitTest {
Expand Down
Loading