- $this->fetchUsers( [ 'userExpLevel' => 'newcomer,learner' ] )
- );
-
- // newcomers and more learner
- $this->assertArrayEquals(
- [
- 'Newcomer1', 'Newcomer2', 'Newcomer3',
- 'Experienced1',
- ],
- $this->fetchUsers( [ 'userExpLevel' => 'newcomer,experienced' ] )
- );
-
- // learner only
- $this->assertArrayEquals(
- [ 'Learner1', 'Learner2', 'Learner3', 'Learner4' ],
- $this->fetchUsers( [ 'userExpLevel' => 'learner' ] )
- );
-
- // more experienced only
- $this->assertArrayEquals(
- [ 'Experienced1' ],
- $this->fetchUsers( [ 'userExpLevel' => 'experienced' ] )
- );
-
- // learner and more experienced
- $this->assertArrayEquals(
- [
- 'Learner1', 'Learner2', 'Learner3', 'Learner4',
- 'Experienced1',
- ],
- $this->fetchUsers( [ 'userExpLevel' => 'learner,experienced' ] )
- );
-
- // newcomers, learner, and more experienced
- $this->assertArrayEquals(
- [
- 'Newcomer1', 'Newcomer2', 'Newcomer3',
- 'Learner1', 'Learner2', 'Learner3', 'Learner4',
- 'Experienced1',
- ],
- $this->fetchUsers( [ 'userExpLevel' => 'newcomer,learner,experienced' ] )
- );
-
- // 'all'
- $this->assertArrayEquals(
- [
- 'Newcomer1', 'Newcomer2', 'Newcomer3',
- 'Learner1', 'Learner2', 'Learner3', 'Learner4',
- 'Experienced1',
- ],
- $this->fetchUsers( [ 'userExpLevel' => 'all' ] )
- );
- }
-
- private function createUsers( $specs ) {
- $dbw = wfGetDB( DB_MASTER );
- foreach ( $specs as $name => $spec ) {
- User::createNew(
- $name,
- [
- 'editcount' => $spec['edits'],
- 'registration' => $dbw->timestamp( $this->daysAgo( $spec['days'] ) ),
- 'email' => 'ut',
- ]
- );
- }
- }
-
- private function fetchUsers( $filters ) {
- $specialRC = new SpecialRecentChanges();
-
- $tables = [];
- $conds = [];
- $join_conds = [];
-
- $specialRC->filterOnUserExperienceLevel(
- $tables,
- $conds,
- $join_conds,
- $filters
- );
-
- $result = wfGetDB( DB_MASTER )->select(
- 'user',
- 'user_name',
- array_filter( $conds ) + [ 'user_email' => 'ut' ]
- );
-
- $usernames = [];
- foreach ( $result as $row ) {
- $usernames[] = $row->user_name;
- }
-
- return $usernames;
- }
-
- private function daysAgo( $days ) {
- $secondsPerDay = 86400;
- return time() - $days * $secondsPerDay;