add tests for MDB2SchemaReader
This commit is contained in:
parent
d6c56b584a
commit
a4df982dc3
2 changed files with 157 additions and 0 deletions
80
tests/lib/db/mdb2schemareader.php
Normal file
80
tests/lib/db/mdb2schemareader.php
Normal file
|
@ -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());
|
||||
}
|
||||
}
|
77
tests/lib/db/testschema.xml
Normal file
77
tests/lib/db/testschema.xml
Normal file
|
@ -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 a new issue