move ORMTableTest from Wikibase to core
authoraude <aude.wiki@gmail.com>
Thu, 8 Nov 2012 12:04:24 +0000 (12:04 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 9 Nov 2012 09:57:45 +0000 (09:57 +0000)
- this is more generally useful than to be buried inside Wikibase client.
- it was in Wikibase/client/tests/phpunit/includes/store/EntityCacheTableTest.php

- patchset 2: add to test autoloader

Change-Id: I5bc41d6d205f28bcc5bf0c8a78b782c8888c18eb

tests/TestsAutoLoader.php
tests/phpunit/includes/db/ORMTableTest.php [new file with mode: 0644]

index 8ed24bb..7a835d6 100644 (file)
@@ -43,6 +43,9 @@ $wgAutoloadClasses += array(
        'RandomImageGenerator' => "$testFolder/phpunit/includes/api/RandomImageGenerator.php",
        'UserWrapper' => "$testFolder/phpunit/includes/api/ApiTestCase.php",
 
+       //db
+       'ORMTableTest' => "$testFolder/phpunit/includes/db/ORMTableTest.php",
+
        //Selenium
        'SeleniumTestConstants' => "$testFolder/selenium/SeleniumTestConstants.php",
 
diff --git a/tests/phpunit/includes/db/ORMTableTest.php b/tests/phpunit/includes/db/ORMTableTest.php
new file mode 100644 (file)
index 0000000..2ed3dd3
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Abstract class to construct tests for ORMTable deriving classes.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @since 1.21
+ *
+ * @ingroup Test
+ *
+ * @group ORM
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+abstract class ORMTableTest extends MediaWikiTestCase {
+
+       /**
+        * @since 1.21
+        * @return string
+        */
+       protected abstract function getTableClass();
+
+       /**
+        * @since 1.21
+        * @return IORMTable
+        */
+       public function getTable() {
+               $class = $this->getTableClass();
+               return $class::singleton();
+       }
+
+       /**
+        * @since 1.21
+        * @return string
+        */
+       public function getRowClass() {
+               return $this->getTable()->getRowClass();
+       }
+
+       /**
+        * @since 1.21
+        */
+       public function testSingleton() {
+               $class = $this->getTableClass();
+
+               $this->assertInstanceOf( $class, $class::singleton() );
+               $this->assertTrue( $class::singleton() === $class::singleton() );
+       }
+
+}