Merge "Introducing pp_sortkey."
[lhc/web/wiklou.git] / tests / phpunit / includes / LinksUpdateTest.php
index 33643ac..9ff547c 100644 (file)
@@ -63,9 +63,15 @@ class LinksUpdateTest extends MediaWikiTestCase {
                $po->addLink( Title::newFromText( "linksupdatetest:Foo" ) ); // interwiki link should be ignored
                $po->addLink( Title::newFromText( "#Foo" ) ); // hash link should be ignored
 
-               $update = $this->assertLinksUpdate( $t, $po, 'pagelinks', 'pl_namespace, pl_title', 'pl_from = 111', array(
-                       array( NS_MAIN, 'Foo' ),
-               ) );
+               $update = $this->assertLinksUpdate(
+                       $t,
+                       $po,
+                       'pagelinks',
+                       'pl_namespace,
+                       pl_title',
+                       'pl_from = 111',
+                       array( array( NS_MAIN, 'Foo' ) )
+               );
                $this->assertArrayEquals( array(
                        Title::makeTitle( NS_MAIN, 'Foo' ),  // newFromText doesn't yield the same internal state....
                ), $update->getAddedLinks() );
@@ -76,10 +82,18 @@ class LinksUpdateTest extends MediaWikiTestCase {
                $po->addLink( Title::newFromText( "Bar" ) );
                $po->addLink( Title::newFromText( "Talk:Bar" ) );
 
-               $update = $this->assertLinksUpdate( $t, $po, 'pagelinks', 'pl_namespace, pl_title', 'pl_from = 111', array(
-                       array( NS_MAIN, 'Bar' ),
-                       array( NS_TALK, 'Bar' ),
-               ) );
+               $update = $this->assertLinksUpdate(
+                       $t,
+                       $po,
+                       'pagelinks',
+                       'pl_namespace,
+                       pl_title',
+                       'pl_from = 111',
+                       array(
+                               array( NS_MAIN, 'Bar' ),
+                               array( NS_TALK, 'Bar' ),
+                       )
+               );
                $this->assertArrayEquals( array(
                        Title::makeTitle( NS_MAIN, 'Bar' ),
                        Title::makeTitle( NS_TALK, 'Bar' ),
@@ -143,9 +157,15 @@ class LinksUpdateTest extends MediaWikiTestCase {
 
                $po->addTemplate( Title::newFromText( "Template:Foo" ), 23, 42 );
 
-               $this->assertLinksUpdate( $t, $po, 'templatelinks', 'tl_namespace, tl_title', 'tl_from = 111', array(
-                       array( NS_TEMPLATE, 'Foo' ),
-               ) );
+               $this->assertLinksUpdate(
+                       $t,
+                       $po,
+                       'templatelinks',
+                       'tl_namespace,
+                       tl_title',
+                       'tl_from = 111',
+                       array( array( NS_TEMPLATE, 'Foo' ) )
+               );
        }
 
        /**
@@ -180,19 +200,55 @@ class LinksUpdateTest extends MediaWikiTestCase {
         * @covers ParserOutput::setProperty
         */
        public function testUpdate_page_props() {
+               global $wgPagePropsHaveSortkey;
+
                /** @var ParserOutput $po */
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
 
-               $po->setProperty( "foo", "bar" );
+               $fields = array( 'pp_propname', 'pp_value' );
+               $expected = array();
 
-               $this->assertLinksUpdate( $t, $po, 'page_props', 'pp_propname, pp_value', 'pp_page = 111', array(
-                       array( 'foo', 'bar' ),
-               ) );
+               $po->setProperty( "bool", true );
+               $expected[] = array( "bool", true );
+
+               $po->setProperty( "float", 4.0 + 1.0/4.0 );
+               $expected[] = array( "float", 4.0 + 1.0/4.0 );
+
+               $po->setProperty( "int", -7 );
+               $expected[] = array( "int", -7 );
+
+               $po->setProperty( "string", "33 bar" );
+               $expected[] = array( "string", "33 bar" );
+
+               // compute expected sortkey values
+               if ( $wgPagePropsHaveSortkey ) {
+                       $fields[] = 'pp_sortkey';
+
+                       foreach ( $expected as &$row ) {
+                               $value = $row[1];
+
+                               if ( is_int( $value ) || is_float( $value ) || is_bool( $value ) ) {
+                                       $row[] = floatval( $value );
+                               } else {
+                                       $row[] = null;
+                               }
+                       }
+               }
+
+               $this->assertLinksUpdate( $t, $po, 'page_props', $fields, 'pp_page = 111', $expected );
+       }
+
+       public function testUpdate_page_props_without_sortkey() {
+               $this->setMwGlobals( 'wgPagePropsHaveSortkey', false );
+
+               $this->testUpdate_page_props();
        }
 
        // @todo test recursive, too!
 
-       protected function assertLinksUpdate( Title $title, ParserOutput $parserOutput, $table, $fields, $condition, array $expectedRows ) {
+       protected function assertLinksUpdate( Title $title, ParserOutput $parserOutput,
+               $table, $fields, $condition, array $expectedRows
+       ) {
                $update = new LinksUpdate( $title, $parserOutput );
 
                //NOTE: make sure LinksUpdate does not generate warnings when called inside a transaction.