summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMorris Jobke <morris.jobke@gmail.com>2013-08-01 02:09:01 -0700
committerMorris Jobke <morris.jobke@gmail.com>2013-08-01 02:09:01 -0700
commit30963d60bc0bb206fc55d27f04b505ed59e0892d (patch)
treed98f7e8317ac0a74d6607bbb1061c0d77af7b694 /tests
parent0d69feb12e7dd4d970ac6c02f3ff375afa0baa95 (diff)
parenta4df982dc3b2f88078d0ef4a4dbe0fdc1d37105a (diff)
downloadnextcloud-server-30963d60bc0bb206fc55d27f04b505ed59e0892d.tar.gz
nextcloud-server-30963d60bc0bb206fc55d27f04b505ed59e0892d.zip
Merge pull request #4155 from owncloud/mdb2schemareader-booleans
Fix boolean support for xml schema definitions
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/db/mdb2schemareader.php80
-rw-r--r--tests/lib/db/testschema.xml77
2 files changed, 157 insertions, 0 deletions
diff --git a/tests/lib/db/mdb2schemareader.php b/tests/lib/db/mdb2schemareader.php
new file mode 100644
index 00000000000..b9b241194fd
--- /dev/null
+++ b/tests/lib/db/mdb2schemareader.php
@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace Test\DB;
+
+use Doctrine\DBAL\Platforms\MySqlPlatform;
+
+class MDB2SchemaReader extends \PHPUnit_Framework_TestCase {
+ /**
+ * @var \OC\DB\MDB2SchemaReader $reader
+ */
+ protected $reader;
+
+ /**
+ * @return \OC\Config
+ */
+ protected function getConfig() {
+ $config = $this->getMockBuilder('\OC\Config')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $config->expects($this->any())
+ ->method('getValue')
+ ->will($this->returnValueMap(array(
+ array('dbname', 'owncloud', 'testDB'),
+ array('dbtableprefix', 'oc_', 'test_')
+ )));
+ return $config;
+ }
+
+ public function testRead() {
+ $reader = new \OC\DB\MDB2SchemaReader($this->getConfig(), new MySqlPlatform());
+ $schema = $reader->loadSchemaFromFile(__DIR__ . '/testschema.xml');
+ $this->assertCount(1, $schema->getTables());
+
+ $table = $schema->getTable('test_table');
+ $this->assertCount(7, $table->getColumns());
+
+ $this->assertEquals(4, $table->getColumn('integerfield')->getLength());
+ $this->assertTrue($table->getColumn('integerfield')->getAutoincrement());
+ $this->assertNull($table->getColumn('integerfield')->getDefault());
+ $this->assertTrue($table->getColumn('integerfield')->getNotnull());
+ $this->assertInstanceOf('Doctrine\DBAL\Types\IntegerType', $table->getColumn('integerfield')->getType());
+
+ $this->assertSame(10, $table->getColumn('integerfield_default')->getDefault());
+
+ $this->assertEquals(32, $table->getColumn('textfield')->getLength());
+ $this->assertFalse($table->getColumn('textfield')->getAutoincrement());
+ $this->assertSame('foo', $table->getColumn('textfield')->getDefault());
+ $this->assertTrue($table->getColumn('textfield')->getNotnull());
+ $this->assertInstanceOf('Doctrine\DBAL\Types\StringType', $table->getColumn('textfield')->getType());
+
+ $this->assertNull($table->getColumn('clobfield')->getLength());
+ $this->assertFalse($table->getColumn('clobfield')->getAutoincrement());
+ $this->assertSame('', $table->getColumn('clobfield')->getDefault());
+ $this->assertTrue($table->getColumn('clobfield')->getNotnull());
+ $this->assertInstanceOf('Doctrine\DBAL\Types\TextType', $table->getColumn('clobfield')->getType());
+
+ $this->assertNull($table->getColumn('booleanfield')->getLength());
+ $this->assertFalse($table->getColumn('booleanfield')->getAutoincrement());
+ $this->assertFalse($table->getColumn('booleanfield')->getDefault());
+ $this->assertInstanceOf('Doctrine\DBAL\Types\BooleanType', $table->getColumn('booleanfield')->getType());
+
+ $this->assertTrue($table->getColumn('booleanfield_true')->getDefault());
+ $this->assertFalse($table->getColumn('booleanfield_false')->getDefault());
+
+ $this->assertCount(2, $table->getIndexes());
+ $this->assertEquals(array('integerfield'), $table->getIndex('primary')->getUnquotedColumns());
+ $this->assertTrue($table->getIndex('primary')->isPrimary());
+ $this->assertTrue($table->getIndex('primary')->isUnique());
+ $this->assertEquals(array('booleanfield'), $table->getIndex('index_boolean')->getUnquotedColumns());
+ $this->assertFalse($table->getIndex('index_boolean')->isPrimary());
+ $this->assertFalse($table->getIndex('index_boolean')->isUnique());
+ }
+}
diff --git a/tests/lib/db/testschema.xml b/tests/lib/db/testschema.xml
new file mode 100644
index 00000000000..509b55ee81f
--- /dev/null
+++ b/tests/lib/db/testschema.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<database>
+
+ <name>*dbname*</name>
+ <create>true</create>
+ <overwrite>false</overwrite>
+
+ <charset>utf8</charset>
+
+ <table>
+
+ <name>*dbprefix*table</name>
+
+ <declaration>
+ <field>
+ <name>integerfield</name>
+ <type>integer</type>
+ <default>0</default>
+ <notnull>true</notnull>
+ <autoincrement>1</autoincrement>
+ <length>4</length>
+ </field>
+ <field>
+ <name>integerfield_default</name>
+ <type>integer</type>
+ <default>10</default>
+ <notnull>true</notnull>
+ <length>4</length>
+ </field>
+ <field>
+ <name>textfield</name>
+ <type>text</type>
+ <default>foo</default>
+ <notnull>true</notnull>
+ <length>32</length>
+ </field>
+ <field>
+ <name>clobfield</name>
+ <type>clob</type>
+ <notnull>true</notnull>
+ </field>
+ <field>
+ <name>booleanfield</name>
+ <type>boolean</type>
+ </field>
+ <field>
+ <name>booleanfield_true</name>
+ <type>boolean</type>
+ <default>true</default>
+ </field>
+ <field>
+ <name>booleanfield_false</name>
+ <type>boolean</type>
+ <default>false</default>
+ </field>
+
+ <index>
+ <name>index_primary</name>
+ <primary>true</primary>
+ <unique>true</unique>
+ <field>
+ <name>integerfield</name>
+ <sorting>ascending</sorting>
+ </field>
+ </index>
+
+ <index>
+ <name>index_boolean</name>
+ <unique>false</unique>
+ <field>
+ <name>booleanfield</name>
+ <sorting>ascending</sorting>
+ </field>
+ </index>
+ </declaration>
+ </table>
+</database>