add tests for MDB2SchemaReader

This commit is contained in:
Robin Appelman 2013-07-29 16:33:27 +02:00
parent d6c56b584a
commit a4df982dc3
2 changed files with 157 additions and 0 deletions

View 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());
}
}

View 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>