public function setUp()
    {
        if (!class_exists('\\ChildTable')) {
            $schema = <<<EOF
<database name="composite_number_range_test">
    <table name="parent_table">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" required="false" />
    </table>
    <table name="child_table">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" size="50" required="false" />
        <behavior name="\\APinnecke\\CompositeNumberRange\\CompositeNumberRangeBehavior">
            <parameter name="foreignTable" value="parent_table"/>
        </behavior>
    </table>
</database>
EOF;
            $builder = new QuickBuilder();
            $builder->setPlatform(new MysqlPlatform());
            $builder->setSchema($schema);
            $builder->build('mysql:host=127.0.0.1;dbname=' . getenv('DB_NAME'), getenv('DB_USER'), getenv('DB_PASS'), new MysqlAdapter());
        }
        $this->parent = new \ParentTable();
        $this->parent->setName('test');
        $this->parent->save();
        $this->parent2 = new \ParentTable();
        $this->parent2->setName('test2');
        $this->parent2->save();
        \ChildTableQuery::create()->deleteAll();
        \ParentTableSequenceQuery::create()->deleteAll();
    }
Ejemplo n.º 2
0
 /**
  * @param string $xml
  *
  * @return Database
  */
 public function applyXml($xml)
 {
     $this->readDatabase();
     $builder = new QuickBuilder();
     $builder->setPlatform($this->database->getPlatform());
     $builder->setSchema($xml);
     $database = $builder->getDatabase();
     $database->setSchema('migration');
     $database->setPlatform($this->database->getPlatform());
     $diff = DatabaseComparator::computeDiff($this->database, $database);
     if (false === $diff) {
         return null;
     }
     $sql = $this->database->getPlatform()->getModifyDatabaseDDL($diff);
     $this->con->beginTransaction();
     $statements = SqlParser::parseString($sql);
     foreach ($statements as $statement) {
         try {
             $stmt = $this->con->prepare($statement);
             $stmt->execute();
         } catch (\Exception $e) {
             $this->con->rollBack();
             throw new BuildException(sprintf("Can not execute SQL: \n%s\nFrom database: \n%s\n\nTo database: \n%s\n", $statement, $this->database, $database), null, $e);
         }
     }
     $this->con->commit();
     return $database;
 }
Ejemplo n.º 3
0
 /**
  * @param string $xml
  *
  * @return Database|boolean
  */
 public function applyXml($xml, $changeRequired = false)
 {
     $this->readDatabase();
     $builder = new QuickBuilder();
     $builder->setIdentifierQuoting(true);
     $builder->setPlatform($this->database->getPlatform());
     $builder->setSchema($xml);
     $database = $builder->getDatabase();
     $database->setSchema('migration');
     $database->setPlatform($this->database->getPlatform());
     $diff = DatabaseComparator::computeDiff($this->database, $database);
     if (false === $diff) {
         if ($changeRequired) {
             throw new BuildException(sprintf("No changes in schema to current database: \nSchema database:\n%s\n\nCurrent Database:\n%s", $database, $this->database));
         }
         return false;
     }
     $sql = $this->database->getPlatform()->getModifyDatabaseDDL($diff);
     $this->con->beginTransaction();
     if (!$sql) {
         throw new BuildException(sprintf('Ooops. There is a diff between current database and schema xml but no SQL has been generated. Change: %s', $diff));
     }
     $statements = SqlParser::parseString($sql);
     foreach ($statements as $statement) {
         try {
             $stmt = $this->con->prepare($statement);
             $stmt->execute();
         } catch (\Exception $e) {
             throw new BuildException(sprintf("Can not execute SQL: \n%s\nFrom database: \n%s\n\nTo database: \n%s\n", $statement, $this->database, $database), null, $e);
         }
     }
     $this->con->commit();
     return $database;
 }
Ejemplo n.º 4
0
    public function setUp()
    {
        if (!class_exists('\\Issue656TestObject')) {
            $schema = <<<EOF
<database>
    <table name="issue_656_test_object">
        <column name="ID" type="INTEGER" size="10" sqlType="int(10) unsigned" primaryKey="true" required="true" autoIncrement="true"/>
        <column name="Name" type="VARCHAR" size="45" required="true"/>
    </table>
    <table name="issue_656_test_object_from" isCrossRef="true">
        <column name="From" type="INTEGER" size="10" sqlType="int(10) unsigned" primaryKey="true" required="true"/>
        <column name="To" type="INTEGER" size="10" sqlType="int(10) unsigned" primaryKey="true" required="true"/>
        <foreign-key name="fk_test_object_from" foreignTable="issue_656_test_object">
            <reference local="From" foreign="ID"/>
        </foreign-key>
        <foreign-key name="fk_test_object_to" foreignTable="issue_656_test_object">
            <reference local="To" foreign="ID"/>
        </foreign-key>
    </table>
</database>
EOF;
            $builder = new QuickBuilder();
            $builder->setSchema($schema);
            $builder->buildClasses(null, true);
        }
    }
Ejemplo n.º 5
0
 public function setUp()
 {
     parent::setUp();
     $schema = file_get_contents(__DIR__ . '/../Resources/acl_schema.xml');
     if (!class_exists('Propel\\Bundle\\PropelBundle\\Model\\Acl\\Map\\AclClassTableMap')) {
         $classTargets = array('tablemap', 'object', 'query');
     } else {
         $classTargets = array();
     }
     $builder = new QuickBuilder();
     $builder->setSchema($schema);
     $this->con = $builder->build($dsn = null, $user = null, $pass = null, $adapter = null, $classTargets);
 }
    public function setUp()
    {
        if (!class_exists('MyNameSpace\\ComplexColumnTypeEntitySet')) {
            $schema = <<<EOF
<database name="generated_object_complex_type_test_set" namespace="MyNameSpace">
    <table name="complex_column_type_entity_set">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="tags" type="SET" valueSet="foo, bar, baz, 1, 4,(, foo bar " />
        <column name="bar" type="SET" valueSet="foo, bar" />
        <column name="defaults" type="SET" valueSet="foo, bar, foo baz" defaultValue="bar" />
        <column name="bears" type="SET" valueSet="foo, bar, baz, kevin" defaultValue="bar, baz" />
        
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
            // ok this is hackish but it makes testing of getter and setter independent of each other
            $publicAccessorCode = <<<EOF
class PublicComplexColumnTypeEntitySet extends MyNameSpace\\ComplexColumnTypeEntitySet
{
    public \$bar;
    public \$tags;
}
EOF;
            eval($publicAccessorCode);
        }
        ComplexColumnTypeEntitySetTableMap::doDeleteAll();
    }
    public function setUp()
    {
        parent::setUp();
        if (!class_exists('ConcreteInheritanceBehaviorWithBehaviorExclusionTest\\ConcreteInheritanceParentQuery')) {
            $schema = <<<EOF
<database name="concrete_inheritance_behavior_exclusion" namespace="ConcreteInheritanceBehaviorWithBehaviorExclusionTest">
    <table name="concrete_inheritance_parent" allowPkInsert="true">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <behavior name="sluggable">
            <parameter name="scope_column" value="title" />
        </behavior>
        <behavior name="timestampable" />
        <index>
            <index-column name="title" />
        </index>
    </table>
    <table name="concrete_inheritance_child" allowPkInsert="true">
        <column name="body" type="longvarchar" />
        <column name="author_id" required="false" type="INTEGER" />
        <behavior name="concrete_inheritance">
            <parameter name="extends" value="concrete_inheritance_parent" />
            <parameter name="copy_data_to_child" value="slug" />
            <parameter name="exclude_behaviors" value="sluggable" />
        </behavior>
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }
Ejemplo n.º 8
0
    public function setUp()
    {
        if (!class_exists('\\Issue733Test1')) {
            $schema = <<<EOF
<database name="issue_733_test">
    <table name="issue_733_test_1">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="foo" type="INTEGER" />
        <column name="bar" type="VARCHAR" size="100" />
        <behavior name="i18n">
            <parameter name="i18n_columns" value="bar" />
            <parameter name="locale_column" value="language" />
        </behavior>
    </table>   
    <table name="issue_733_test_2">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="foo" type="INTEGER" />
        <column name="bar" type="VARCHAR" size="100" />
        <behavior name="i18n">
            <parameter name="i18n_columns" value="bar" />
            <parameter name="locale_column" value="language" />
            <parameter name="locale_alias" value="culture" />
        </behavior>
    </table>
</database>
EOF;
            $this->con = QuickBuilder::buildSchema($schema);
        }
    }
    public function setUp()
    {
        if (!class_exists('\\OptimisticLockingTable')) {
            $schema = <<<EOF
<database name="optimistic_locker_behavior_test">
    <table name="optimistic_locking_table">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <column name="age" type="INTEGER" />
        <column name="related_id" type="INTEGER" />
        <behavior name="MJS\\OptimisticLocking\\OptimisticLockingBehavior" />
        <foreign-key foreignTable="optimistic_locking_related_table">
            <reference local="related_id" foreign="id" />
        </foreign-key>
    </table>
    <table name="optimistic_locking_related_table">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" size="100" primaryString="true" />
    </table>
    <table name="optimistic_locking_versionable_table">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <column name="age" type="INTEGER" />
        <column name="related_id" type="INTEGER" />
        <behavior name="MJS\\OptimisticLocking\\OptimisticLockingBehavior" />
        <behavior name="versionable" />
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }
    public function setUp()
    {
        if (!class_exists('\\I18nBehaviorTest11')) {
            $schema = <<<EOF
<database name="i18n_behavior_test_10" identifierQuoting="true">
    <table name="i18n_behavior_test_11">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="foo" type="INTEGER" />
        <column name="bar" type="VARCHAR" size="100" />
        <behavior name="i18n">
            <parameter name="i18n_columns" value="bar" />
        </behavior>
    </table>
    <table name="i18n_behavior_test_12">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="foo" type="INTEGER" />
        <column name="bar1" type="VARCHAR" size="100" />
        <column name="bar2" type="LONGVARCHAR" lazyLoad="true" />
        <column name="bar3" type="TIMESTAMP" />
        <column name="bar4" type="LONGVARCHAR" description="This is the Bar4 column" />
        <behavior name="i18n">
            <parameter name="i18n_columns" value="bar1,bar2,bar3,bar4" />
            <parameter name="default_locale" value="fr_FR" />
            <parameter name="locale_alias" value="culture" />
        </behavior>
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }
    public function setUp()
    {
        $this->c1 = new FooColumnValue2();
        $this->c1->bar = 1234;
        $this->c2 = new FooColumnValue2();
        $this->c2->bar = 5678;
        if (!class_exists('ComplexColumnTypeEntity10')) {
            $schema = <<<EOF
<database name="generated_query_complex_type_test_10">
    <table name="complex_column_type_entity_10">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="bar" type="OBJECT" />
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
            $e0 = new \ComplexColumnTypeEntity10();
            $e0->save();
            $e1 = new \ComplexColumnTypeEntity10();
            $e1->setBar($this->c1);
            $e1->save();
            $e2 = new \ComplexColumnTypeEntity10();
            $e2->setBar($this->c2);
            $e2->save();
            \ComplexColumnTypeEntity10Peer::clearInstancePool();
        }
    }
    public function testObjectColumnType()
    {
        $schema = <<<EOF
<database name="generated_object_complex_type_test_1">
    <table name="complex_column_type_entity_1">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="bar" type="OBJECT" />
    </table>
</database>
EOF;
        QuickBuilder::buildSchema($schema);
        $e = new \ComplexColumnTypeEntity1();
        $this->assertNull($e->getBar(), 'object columns are null by default');
        $c = new FooColumnValue();
        $c->bar = 1234;
        $e->setBar($c);
        $this->assertEquals($c, $e->getBar(), 'object columns can store objects');
        $e->setBar(null);
        $this->assertNull($e->getBar(), 'object columns are nullable');
        $e->setBar($c);
        $e->save();
        \ComplexColumnTypeEntity1Peer::clearInstancePool();
        $e = \ComplexColumnTypeEntity1Query::create()->findOne();
        $this->assertEquals($c, $e->getBar(), 'object columns are persisted');
    }
Ejemplo n.º 13
0
    public function setUp()
    {
        if (!class_exists('\\Base\\Issue1033Book')) {
            $schema = <<<EOF
<database>
    <table name="Issue1033Book">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" description="Book Id" />
        <column name="title" type="VARCHAR" required="true" description="Book Title" primaryString="true" />
    </table>
</database>
EOF;
            $builder = new QuickBuilder();
            $builder->setSchema($schema);
            $builder->buildClasses(null, true);
        }
    }
    public function setUp()
    {
        if (!class_exists('\\ComplexColumnTypeEntity11')) {
            $schema = <<<EOF
<database name="generated_object_complex_type_test_11">
    <table name="complex_column_type_entity_11">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="tags" type="ARRAY" />
        <column name="value_set" type="ARRAY" />
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
            $e0 = new \ComplexColumnTypeEntity11();
            $e0->save();
            $e1 = new \ComplexColumnTypeEntity11();
            $e1->setTags(array('foo', 'bar', 'baz'));
            $e1->save();
            $e2 = new \ComplexColumnTypeEntity11();
            $e2->setTags(array('bar'));
            $e2->save();
            $e3 = new \ComplexColumnTypeEntity11();
            $e3->setTags(array('bar23'));
            $e3->save();
        }
    }
Ejemplo n.º 15
0
    protected function setUp()
    {
        parent::setUp();
        if (!class_exists('\\Nature')) {
            $schema = '
            <database>
                <table name="recherche" phpName="Recherche">
                    <column name="id" type="integer" primaryKey="true" autoIncrement="true"/>
                </table>

                <table name="recherche_nature" phpName="RechercheNature" isCrossRef="true">
                    <column name="recherche_id" type="integer" primaryKey="true"/>
                    <column name="nature_id" type="integer" primaryKey="true"/>
                    <foreign-key foreignTable="recherche" onDelete="cascade">
                        <reference local="recherche_id" foreign="id"/>
                    </foreign-key>
                    <foreign-key foreignTable="nature">
                        <reference local="nature_id" foreign="id"/>
                    </foreign-key>
                </table>

                <table name="nature" phpName="Nature">
                    <column name="id" type="integer" primaryKey="true" autoIncrement="true"/>
                </table>
            </database>
            ';
            QuickBuilder::buildSchema($schema);
        }
    }
    public function setUp()
    {
        parent::setUp();
        if (!class_exists('ConcreteContentSetPkQuery')) {
            $schema = <<<EOF
<database name="concrete_content_set_pk">
    <table name="concrete_content_set_pk" allowPkInsert="true">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <index>
            <index-column name="title" />
        </index>

    </table>
    <table name="concrete_article_set_pk" allowPkInsert="true">
        <column name="body" type="longvarchar" />
        <column name="author_id" required="false" type="INTEGER" />
        <behavior name="concrete_inheritance">
            <parameter name="extends" value="concrete_content_set_pk" />
        </behavior>
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }
    public function setUp()
    {
        if (!class_exists('\\ChangeloggerBehaviorSingle')) {
            $schema = <<<EOF
<database name="changelogger_behavior_test">
    <table name="changelogger_behavior_single">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <column name="age" type="INTEGER" />
        <behavior name="MJS\\ChangeLogger\\ChangeLoggerBehavior">
            <parameter name="log" value="title"/>
            <parameter name="comment" value="true"/>
            <parameter name="created_by" value="true"/>
        </behavior>
    </table>
    <table name="changelogger_behavior_multiple">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <column name="age" type="INTEGER" />
        <behavior name="MJS\\ChangeLogger\\ChangeLoggerBehavior">
            <parameter name="log" value="title, age"/>
        </behavior>
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }
Ejemplo n.º 18
0
    public function setUp()
    {
        if (!class_exists('NestedSetTable9')) {
            $schema = <<<XML
<database name="bookstore-behavior" defaultIdMethod="native">
    <table name="nested_set_table9">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />

        <behavior name="nested_set" />
    </table>

    <table name="nested_set_table10">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <column name="my_left_column" type="INTEGER" required="false"/>
        <column name="my_right_column" type="INTEGER" required="false"/>
        <column name="my_level_column" type="INTEGER" required="false"/>
        <column name="my_scope_column" type="INTEGER" required="false"/>

        <behavior name="nested_set">
            <parameter name="left_column" value="my_left_column" />
            <parameter name="right_column" value="my_right_column" />
            <parameter name="level_column" value="my_level_column" />
            <parameter name="use_scope" value="true" />
            <parameter name="scope_column" value="my_scope_column" />
            <parameter name="method_proxies" value="true" />
        </behavior>
    </table>
</database>
XML;
            $this->con = QuickBuilder::buildSchema($schema);
        }
    }
    public function setUp()
    {
        if (!class_exists('\\ComplexColumnTypeEntitySet2')) {
            $schema = <<<EOF
<database name="generated_object_complex_type_test_set_2">
    <table name="complex_column_type_entity_set_2">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="tags" valueSet="foo, bar, baz, bar23" type="SET" />
        <column name="value_set" valueSet="foo, bar, baz, kevin" type="SET" />
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
            $e0 = new \ComplexColumnTypeEntitySet2();
            $e0->save();
            $e1 = new \ComplexColumnTypeEntitySet2();
            $e1->setTags(['foo', 'bar', 'baz']);
            $e1->save();
            $e2 = new \ComplexColumnTypeEntitySet2();
            $e2->setTags(['bar']);
            $e2->save();
            $e3 = new \ComplexColumnTypeEntitySet2();
            $e3->setTags(['bar23']);
            $e3->save();
        }
    }
    public function setUp()
    {
        if (!class_exists('\\ArchivableTest100')) {
            $schema = <<<EOF
<database name="archivable_behavior_test_100">

    <table name="archivable_test_100">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <column name="age" type="INTEGER" />
        <column name="foo_id" type="INTEGER" />
        <foreign-key foreignTable="archivable_test_200">
            <reference local="foo_id" foreign="id" />
        </foreign-key>
        <index>
            <index-column name="title" />
            <index-column name="age" />
        </index>
        <behavior name="archivable" />
    </table>

    <table name="archivable_test_200">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <behavior name="archivable" />
    </table>

    <table name="archivable_test_200_archive">
        <column name="id" required="true" primaryKey="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
    </table>

    <table name="archivable_test_300">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <column name="age" type="INTEGER" />
        <column name="foo_id" type="INTEGER" />
        <behavior name="archivable">
            <parameter name="log_archived_at" value="false" />
            <parameter name="archive_table" value="my_old_archivable_test_300" />
            <parameter name="archive_on_insert" value="true" />
            <parameter name="archive_on_update" value="true" />
            <parameter name="archive_on_delete" value="false" />
        </behavior>
    </table>

    <table name="archivable_test_400">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
        <column name="age" type="INTEGER" />
        <behavior name="archivable">
            <parameter name="archive_class" value="\\Propel\\Tests\\Generator\\Behavior\\Archivable\\FooArchive" />
        </behavior>
    </table>

</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }
Ejemplo n.º 21
0
    protected function setUp()
    {
        parent::setUp();
        if (!class_exists('Propel\\Bundle\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\CoolBook')) {
            $schema = <<<XML
<database name="default" package="vendor.bundles.Propel.Bundle.PropelBundle.Tests.Fixtures.DataFixtures.Loader" namespace="Propel\\Bundle\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader" defaultIdMethod="native">
    <table name="cool_book">
        <column name="id" type="integer" primaryKey="true" />
        <column name="name" type="varchar" size="255" />
        <column name="description" type="varchar" />
        <column name="author_id" type="integer" required="false" defaultValue="null" />
        <column name="complementary_infos" required="false" type="object" description="An object column" />

        <foreign-key foreignTable="cool_book_author" onDelete="CASCADE" onUpdate="CASCADE">
            <reference local="author_id" foreign="id" />
        </foreign-key>
    </table>

    <table name="cool_book_author">
        <column name="id" type="integer" primaryKey="true" />
        <column name="name" type="varchar" size="255" />
    </table>
</database>
XML;
            QuickBuilder::buildSchema($schema);
        }
        $this->con = Propel::getServiceContainer()->getConnection('default');
        $this->con->beginTransaction();
    }
    public function setUp()
    {
        if (!class_exists('TableWithStateMachineBehavior')) {
            $schema = <<<EOF
<database name="state_machine_behavior" defaultIdMethod="native">
    <table name="table_with_state_machine_behavior">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />

        <behavior name="state_machine">
            <parameter name="states" value="draft, unpublished, published" />

            <parameter name="initial_state" value="draft" />

            <parameter name="transition" value="draft to published with publish" />
            <parameter name="transition" value="published to unpublished with unpublish" />
            <parameter name="transition" value="unpublished to published with publish" />

            <parameter name="state_column" value="state" />
        </behavior>
    </table>
    <table name="table_with_state_machine_behavior_with_custom_column">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />

        <behavior name="state_machine">
            <parameter name="states" value="draft, published, not_yEt_published, flagged" />

            <parameter name="initial_state" value="draft" />

            <parameter name="transition" value="draft to published with publish" />
            <parameter name="transition" value="published to not_yet_published with unpublish" />
            <parameter name="transition" value="not_yEt_published to published with publish" />
            <parameter name="transition" value="not_yEt_published to flagged with flag_for_publish" />
            <parameter name="transition" value="flagged to published with publish" />

            <parameter name="state_column" value="my_state" />
        </behavior>
    </table>
</database>
EOF;
            $builder = new QuickBuilder();
            $config = $builder->getConfig();
            $builder->setConfig($config);
            $builder->setSchema($schema);
            $builder->build();
        }
    }
Ejemplo n.º 23
0
 private function checkDeletedFk()
 {
     $this->readDatabase();
     $diff = DatabaseComparator::computeDiff($this->database, $this->updatedBuilder->getDatabase());
     $sql = $this->database->getPlatform()->getModifyDatabaseDDL($diff);
     $expected = 'issue617_user';
     $this->assertNotContains($expected, $sql);
 }
Ejemplo n.º 24
0
    public function testValidateReturnsTrueForValidSchema()
    {
        $schema = <<<EOF
<database name="bookstore">
    <table name="book">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
    </table>
</database>
EOF;
        $builder = new QuickBuilder();
        $builder->setSchema($schema);
        $database = $builder->getDatabase();
        $appData = new AppData();
        $appData->addDatabase($database);
        $validator = new SchemaValidator($appData);
        $this->assertTrue($validator->validate());
    }
Ejemplo n.º 25
0
    public function setUp()
    {
        $schema = <<<SCHEMA
<database name="users" defaultIdMethod="native" namespace="Propel\\Bundle\\PropelBundle\\Tests\\Fixtures\\Model">
    <table name="user">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
        <column name="username" type="varchar" size="255" primaryString="true" />
        <column name="algorithm" type="varchar" size="50" />
        <column name="salt" type="varchar" size="255" />
        <column name="password" type="varchar" size="255" />
        <column name="expires_at" type="timestamp" />
        <column name="roles" type="array" />
    </table>
</database>
SCHEMA;
        $builder = new QuickBuilder();
        $builder->setSchema($schema);
        $classTargets = array('tablemap', 'object', 'query', 'querystub');
        $this->con = $builder->build($dsn = null, $user = null, $pass = null, $adapter = null, $classTargets);
    }
    public function setUp()
    {
        if (!class_exists('\\I18nBehaviorTest1')) {
            $schema = <<<EOF
<database name="i18n_behavior_test_1">
    <table name="i18n_behavior_test_1">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="foo" type="INTEGER" />
        <column name="bar" type="VARCHAR" size="100" />
        <behavior name="i18n">
            <parameter name="i18n_columns" value="bar" />
        </behavior>
    </table>
    <table name="i18n_behavior_test_2">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="foo" type="INTEGER" />
        <column name="bar1" type="VARCHAR" size="100" />
        <column name="bar2" type="LONGVARCHAR" lazyLoad="true" />
        <column name="bar3" type="TIMESTAMP" />
        <column name="bar4" type="LONGVARCHAR" description="This is the Bar4 column" />
        <behavior name="i18n">
            <parameter name="i18n_columns" value="bar1,bar2,bar3,bar4" />
            <parameter name="default_locale" value="fr_FR" />
            <parameter name="locale_alias" value="culture" />
        </behavior>
    </table>

    <table name="movie">
        <column name="id" type="integer" required="true" primaryKey="true" autoincrement="true" />
        <column name="director" type="varchar" size="255" />
        <column name="title" type="varchar" primaryString="true" />
        <behavior name="i18n">
            <parameter name="i18n_columns" value="title" />
            <parameter name="locale_alias" value="culture" />
        </behavior>
    </table>
    <table name="toy">
        <column name="id" type="integer" required="true" primaryKey="true" autoincrement="true" />
        <column name="ref" type="varchar" size="255" />
        <column name="name" type="varchar" size="255" />
        <behavior name="i18n">
            <parameter name="i18n_columns" value="name" />
            <parameter name="locale_alias" value="culture" />
        </behavior>
        <column name="movie_id" type="integer" />
        <foreign-key foreignTable="movie">
            <reference local="movie_id" foreign="id" />
        </foreign-key>
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }
Ejemplo n.º 27
0
    public function testNamespace()
    {
        $schema = <<<EOF
<?xml version="1.0" encoding="utf-8"?>
<database name="default" defaultIdMethod="native" namespace="Tests\\Issue730\\">
    <table name="issue730_group" idMethod="native" phpName="Group">
        <column name="id" phpName="Id" type="INTEGER" primaryKey="true" required="true"/>
        <column name="name" phpName="Name" type="VARCHAR" size="100" required="true"/>
    </table>
    <table name="issue730_department_group" idMethod="native" phpName="Group" namespace="\\Tests\\Issue730\\Department">
        <column name="id" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
        <column name="name" type="VARCHAR" size="100" required="true"/>
        <column name="group_id" phpName="GroupId" type="INTEGER"/>

        <foreign-key foreignTable="issue730_group" phpName="Group" refPhpName="DepartmentGroup">
            <reference local="group_id" foreign="id"/>
        </foreign-key>
    </table>
</database>
EOF;
        $quickBuilder = new QuickBuilder();
        $quickBuilder->setSchema($schema);
        $quickBuilder->setIdentifierQuoting(true);
        $platform = new SqlitePlatform();
        $quickBuilder->setPlatform($platform);
        $quickBuilder->build();
        $groupA = new \Tests\Issue730\Group();
        $groupA->setName('groupA');
        $departmentGroup = new \Tests\Issue730\Department\Group();
        $departmentGroup->setName('my department');
        $departmentGroup->setGroup($groupA);
        $this->assertEquals($groupA, $departmentGroup->getGroup());
        $departmentGroups = $groupA->getDepartmentGroups();
        $this->assertCount(1, $departmentGroups);
        $this->assertEquals($departmentGroup, $departmentGroups->getFirst());
        $groupA->save();
        $departmentGroups = \Tests\Issue730\Department\GroupQuery::create()->filterByGroup($groupA)->find();
        $this->assertCount(1, $departmentGroups);
        $this->assertEquals($departmentGroup, $departmentGroups->getFirst());
        $this->assertEquals('my department', $departmentGroups->getFirst()->getName());
    }
    public function setUp()
    {
        if (!class_exists('Foo\\MyClassWithInterface')) {
            $schema = <<<EOF
<database name="a-database" namespace="Foo">
    <table name="my_class_with_interface" interface="MyInterface">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" />
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }
    public function setup()
    {
        if (!class_exists('ComplexColumnTypeEntity1')) {
            $schema = <<<EOF
<database name="generated_object_complex_type_test_1">
    <table name="complex_column_type_entity_1">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="bar" type="OBJECT" />
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }
    public function setUp()
    {
        if (!class_exists('ComplexColumnTypeEntity103')) {
            $schema = <<<EOF
<database name="generated_object_complex_type_test_103">
    <table name="complex_column_type_entity_103">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="bar" type="ENUM" valueSet="foo, bar, baz, 1, 4,(, foo bar " />
    </table>
</database>
EOF;
            QuickBuilder::buildSchema($schema);
        }
    }