summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Integration/MediaWiki/PredefinedPropertyAnnotationDBIntegrationTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Integration/MediaWiki/PredefinedPropertyAnnotationDBIntegrationTest.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Integration/MediaWiki/PredefinedPropertyAnnotationDBIntegrationTest.php105
1 files changed, 105 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Integration/MediaWiki/PredefinedPropertyAnnotationDBIntegrationTest.php b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Integration/MediaWiki/PredefinedPropertyAnnotationDBIntegrationTest.php
new file mode 100644
index 00000000..7151de41
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/tests/phpunit/Integration/MediaWiki/PredefinedPropertyAnnotationDBIntegrationTest.php
@@ -0,0 +1,105 @@
+<?php
+
+namespace SMW\Tests\Integration\MediaWiki;
+
+use SMW\ApplicationFactory;
+use SMW\DataValueFactory;
+use SMW\DIWikiPage;
+use SMW\Tests\MwDBaseUnitTestCase;
+use SMW\Tests\Utils\UtilityFactory;
+use SMWDITime as DITime;
+use Title;
+
+/**
+ * @group SMW
+ * @group SMWExtension
+ * @group semantic-mediawiki-integration
+ * @group mediawiki-databaseless
+ * @group medium
+ *
+ * @license GNU GPL v2+
+ * @since 2.0
+ *
+ * @author mwjames
+ */
+class PredefinedPropertyAnnotationDBIntegrationTest extends MwDBaseUnitTestCase {
+
+ private $semanticDataValidator;
+ private $applicationFactory;
+ private $dataValueFactory;
+ private $mwHooksHandler;
+ private $pageCreator;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->mwHooksHandler = UtilityFactory::getInstance()->newMwHooksHandler();
+
+ $this->mwHooksHandler
+ ->deregisterListedHooks()
+ ->invokeHooksFromRegistry();
+
+ $this->semanticDataValidator = UtilityFactory::getInstance()->newValidatorFactory()->newSemanticDataValidator();
+ $this->pageCreator = UtilityFactory::getInstance()->newPageCreator();
+
+ $this->applicationFactory = ApplicationFactory::getInstance();
+ $this->dataValueFactory = DataValueFactory::getInstance();
+ }
+
+ protected function tearDown() {
+ $this->applicationFactory->clear();
+ $this->mwHooksHandler->restoreListedHooks();
+
+ parent::tearDown();
+ }
+
+ public function testPredefinedModificationDatePropertyAndChangedDefaultsortForNewPage() {
+
+ $this->applicationFactory->getSettings()->set( 'smwgPageSpecialProperties', [ '_MDAT' ] );
+
+ $title = Title::newFromText( __METHOD__ );
+ $subject = DIWikiPage::newFromTitle( $title );
+
+ $this->pageCreator
+ ->createPage( $title, '{{DEFAULTSORT:SortForFoo}}' );
+
+ $dvPageModificationTime = $this->dataValueFactory->newDataValueByItem(
+ DITime::newFromTimestamp( $this->pageCreator->getPage()->getTimestamp() )
+ );
+
+ $expected = [
+ 'propertyCount' => 2,
+ 'propertyKeys' => [ '_MDAT', '_SKEY' ],
+ 'propertyValues' => [ $dvPageModificationTime->getISO8601Date(), 'SortForFoo' ],
+ ];
+
+ $this->semanticDataValidator->assertThatPropertiesAreSet(
+ $expected,
+ $this->getStore()->getSemanticData( $subject )
+ );
+ }
+
+ public function testAddedCategoryAndChangedDefaultsortWithoutPredefinedPropertiesForNewPage() {
+
+ $this->applicationFactory->getSettings()->set( 'smwgPageSpecialProperties', [] );
+
+ $title = Title::newFromText( __METHOD__ );
+ $subject = DIWikiPage::newFromTitle( $title );
+
+ $this->pageCreator
+ ->createPage( $title )
+ ->doEdit( '{{DEFAULTSORT:SortForFoo}} [[Category:SingleCategory]]' );
+
+ $expected = [
+ 'propertyCount' => 2,
+ 'propertyKeys' => [ '_SKEY', '_INST' ],
+ 'propertyValues' => [ 'SortForFoo', 'SingleCategory' ],
+ ];
+
+ $this->semanticDataValidator->assertThatPropertiesAreSet(
+ $expected,
+ $this->getStore()->getSemanticData( $subject )
+ );
+ }
+
+}