Merge "Drop index oi_name_archive_name on table oldimage"
[lhc/web/wiklou.git] / tests / phpunit / includes / changes / ChangesListBooleanFilterGroupTest.php
1 <?php
2
3 /**
4 * @covers ChangesListBooleanFilterGroup
5 */
6 class ChangesListBooleanFilterGroupTest extends MediaWikiTestCase {
7 public function testIsFullCoverage() {
8 $hideGroupDefault = TestingAccessWrapper::newFromObject(
9 new ChangesListBooleanFilterGroup( [
10 'name' => 'groupName',
11 'priority' => 1,
12 'filters' => [],
13 ] )
14 );
15
16 $this->assertSame(
17 true,
18 $hideGroupDefault->isFullCoverage
19 );
20 }
21
22 public function testAutoPriorities() {
23 $group = new ChangesListBooleanFilterGroup( [
24 'name' => 'groupName',
25 'priority' => 1,
26 'filters' => [
27 [ 'name' => 'hidefoo', 'default' => false, ],
28 [ 'name' => 'hidebar', 'default' => false, ],
29 [ 'name' => 'hidebaz', 'default' => false, ],
30 ],
31 ] );
32
33 $filters = $group->getFilters();
34 $this->assertEquals(
35 [
36 -2,
37 -3,
38 -4,
39 ],
40 array_map(
41 function ( $f ) {
42 return $f->getPriority();
43 },
44 array_values( $filters )
45 )
46 );
47 }
48
49 public function testGetJsData() {
50 $definition = [
51 'name' => 'some-group',
52 'title' => 'some-group-title',
53 'priority' => 1,
54 'filters' => [
55 [
56 'name' => 'hidefoo',
57 'label' => 'foo-label',
58 'description' => 'foo-description',
59 'default' => true,
60 'showHide' => 'showhidefoo',
61 'priority' => 2,
62 ],
63 [
64 'name' => 'hidebar',
65 'label' => 'bar-label',
66 'description' => 'bar-description',
67 'default' => false,
68 'priority' => 4,
69 ]
70 ],
71 ];
72
73 $group = new ChangesListBooleanFilterGroup( $definition );
74
75 $specialPage = $this->getMockBuilder( 'ChangesListSpecialPage' )
76 ->setConstructorArgs( [
77 'ChangesListSpecialPage',
78 '',
79 ] )
80 ->getMockForAbstractClass();
81
82 $this->assertArrayEquals(
83 [
84 'name' => 'some-group',
85 'title' => 'some-group-title',
86 'type' => ChangesListBooleanFilterGroup::TYPE,
87 'priority' => 1,
88 'filters' => [
89 [
90 'name' => 'hidebar',
91 'label' => 'bar-label',
92 'description' => 'bar-description',
93 'default' => false,
94 'priority' => 4,
95 'cssClass' => null,
96 'conflicts' => [],
97 'subset' => [],
98 ],
99 [
100 'name' => 'hidefoo',
101 'label' => 'foo-label',
102 'description' => 'foo-description',
103 'default' => true,
104 'priority' => 2,
105 'cssClass' => null,
106 'conflicts' => [],
107 'subset' => [],
108 ],
109 ],
110 'conflicts' => [],
111 'fullCoverage' => true,
112 'messageKeys' => [
113 'some-group-title',
114 'bar-label',
115 'bar-description',
116 'foo-label',
117 'foo-description',
118 ],
119 ],
120
121 $group->getJsData( $specialPage ),
122 /** ordered= */ false,
123 /** named= */ true
124 );
125 }
126 }