Merge "Change labels of paging links in Category page"
[lhc/web/wiklou.git] / tests / phpunit / includes / changes / EnhancedChangesListTest.php
1 <?php
2
3 /**
4 * @covers EnhancedChangesList
5 *
6 * @group Database
7 *
8 * @author Katie Filbert < aude.wiki@gmail.com >
9 */
10 class EnhancedChangesListTest extends MediaWikiLangTestCase {
11
12 /**
13 * @var TestRecentChangesHelper
14 */
15 private $testRecentChangesHelper;
16
17 public function __construct( $name = null, array $data = array(), $dataName = '' ) {
18 parent::__construct( $name, $data, $dataName );
19
20 $this->testRecentChangesHelper = new TestRecentChangesHelper();
21 }
22
23 public function testBeginRecentChangesList_styleModules() {
24 $enhancedChangesList = $this->newEnhancedChangesList();
25 $enhancedChangesList->beginRecentChangesList();
26
27 $styleModules = $enhancedChangesList->getOutput()->getModuleStyles();
28
29 $this->assertContains(
30 'mediawiki.special.changeslist',
31 $styleModules,
32 'has mediawiki.special.changeslist'
33 );
34
35 $this->assertContains(
36 'mediawiki.special.changeslist.enhanced',
37 $styleModules,
38 'has mediawiki.special.changeslist.enhanced'
39 );
40 }
41
42 public function testBeginRecentChangesList_jsModules() {
43 $enhancedChangesList = $this->newEnhancedChangesList();
44 $enhancedChangesList->beginRecentChangesList();
45
46 $modules = $enhancedChangesList->getOutput()->getModules();
47
48 $this->assertContains( 'jquery.makeCollapsible', $modules, 'has jquery.makeCollapsible' );
49 $this->assertContains( 'mediawiki.icon', $modules, 'has mediawiki.icon' );
50 }
51
52 public function testBeginRecentChangesList_html() {
53 $enhancedChangesList = $this->newEnhancedChangesList();
54 $html = $enhancedChangesList->beginRecentChangesList();
55
56 $this->assertEquals( '<div class="mw-changeslist">', $html );
57 }
58
59 /**
60 * @todo more tests
61 */
62 public function testRecentChangesLine() {
63 $enhancedChangesList = $this->newEnhancedChangesList();
64 $enhancedChangesList->beginRecentChangesList();
65
66 $recentChange = $this->getEditChange( '20131103092153' );
67 $html = $enhancedChangesList->recentChangesLine( $recentChange, false );
68
69 $this->assertInternalType( 'string', $html );
70
71 $recentChange2 = $this->getEditChange( '20131103092253' );
72 $html = $enhancedChangesList->recentChangesLine( $recentChange2, false );
73
74 $this->assertEquals( '', $html );
75 }
76
77 /**
78 * @todo more tests for actual formatting, this is more of a smoke test
79 */
80 public function testEndRecentChangesList() {
81 $enhancedChangesList = $this->newEnhancedChangesList();
82 $enhancedChangesList->beginRecentChangesList();
83
84 $recentChange = $this->getEditChange( '20131103092153' );
85 $enhancedChangesList->recentChangesLine( $recentChange, false );
86
87 $recentChange2 = $this->getEditChange( '20131103092253' );
88 $enhancedChangesList->recentChangesLine( $recentChange2, false );
89
90 $html = $enhancedChangesList->endRecentChangesList();
91
92 preg_match_all( '/td class="mw-enhanced-rc-nested"/', $html, $matches );
93 $this->assertCount( 2, $matches[0] );
94 }
95
96 /**
97 * @return EnhancedChangesList
98 */
99 private function newEnhancedChangesList() {
100 $user = User::newFromId( 0 );
101 $context = $this->testRecentChangesHelper->getTestContext( $user );
102
103 return new EnhancedChangesList( $context );
104 }
105
106 /**
107 * @return RecentChange
108 */
109 private function getEditChange( $timestamp ) {
110 $user = $this->getTestUser();
111 $recentChange = $this->testRecentChangesHelper->makeEditRecentChange(
112 $user, 'Cat', $timestamp, 5, 191, 190, 0, 0
113 );
114
115 return $recentChange;
116 }
117
118 /**
119 * @return User
120 */
121 private function getTestUser() {
122 $user = User::newFromName( 'TestRecentChangesUser' );
123
124 if ( !$user->getId() ) {
125 $user->addToDatabase();
126 }
127
128 return $user;
129 }
130
131 }