parent
d6c56b584a
commit
a4df982dc3
@ -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()); |
||||
} |
||||
} |
@ -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> |
Loading…
Reference in new issue