File: ListToggleTest.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 (50 lines) | stat: -rw-r--r-- 1,566 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
<?php

use MediaWiki\Html\ListToggle;
use MediaWiki\Language\Language;
use MediaWiki\Output\OutputPage;
use MediaWiki\Tests\Unit\FakeQqxMessageLocalizer;

/**
 * @covers \MediaWiki\Html\ListToggle
 */
class ListToggleTest extends MediaWikiUnitTestCase {

	public function testConstruct() {
		$output = $this->createMock( OutputPage::class );
		$output->expects( $this->once() )
			->method( 'addModules' )
			->with( 'mediawiki.checkboxtoggle' );
		$output->expects( $this->once() )
			->method( 'addModuleStyles' )
			->with( 'mediawiki.checkboxtoggle.styles' );

		new ListToggle( $output );
	}

	public function testGetHTML() {
		$language = $this->createMock( Language::class );
		$language->method( 'commaList' )
			->willReturnCallback( static function ( array $list ) {
				return implode( '(comma-separator)', $list );
			} );

		$output = $this->createMock( OutputPage::class );
		$output->method( 'msg' )
			->willReturnCallback( [ new FakeQqxMessageLocalizer(), 'msg' ] );
		$output->expects( $this->once() )
			->method( 'getLanguage' )
			->willReturn( $language );

		$listToggle = new ListToggle( $output );

		$html = $listToggle->getHTML();
		$this->assertEquals( '<div class="mw-checkbox-toggle-controls">' .
			'(checkbox-select: <a class="mw-checkbox-all" role="button"' .
			' tabindex="0">(checkbox-all)</a>(comma-separator)' .
			'<a class="mw-checkbox-none" role="button" tabindex="0">' .
			'(checkbox-none)</a>(comma-separator)<a class="mw-checkbox-invert" ' .
			'role="button" tabindex="0">(checkbox-invert)</a>)</div>',
			$html );
	}
}