3 * Test class for SpecialSearch class
4 * Copyright © 2012, Antoine Musso
6 * @author Antoine Musso
10 class SpecialSearchTest
extends MediaWikiTestCase
{
14 function tearDown() { }
17 * @dataProvider provideSearchOptionsTests
18 * @param $requested Array Request parameters. For example array( 'ns5' => true, 'ns6' => true). NULL to use default options.
19 * @param $userOptions Array User options to test with. For example array('searchNs5' => 1 );. NULL to use default options.
22 $requested, $userOptions, $expectedProfile, $expectedNS,
23 $message = 'Profile name andnamespaces mismatches!'
25 $context = new RequestContext
;
27 $this->newUserWithSearchNS( $userOptions )
30 $context->setRequest( new FauxRequest( array(
35 $context->setRequest( new FauxRequest( $requested ));
36 $search = new SpecialSearch();
37 $search->setContext( $context );
41 * Verify profile name and namespace in the same assertion to make
42 * sure we will be able to fully compare the above code. PHPUnit stop
43 * after an assertion fail.
46 array( /** Expected: */
47 'ProfileName' => $expectedProfile,
48 'Namespaces' => $expectedNS,
50 , array( /** Actual: */
51 'ProfileName' => $search->getProfile(),
52 'Namespaces' => $search->getNamespaces(),
59 function provideSearchOptionsTests() {
60 $defaultNS = SearchEngine
::defaultNamespaces();
61 $EMPTY_REQUEST = array();
67 * <Web Request>, <User options>
68 * Followed by expected values:
69 * <ProfileName>, <NSList>
70 * Then an optional message.
73 $EMPTY_REQUEST, $NO_USER_PREF,
74 'default', $defaultNS,
75 'Bug 33270: No request nor user preferences should give default profile'
78 array( 'ns5' => 1 ), $NO_USER_PREF,
79 'advanced', array( 5),
80 'Web request with specific NS should override user preference'
82 /* FIXME this test is for bug 33583
84 $EMPTY_REQUEST, array( 'searchNs2' ),
85 'advanced', array( 2 ),
86 'Bug 33583: search with no option should honor User search preferences'
94 * Helper to create a new User object with given options
95 * User remains anonymous though
97 function newUserWithSearchNS( $opt = null ) {
98 $u = User
::newFromId(0);
102 foreach($opt as $name => $value) {
103 $u->setOption( $name, $value );