69 lines
2.0 KiB
PHP
69 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace Doctrine\Tests\ORM\Functional\SchemaTool;
|
|
|
|
use Doctrine\DBAL\Schema\Schema;
|
|
|
|
require_once __DIR__ . '/../../../TestInit.php';
|
|
|
|
/**
|
|
* Functional tests for the Class Table Inheritance mapping strategy.
|
|
*
|
|
* @author robo
|
|
*/
|
|
class CompanySchemaTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|
{
|
|
protected function setUp()
|
|
{
|
|
$this->useModelSet('company');
|
|
parent::setUp();
|
|
}
|
|
|
|
/**
|
|
* @group DDC-966
|
|
* @return Schema
|
|
*/
|
|
public function testGeneratedSchema()
|
|
{
|
|
$schema = $this->_em->getConnection()->getSchemaManager()->createSchema();
|
|
|
|
$this->assertTrue($schema->hasTable('company_contracts'));
|
|
|
|
return $schema;
|
|
}
|
|
|
|
/**
|
|
* @group DDC-966
|
|
* @depends testGeneratedSchema
|
|
*/
|
|
public function testSingleTableInheritance(Schema $schema)
|
|
{
|
|
$table = $schema->getTable('company_contracts');
|
|
|
|
// Check nullability constraints
|
|
$this->assertTrue($table->getColumn('id')->getNotnull());
|
|
$this->assertTrue($table->getColumn('completed')->getNotnull());
|
|
$this->assertFalse($table->getColumn('salesPerson_id')->getNotnull());
|
|
$this->assertTrue($table->getColumn('discr')->getNotnull());
|
|
$this->assertFalse($table->getColumn('fixPrice')->getNotnull());
|
|
$this->assertFalse($table->getColumn('hoursWorked')->getNotnull());
|
|
$this->assertFalse($table->getColumn('pricePerHour')->getNotnull());
|
|
$this->assertFalse($table->getColumn('maxPrice')->getNotnull());
|
|
}
|
|
|
|
/**
|
|
* @group DBAL-115
|
|
*/
|
|
public function testDropPartSchemaWithForeignKeys()
|
|
{
|
|
if (!$this->_em->getConnection()->getDatabasePlatform()->supportsForeignKeyConstraints()) {
|
|
$this->markTestSkipped("Foreign Key test");
|
|
}
|
|
|
|
$sql = $this->_schemaTool->getDropSchemaSQL(array(
|
|
$this->_em->getClassMetadata('Doctrine\Tests\Models\Company\CompanyManager'),
|
|
));
|
|
$this->assertEquals(4, count($sql));
|
|
}
|
|
}
|