From f0da0017706cb12e670693ecea19f6dfd881ae2d Mon Sep 17 00:00:00 2001 From: romanb Date: Sat, 5 Sep 2009 09:22:34 +0000 Subject: [PATCH] [2.0] Fixed and enhanced tests. --- .../Tests/Models/Generic/BooleanModel.php | 6 +- .../SchemaTool/MySqlSchemaToolTest.php | 2 +- .../SchemaTool/PostgreSqlSchemaToolTest.php | 70 +++++++++++++++++++ 3 files changed, 74 insertions(+), 4 deletions(-) diff --git a/tests/Doctrine/Tests/Models/Generic/BooleanModel.php b/tests/Doctrine/Tests/Models/Generic/BooleanModel.php index c414a4c1c..2c931563e 100644 --- a/tests/Doctrine/Tests/Models/Generic/BooleanModel.php +++ b/tests/Doctrine/Tests/Models/Generic/BooleanModel.php @@ -6,7 +6,7 @@ namespace Doctrine\Tests\Models\Generic; * @Entity * @Table(name="boolean_model") */ -class DecimalModel +class BooleanModel { /** * @Id @Column(type="integer") @@ -14,7 +14,7 @@ class DecimalModel */ public $id; /** - * @Column(type="boolean", default=true) + * @Column(type="boolean") */ - public $boolean; + public $booleanField; } \ No newline at end of file diff --git a/tests/Doctrine/Tests/ORM/Functional/SchemaTool/MySqlSchemaToolTest.php b/tests/Doctrine/Tests/ORM/Functional/SchemaTool/MySqlSchemaToolTest.php index db9bf376c..58678e273 100644 --- a/tests/Doctrine/Tests/ORM/Functional/SchemaTool/MySqlSchemaToolTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/SchemaTool/MySqlSchemaToolTest.php @@ -60,7 +60,7 @@ class MySqlSchemaToolTest extends \Doctrine\Tests\OrmFunctionalTestCase $sql = $tool->getCreateSchemaSql($classes); $this->assertEquals(1, count($sql)); - $this->assertEquals("CREATE TABLE boolean_model (id INT AUTO_INCREMENT NOT NULL, boolean DEFAULT 1 NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB", $sql[0]); + $this->assertEquals("CREATE TABLE boolean_model (id INT AUTO_INCREMENT NOT NULL, booleanField TINYINT(1) NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB", $sql[0]); } public function testGetUpdateSchemaSql() diff --git a/tests/Doctrine/Tests/ORM/Functional/SchemaTool/PostgreSqlSchemaToolTest.php b/tests/Doctrine/Tests/ORM/Functional/SchemaTool/PostgreSqlSchemaToolTest.php index b3d9bbc7f..800fbd7f1 100644 --- a/tests/Doctrine/Tests/ORM/Functional/SchemaTool/PostgreSqlSchemaToolTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/SchemaTool/PostgreSqlSchemaToolTest.php @@ -1 +1,71 @@ _em->getConnection()->getDatabasePlatform()->getName() !== 'postgresql') { + $this->markTestSkipped('The ' . __CLASS__ .' requires the use of postgresql.'); + } + } + + public function testGetCreateSchemaSql() + { + $classes = array( + $this->_em->getClassMetadata('Doctrine\Tests\Models\CMS\CmsAddress'), + $this->_em->getClassMetadata('Doctrine\Tests\Models\CMS\CmsUser'), + $this->_em->getClassMetadata('Doctrine\Tests\Models\CMS\CmsPhonenumber'), + ); + + $tool = new SchemaTool($this->_em); + $sql = $tool->getCreateSchemaSql($classes); + $this->assertEquals(count($sql), 10); + + $this->assertEquals("CREATE TABLE cms_addresses (id INT NOT NULL, country VARCHAR(50) NOT NULL, zip VARCHAR(50) NOT NULL, city VARCHAR(50) NOT NULL, user_id INT DEFAULT NULL, PRIMARY KEY(id))", $sql[0]); + $this->assertEquals("CREATE TABLE cms_users_groups (user_id INT DEFAULT NULL, group_id INT DEFAULT NULL, PRIMARY KEY(user_id, group_id))", $sql[1]); + $this->assertEquals("CREATE TABLE cms_users (id INT NOT NULL, status VARCHAR(50) NOT NULL, username VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))", $sql[2]); + $this->assertEquals("CREATE TABLE cms_phonenumbers (phonenumber VARCHAR(50) NOT NULL, user_id INT DEFAULT NULL, PRIMARY KEY(phonenumber))", $sql[3]); + $this->assertEquals("ALTER TABLE cms_addresses ADD FOREIGN KEY (user_id) REFERENCES cms_users(id) NOT DEFERRABLE INITIALLY IMMEDIATE", $sql[4]); + $this->assertEquals("ALTER TABLE cms_users_groups ADD FOREIGN KEY (user_id) REFERENCES cms_users(id) NOT DEFERRABLE INITIALLY IMMEDIATE", $sql[5]); + $this->assertEquals("ALTER TABLE cms_users_groups ADD FOREIGN KEY (group_id) REFERENCES cms_groups(id) NOT DEFERRABLE INITIALLY IMMEDIATE", $sql[6]); + $this->assertEquals("ALTER TABLE cms_phonenumbers ADD FOREIGN KEY (user_id) REFERENCES cms_users(id) NOT DEFERRABLE INITIALLY IMMEDIATE", $sql[7]); + $this->assertEquals("CREATE SEQUENCE cms_addresses_id_seq INCREMENT BY 20 START 1", $sql[8]); + $this->assertEquals("CREATE SEQUENCE cms_users_id_seq INCREMENT BY 20 START 1", $sql[9]); + } + + public function testGetCreateSchemaSql2() + { + $classes = array( + $this->_em->getClassMetadata('Doctrine\Tests\Models\Generic\DecimalModel') + ); + + $tool = new SchemaTool($this->_em); + $sql = $tool->getCreateSchemaSql($classes); + + $this->assertEquals(2, count($sql)); + + $this->assertEquals("CREATE TABLE decimal_model (id INT NOT NULL, decimal NUMERIC(2, 5) NOT NULL, PRIMARY KEY(id))", $sql[0]); + $this->assertEquals("CREATE SEQUENCE decimal_model_id_seq INCREMENT BY 20 START 1", $sql[1]); + } + + public function testGetCreateSchemaSql3() + { + $classes = array( + $this->_em->getClassMetadata('Doctrine\Tests\Models\Generic\BooleanModel') + ); + + $tool = new SchemaTool($this->_em); + $sql = $tool->getCreateSchemaSql($classes); + + $this->assertEquals(2, count($sql)); + $this->assertEquals("CREATE TABLE boolean_model (id INT NOT NULL, booleanField BOOLEAN NOT NULL, PRIMARY KEY(id))", $sql[0]); + $this->assertEquals("CREATE SEQUENCE boolean_model_id_seq INCREMENT BY 20 START 1", $sql[1]); + } +}