diff options
author | Morris Jobke <morris.jobke@gmail.com> | 2013-08-01 02:09:01 -0700 |
---|---|---|
committer | Morris Jobke <morris.jobke@gmail.com> | 2013-08-01 02:09:01 -0700 |
commit | 30963d60bc0bb206fc55d27f04b505ed59e0892d (patch) | |
tree | d98f7e8317ac0a74d6607bbb1061c0d77af7b694 /tests | |
parent | 0d69feb12e7dd4d970ac6c02f3ff375afa0baa95 (diff) | |
parent | a4df982dc3b2f88078d0ef4a4dbe0fdc1d37105a (diff) | |
download | nextcloud-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.php | 80 | ||||
-rw-r--r-- | tests/lib/db/testschema.xml | 77 |
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> |