File: BlockActionInfoTest.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (60 lines) | stat: -rw-r--r-- 1,627 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php

use MediaWiki\Block\BlockActionInfo;

/**
 * @group Blocking
 * @coversDefaultClass \MediaWiki\Block\BlockActionInfo
 */
class BlockActionInfoTest extends MediaWikiUnitTestCase {
	private BlockActionInfo $blockActionInfo;

	protected function setUp(): void {
		parent::setUp();
		$this->blockActionInfo = new BlockActionInfo(
			$this->createHookContainer( [
				'GetAllBlockActions' => static function ( array &$actions ) {
					$actions[ 'test' ] = 100;
				},
			] )
		);
	}

	/**
	 * @covers ::getAllBlockActions
	 */
	public function testAddBlockAction() {
		// 'test' action in added by hook with id 100
		$blockActions = $this->blockActionInfo->getAllBlockActions();

		// Confirm new action is added
		$this->assertArrayHasKey( 'test', $blockActions, 'Action added via hook' );
		$this->assertSame( 100, $blockActions['test'], 'Id of action added via hook' );
	}

	/**
	 * @dataProvider provideIdAndAction
	 * @param string|false $action False if the id is invalid
	 * @param int|false $id False if the action is invalid
	 * @covers ::getIdFromAction
	 * @covers ::getActionFromId
	 */
	public function testIdAndAction( $action, $id ) {
		if ( $id !== false ) {
			$this->assertSame( $action, $this->blockActionInfo->getActionFromId( $id ) );
		}
		if ( $action !== false ) {
			$this->assertSame( $id, $this->blockActionInfo->getIdFromAction( $action ) );
		}
	}

	public static function provideIdAndAction() {
		return [
			'Valid core action' => [ 'upload', 1 ],
			'Valid hook action' => [ 'test', 100 ],
			'Invalid action name' => [ 'invalid', false ],
			'Invalid action id' => [ false, 200 ],
		];
	}

}