tests: Add PHPUnit tests for methods in MagicWordFactory::class
[lhc/web/wiklou.git] / tests / phpunit / includes / MagicWordFactoryTest.php
1 <?php
2
3 /**
4 * @covers \MagicWordFactory
5 *
6 * @author Derick N. Alangi
7 */
8 class MagicWordFactoryTest extends MediaWikiTestCase {
9 /**
10 * Make magic word factory
11 */
12 private function makeMagicWordFactory( $contLang ) {
13 if ( $contLang === null ) {
14 $mwf = new MagicWordFactory( Language::factory( 'en' ) );
15 return $mwf;
16 }
17 return new MagicWordFactory( $contLang );
18 }
19
20 public function testGetContentLanguage() {
21 $contLang = Language::factory( 'en' );
22
23 $magicWordFactory = $this->makeMagicWordFactory( $contLang );
24 $mwfActual = $magicWordFactory->getContentLanguage();
25
26 $this->assertSame( $contLang, $mwfActual );
27 }
28
29 public function testGetMagicWord() {
30 $magicWordIdValid = 'pageid';
31 $magicWordFactory = $this->makeMagicWordFactory( null );
32 $mwActual = $magicWordFactory->get( $magicWordIdValid );
33 $contLang = $magicWordFactory->getContentLanguage();
34 $expected = new MagicWord( $magicWordIdValid, [ 'PAGEID' ], false, $contLang );
35
36 $this->assertEquals( $expected, $mwActual );
37 }
38
39 public function testGetInvalidMagicWord() {
40 $magicWordFactory = $this->makeMagicWordFactory( null );
41
42 $this->setExpectedException( MWException::class );
43 \Wikimedia\suppressWarnings();
44 try {
45 $magicWordFactory->get( 'invalid magic word' );
46 } finally {
47 \Wikimedia\restoreWarnings();
48 }
49 }
50
51 public function testGetVariableIDs() {
52 $magicWordFactory = $this->makeMagicWordFactory( null );
53 $varIds = $magicWordFactory->getVariableIDs();
54
55 $this->assertContainsOnly( 'string', $varIds );
56 $this->assertNotEmpty( $varIds );
57 $this->assertInternalType( 'array', $varIds );
58 }
59
60 public function testGetSubstIDs() {
61 $magicWordFactory = $this->makeMagicWordFactory( null );
62 $substIds = $magicWordFactory->getSubstIDs();
63
64 $this->assertContainsOnly( 'string', $substIds );
65 $this->assertNotEmpty( $substIds );
66 $this->assertInternalType( 'array', $substIds );
67 }
68
69 /**
70 * Test both valid and invalid caching hints paths
71 */
72 public function testGetCacheTTL() {
73 $magicWordFactory = $this->makeMagicWordFactory( null );
74 $actual = $magicWordFactory->getCacheTTL( 'localday' );
75
76 $this->assertSame( 3600, $actual );
77
78 $actual = $magicWordFactory->getCacheTTL( 'currentmonth' );
79 $this->assertSame( 86400, $actual );
80
81 $actual = $magicWordFactory->getCacheTTL( 'invalid' );
82 $this->assertSame( -1, $actual );
83 }
84
85 public function testGetDoubleUnderscoreArray() {
86 $magicWordFactory = $this->makeMagicWordFactory( null );
87 $actual = $magicWordFactory->getDoubleUnderscoreArray();
88
89 $this->assertInstanceOf( MagicWordArray::class, $actual );
90 }
91 }