Merge "Fix $wgUpdateRowsPerJob default in docs/deferred.txt"
[lhc/web/wiklou.git] / tests / phpunit / includes / specials / ContribsPagerTest.php
1 <?php
2
3 /**
4 * @group Database
5 */
6 class ContribsPagerTest extends MediaWikiTestCase {
7 /** @var ContribsPager */
8 private $pager;
9
10 function setUp() {
11 $context = new RequestContext();
12 $this->pager = new ContribsPager( $context, [
13 'start' => '2017-01-01',
14 'end' => '2017-02-02',
15 ] );
16
17 parent::setUp();
18 }
19
20 /**
21 * @dataProvider dateFilterOptionProcessingProvider
22 * @param array $inputOpts Input options
23 * @param array $expectedOpts Expected options
24 */
25 public function testDateFilterOptionProcessing( $inputOpts, $expectedOpts ) {
26 $this->assertArraySubset( $expectedOpts, ContribsPager::processDateFilter( $inputOpts ) );
27 }
28
29 public static function dateFilterOptionProcessingProvider() {
30 return [
31 [ [ 'start' => '2016-05-01',
32 'end' => '2016-06-01',
33 'year' => null,
34 'month' => null ],
35 [ 'start' => '2016-05-01',
36 'end' => '2016-06-01' ] ],
37 [ [ 'start' => '2016-05-01',
38 'end' => '2016-06-01',
39 'year' => '',
40 'month' => '' ],
41 [ 'start' => '2016-05-01',
42 'end' => '2016-06-01' ] ],
43 [ [ 'start' => '2016-05-01',
44 'end' => '2016-06-01',
45 'year' => '2012',
46 'month' => '5' ],
47 [ 'start' => '',
48 'end' => '2012-05-31' ] ],
49 [ [ 'start' => '',
50 'end' => '',
51 'year' => '2012',
52 'month' => '5' ],
53 [ 'start' => '',
54 'end' => '2012-05-31' ] ],
55 [ [ 'start' => '',
56 'end' => '',
57 'year' => '2012',
58 'month' => '' ],
59 [ 'start' => '',
60 'end' => '2012-12-31' ] ],
61 ];
62 }
63
64 /**
65 * @covers ContribsPager::isQueryableRange
66 * @dataProvider provideQueryableRanges
67 */
68 public function testQueryableRanges( $ipRange ) {
69 $this->setMwGlobals( [
70 'wgRangeContributionsCIDRLimit' => [
71 'IPv4' => 16,
72 'IPv6' => 32,
73 ],
74 ] );
75
76 $this->assertTrue(
77 $this->pager->isQueryableRange( $ipRange ),
78 "$ipRange is a queryable IP range"
79 );
80 }
81
82 public function provideQueryableRanges() {
83 return [
84 [ '116.17.184.5/32' ],
85 [ '0.17.184.5/16' ],
86 [ '2000::/32' ],
87 [ '2001:db8::/128' ],
88 ];
89 }
90
91 /**
92 * @covers ContribsPager::isQueryableRange
93 * @dataProvider provideUnqueryableRanges
94 */
95 public function testUnqueryableRanges( $ipRange ) {
96 $this->setMwGlobals( [
97 'wgRangeContributionsCIDRLimit' => [
98 'IPv4' => 16,
99 'IPv6' => 32,
100 ],
101 ] );
102
103 $this->assertFalse(
104 $this->pager->isQueryableRange( $ipRange ),
105 "$ipRange is not a queryable IP range"
106 );
107 }
108
109 public function provideUnqueryableRanges() {
110 return [
111 [ '116.17.184.5/33' ],
112 [ '0.17.184.5/15' ],
113 [ '2000::/31' ],
114 [ '2001:db8::/9999' ],
115 ];
116 }
117 }