public function setUp()
    {
        if (!class_exists('Post')) {
            $schema = <<<EOF
<database name="lockable_behavior" defaultIdMethod="native">
    <table name="post">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />

        <column name="title" type="varchar" size="255" />
        <column name="description" type="longvarchar" />

        <behavior name="lockable">
            <parameter name="apply_to" value="title, description" />
            <parameter name="with_description" value="true" />
        </behavior>
    </table>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $config = $builder->getConfig();
            $config->setBuildProperty('behavior.visibility.class', '../src/LockableBehavior');
            $builder->setConfig($config);
            $builder->setSchema($schema);
            $builder->build();
        }
    }
    public function setUp()
    {
        $tables = array('Post' => <<<EOF
<database name="event_dispatcher_behavior" defaultIdMethod="native">
    <table name="post">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" required="true" />

        <behavior name="event_dispatcher" />
    </table>
</database>
EOF
, 'Thread' => <<<EOF
<database name="event_dispatcher_behavior2" defaultIdMethod="native">
    <table name="thread">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="text" type="VARCHAR" required="true" />
        <column name="allowed" type="boolean" required="true" defaultValue="false" />

        <behavior name="event_dispatcher" />
    </table>
</database>
EOF
);
        foreach ($tables as $className => $schema) {
            if (!class_exists($className)) {
                $builder = new PropelQuickBuilder();
                $config = $builder->getConfig();
                $config->setBuildProperty('behavior.event_dispatcher.class', '../src/EventDispatcherBehavior');
                $builder->setConfig($config);
                $builder->setSchema($schema);
                $builder->build();
            }
        }
    }
Пример #3
0
    protected function setUp()
    {
        parent::setUp();
        $this->loadPropelQuickBuilder();
        $schema = <<<XML
<database name="default" package="vendor.bundles.Propel.PropelBundle.Tests.Fixtures.DataFixtures.Loader" namespace="Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader" defaultIdMethod="native">
    <table name="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="book_author" onDelete="RESTRICT" onUpdate="CASCADE">
            <reference local="author_id" foreign="id" />
        </foreign-key>
    </table>

    <table name="book_author">
        <column name="id" type="integer" primaryKey="true" />
        <column name="name" type="varchar" size="255" />
    </table>
</database>
XML;
        $builder = new \PropelQuickBuilder();
        $builder->setSchema($schema);
        if (class_exists('Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\Book')) {
            $builder->setClassTargets(array());
        }
        $this->con = $builder->build();
    }
Пример #4
0
    public function testYamlLoadManyToMany()
    {
        $schema = <<<XML
<database name="default" package="vendor.bundles.Propel.PropelBundle.Tests.Fixtures.DataFixtures.Loader" namespace="Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader" defaultIdMethod="native">
    <table name="book" phpName="YamlManyToManyBook">
        <column name="id" type="integer" primaryKey="true" />
        <column name="name" type="varchar" size="255" />
    </table>

    <table name="author" phpName="YamlManyToManyAuthor">
        <column name="id" type="integer" primaryKey="true" />
        <column name="name" type="varchar" size="255" />
    </table>

    <table name="book_author" phpName="YamlManyToManyBookAuthor">
        <column name="book_id" type="integer" required="true" primaryKey="true" />
        <column name="author_id" type="integer" required="true" primaryKey="true" />

        <foreign-key foreignTable="book" phpName="Book" onDelete="CASCADE" onUpdate="CASCADE">
            <reference local="book_id" foreign="id" />
        </foreign-key>
        <foreign-key foreignTable="author" phpName="Author" onDelete="CASCADE" onUpdate="CASCADE">
            <reference local="author_id" foreign="id" />
        </foreign-key>
    </table>
</database>
XML;
        $fixtures = <<<YAML
Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\YamlManyToManyAuthor:
    Author_1:
        name: 'A famous one'
Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\YamlManyToManyBook:
    Book_1:
        name: 'An important one'
Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\YamlManyToManyBookAuthor:
    BookAuthor_1:
        book_id: Book_1
        author_id: Author_1

YAML;
        $filename = $this->getTempFile($fixtures);
        $builder = new \PropelQuickBuilder();
        $builder->setSchema($schema);
        $con = $builder->build();
        $loader = new YamlDataLoader(__DIR__ . '/../../Fixtures/DataFixtures/Loader');
        $loader->load(array($filename), 'default');
        $books = \Propel\PropelBundle\Tests\Fixtures\DataFixtures\Loader\YamlManyToManyBookPeer::doSelect(new \Criteria(), $con);
        $this->assertCount(1, $books);
        $this->assertInstanceOf('Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\YamlManyToManyBook', $books[0]);
        $authors = \Propel\PropelBundle\Tests\Fixtures\DataFixtures\Loader\YamlManyToManyAuthorPeer::doSelect(new \Criteria(), $con);
        $this->assertCount(1, $authors);
        $this->assertInstanceOf('Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\YamlManyToManyAuthor', $authors[0]);
        $bookAuthors = \Propel\PropelBundle\Tests\Fixtures\DataFixtures\Loader\YamlManyToManyBookAuthorPeer::doSelect(new \Criteria(), $con);
        $this->assertCount(1, $bookAuthors);
        $this->assertInstanceOf('Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\YamlManyToManyBookAuthor', $bookAuthors[0]);
    }
    public function setUp()
    {
        $this->schema = <<<EOF
<database name="bookstore" defaultIdMethod="native">
    <table name="typehinted_object">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" size="100" primaryString="true" />
        <column name="roles" type="array" />

        <behavior name="typehintable">
            <parameter name="roles" value="array" />
        </behavior>
    </table>

    <table name="typehinted_user">
        <column name="id" type="INTEGER" primaryKey="true" autoIncrement="true"/>
        <column name="name" type="VARCHAR" size="32"/>
        <column name="catched_exception" type="OBJECT" />
        <column name="foo" type="OBJECT" />

        <behavior name="typehintable">
            <parameter name="typehinted_group" value="BaseTypehintedGroup" />
            <parameter name="catched_exception" value="Exception" />
            <parameter name="foo" value="TypehintedUser" />

            <parameter name="nullable_columns" value="foo, catched_exception" />
        </behavior>
    </table>

    <table name="typehinted_group">
        <column name="id" type="INTEGER" primaryKey="true" autoIncrement="true"/>
        <column name="name" type="VARCHAR" size="32"/>
    </table>

    <table name="typehinted_user_group" isCrossRef="true">
        <column name="user_id" type="INTEGER" primaryKey="true"/>
        <column name="group_id" type="INTEGER" primaryKey="true"/>

        <foreign-key foreignTable="typehinted_user">
            <reference local="user_id" foreign="id"/>
        </foreign-key>
        <foreign-key foreignTable="typehinted_group">
            <reference local="group_id" foreign="id"/>
        </foreign-key>
    </table>
</database>
EOF;
        if (!class_exists('TypehintedObject')) {
            $builder = new PropelQuickBuilder();
            $config = $builder->getConfig();
            $config->setBuildProperty('behavior.typehintable.class', __DIR__ . '/../src/TypehintableBehavior');
            $builder->setConfig($config);
            $builder->setSchema($this->schema);
            $builder->build();
        }
    }
Пример #6
0
 protected function simpleBuild($SchemaFile, $Namespace)
 {
     $XML = $this->LoadSchema($SchemaFile, $Namespace);
     $builder = new \PropelQuickBuilder();
     $config = $builder->getConfig();
     $config->setBuildProperty('behaviorCacheableClass', 'RickySu\\CacheableBehaviorBundle\\Behavior\\CacheableBehavior');
     $builder->setConfig($config);
     $builder->setSchema($XML);
     $builder->build();
 }
 public function setUp()
 {
     parent::setUp();
     $this->loadPropelQuickBuilder();
     $schema = file_get_contents(__DIR__ . '/../Fixtures/translation_schema.xml');
     $builder = new \PropelQuickBuilder();
     $builder->setSchema($schema);
     if (class_exists('Propel\\PropelBundle\\Tests\\Fixtures\\Model\\map\\TranslationTableMap')) {
         $builder->setClassTargets(array());
     }
     $this->con = $builder->build();
 }
Пример #8
0
 public function setUp()
 {
     parent::setUp();
     $schema = file_get_contents(__DIR__ . '/../Resources/config/propel/acl_schema.xml');
     $builder = new \PropelQuickBuilder();
     $builder->setSchema($schema);
     if (!class_exists('Propel\\Bundle\\PropelAclBundle\\Model\\Acl\\map\\AclClassTableMap')) {
         $builder->setClassTargets(array('tablemap', 'peer', 'object', 'query'));
     } else {
         $builder->setClassTargets(array());
     }
     $this->con = $builder->build();
 }
    protected function setUp()
    {
        //begin of setting runtime environments
        $fileSystem = vfsStream::setup();
        $this->className = 'ExampleInstantiator';
        $this->extends = '\\stdClass';
        $this->indention = '  ';
        $this->namespace = 'Test\\Net\\Bazzline\\Propel';
        $this->path = $fileSystem->url();
        $this->prefix = 'create';
        //end of setting runtime environments
        $buildIsNeeded = !class_exists('TableOne') || !class_exists('TableTwo');
        if ($buildIsNeeded) {
            $schema = <<<EOF
<database name="example_database" defaultIdMethod="native">
    <behavior name="add_to_entity_instantiator">
        <parameter name="entity_instantiator_class_name" value="{$this->className}" />
        <parameter name="entity_instantiator_extends" value="{$this->extends}" />
        <parameter name="entity_instantiator_indention" value="{$this->indention}" />
        <parameter name="entity_instantiator_namespace" value="{$this->namespace}" />
        <parameter name="entity_instantiator_path_to_output" value="{$this->path}" />
        <parameter name="entity_method_name_prefix" value="{$this->prefix}" />
        <parameter name="entity_add_to_entity_instantiator" value="true" />
    </behavior>

    <table name="table_one">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
    </table>

    <table name="table_two">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />

        <behavior name="add_to_entity_instantiator">
            <parameter name="entity_add_to_entity_instantiator" value="false" />
        </behavior>
    </table>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $configuration = $builder->getConfig();
            $configuration->setBuildProperty('behavior.add_to_entity_instantiator.class', __DIR__ . '/../source/AddToEntityInstantiatorBehavior');
            $builder->setConfig($configuration);
            $builder->setSchema($schema);
            $builder->build();
            //we have to call generate manually since it is called only when php execution is finished
            Manager::getInstance()->generate();
        }
    }
    public function setUp()
    {
        if (!class_exists('DateTimeColumnTypeEntity')) {
            $schema = <<<EOF
<database name="generated_object_datetime_type_test">
    <table name="date_time_column_type_entity" idMethod="native">
        <column name="id" primaryKey="true" type="INTEGER" phpName="Id" required="true"/>
        <column name="primary_date" primaryKey="true" type="DATE" phpName="PrimaryDate" required="true"/>
    </table>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $builder->getConfig()->setBuildProperty('defaultDateFormat', null);
            $builder->setSchema($schema);
            $builder->build();
        }
    }
Пример #11
0
 protected function loadAndBuild()
 {
     $this->loadPropelQuickBuilder();
     if (!class_exists('Glorpen\\Propel\\PropelBundle\\Tests\\Fixtures\\Model\\Book', false)) {
         $builder = new \PropelQuickBuilder();
         $builder->getConfig()->setBuildProperty('behaviorEventClass', 'Behaviors.EventBehavior');
         $builder->getConfig()->setBuildProperty('behaviorExtendClass', 'Behaviors.ExtendBehavior');
         $builder->setSchema(static::$schema);
         $builder->setClassTargets(array('tablemap', 'peer', 'object', 'query', 'peerstub', 'querystub'));
         file_put_contents("/tmp/a.php", $builder->getClasses());
         $builder->build();
         $con = new EventPropelPDO('sqlite::memory:');
         $con->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_WARNING);
         $name = $builder->getDatabase()->getName();
         \Propel::setConnection($name, $con, \Propel::CONNECTION_READ);
         \Propel::setConnection($name, $con, \Propel::CONNECTION_WRITE);
         $builder->buildSQL($con);
     }
 }
    public function setUp()
    {
        parent::setUp();
        if (!class_exists('My\\NestedSet1')) {
            $schema = <<<EOF
<database name="nested_set_database" namespace="My">
    <table name="nested_set_1">
        <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>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $builder->setSchema($schema);
            $builder->build();
        }
    }
    public function setUp()
    {
        if (!class_exists('Post')) {
            $schema = <<<EOF
<database name="create_entity_behavior" defaultIdMethod="native">
    <table name="Post">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />

        <behavior name="create_entity" />
    </table>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $configuration = $builder->getConfig();
            $configuration->setBuildProperty('behavior.create_entity.class', '../source/CreateEntityBehavior');
            $builder->setConfig($configuration);
            $builder->setSchema($schema);
            $builder->build();
        }
    }
    public function setUp()
    {
        if (!class_exists('TestModel')) {
            $schema = <<<EOF
<database name="TestDatabase" defaultIdMethod="native">
    <table name="TestModel">
        <column name="id" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true" />
        <column name="email_address" phpName="EmailAddress" type="VARCHAR" size="100" required="true" />
        <behavior name="auditable" />
    </table>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $config = $builder->getConfig();
            $config->setBuildProperty('behavior.auditable.class', __DIR__ . '/../src/AuditableBehavior');
            $builder->setConfig($config);
            $builder->setSchema($schema);
            $this->con = $builder->build();
        }
    }
    public function setUp()
    {
        if (!class_exists('My\\Post')) {
            $schema = <<<EOF
<database name="event_dispatcher_behavior" defaultIdMethod="native" namespace="My">
    <table name="post">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" required="true" />

        <behavior name="event_dispatcher" />
    </table>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $config = $builder->getConfig();
            $config->setBuildProperty('behavior.event_dispatcher.class', '../src/EventDispatcherBehavior');
            $builder->setConfig($config);
            $builder->setSchema($schema);
            $builder->build();
        }
    }
    /**
     * test if issue 425 is resolved
     */
    public function testLoadBehavior()
    {
        $schema = <<<SCHEMA
<database xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="http://xsd.propelorm.org/1.6/database.xsd"
          name="default" defaultIdMethod="native">
    <table name="dummyTable">
        <behavior name="foobar"/>
        <column name="dummyField1" type="char" size="36" required="true" primaryKey="true" />
        <column name="dummyField2" type="integer" required="true" />
    </table>
</database>
SCHEMA;
        $generatorConfig = new \QuickGeneratorConfig();
        $generatorConfig->setBuildProperty('behaviorFoobarClass', 'Foobar\\Behavior\\Foobar');
        $builder = new \PropelQuickBuilder();
        $builder->setConfig($generatorConfig);
        $builder->setSchema($schema);
        $builder->build();
        $this->assertTrue(class_exists('DummyTable'), 'dummy table class is correctly generated');
    }
    public function setUp()
    {
        if (!class_exists('Author')) {
            $schema = <<<EOF
<database name="bookstore" defaultIdMethod="native">
    <table name="author">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="first_name" type="VARCHAR" size="255" />
        <column name="last_name" type="VARCHAR" size="255" />
        <behavior name="providerBase" />
    </table>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $config = $builder->getConfig();
            $config->setBuildProperty('behavior.provider_base.class', __DIR__ . '/../src/ProviderBaseBehavior/ProviderBaseBehavior');
            $builder->setConfig($config);
            $builder->setSchema($schema);
            $con = $builder->build();
        }
    }
Пример #18
0
    public function setUp()
    {
        $this->loadPropelQuickBuilder();
        $schema = <<<SCHEMA
<database name="users" defaultIdMethod="native" namespace="Propel\\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 \PropelQuickBuilder();
        $builder->setSchema($schema);
        $builder->setClassTargets(array('tablemap', 'peer', 'object', 'query', 'peerstub', 'querystub'));
        $builder->build();
    }
    public function setUp()
    {
        parent::setUp();
        if (!class_exists('PhpNameTest\\Page')) {
            $schema = <<<XML
<database name="php_name_test" namespace="PhpNameTest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xsd.propelorm.org/1.6/database.xsd">
    <table name="php_name_test_page" phpName="Page">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
    </table>

    <table name="php_name_test_author" phpName="Author">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" size="100" primaryString="true" />
    </table>

    <table name="php_name_test_author_page" phpName="AuthorPage" isCrossRef="true">
        <column name="author_id" required="true" primaryKey="true" autoIncrement="false" type="INTEGER" />
        <column name="page_id" required="true" primaryKey="true" autoIncrement="false" type="INTEGER" />

        <foreign-key foreignTable="php_name_test_author">
            <reference local="author_id" foreign="id" />
        </foreign-key>
        <foreign-key foreignTable="php_name_test_page" refPhpName="Writer">
            <reference local="page_id" foreign="id" />
        </foreign-key>
    </table>
</database>
XML;
            $builder = new PropelQuickBuilder();
            $builder->setSchema($schema);
            $builder->build();
        }
        // Clear existing data, if any.
        \PhpNameTest\PagePeer::doDeleteAll();
        \PhpNameTest\AuthorPeer::doDeleteAll();
        \PhpNameTest\AuthorPagePeer::doDeleteAll();
    }
    public function setUp()
    {
        if (!class_exists('Foo')) {
            $schema = <<<EOF
<database name="hstore_behavior" defaultIdMethod="native">
    <table name="foo">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" required="true" />
        <column name="property" type="VARCHAR" required="true" />

        <behavior name="postgres_hstore">
            <parameter name="column_name" value="property" />
        </behavior>
    </table>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $config = $builder->getConfig();
            $config->setBuildProperty('behavior.postgres_hstore.class', '../src/PostgresHstoreBehavior');
            $builder->setConfig($config);
            $builder->setSchema($schema);
            $builder->build();
        }
    }
 /**
  * @return \PropelPDO
  */
 protected function getMockPropelConnection()
 {
     if (!class_exists('Lexik\\Bundle\\TranslationBundle\\Propel\\om\\BaseFile')) {
         // classes are built in-memory.
         $builder = new \PropelQuickBuilder();
         $builder->setSchema(file_get_contents(__DIR__ . '/../../Resources/config/propel/schema.xml'));
         $builder->setClassTargets(array('tablemap', 'peer', 'object', 'query'));
         $con = $builder->build();
     } else {
         // in memory-classes already exist, create connection and SQL manually
         $dsn = 'sqlite::memory:';
         $adapter = new \DBSQLite();
         $con = new \PropelPDO($dsn, null, null);
         $con->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_WARNING);
         $name = 'default';
         if (!\Propel::isInit()) {
             \Propel::setConfiguration(array('datasources' => array('default' => $name)));
         }
         \Propel::setDB($name, $adapter);
         \Propel::setConnection($name, $con, \Propel::CONNECTION_READ);
         \Propel::setConnection($name, $con, \Propel::CONNECTION_WRITE);
         // don't rebuild classes
         $builder = new \PropelQuickBuilder();
         $builder->setSchema(file_get_contents(__DIR__ . '/../../Resources/config/propel/schema.xml'));
         $builder->buildSQL($con);
     }
     return $con;
 }
Пример #22
0
<?php

/*
 * This file is part of the FOSUserBundle package.
 *
 * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
if (!($loader = @(include __DIR__ . '/../vendor/autoload.php'))) {
    echo <<<EOT
You need to install the project dependencies using Composer:
\$ wget http://getcomposer.org/composer.phar
OR
\$ curl -s https://getcomposer.org/installer | php
\$ php composer.phar install --dev
\$ phpunit
EOT;
    exit(1);
}
if (class_exists('Propel')) {
    set_include_path(__DIR__ . '/../vendor/phing/phing/classes' . PATH_SEPARATOR . get_include_path());
    $class = new \ReflectionClass('TypehintableBehavior');
    $builder = new \PropelQuickBuilder();
    $builder->getConfig()->setBuildProperty('behavior.typehintable.class', $class->getFileName());
    $builder->setSchema(file_get_contents(__DIR__ . '/../Resources/config/propel/schema.xml'));
    $builder->setClassTargets(array('tablemap', 'peer', 'object', 'query'));
    $builder->build();
}
    public function testDisableUpdatedAt()
    {
        $schema = <<<EOF
<database name="timestampable_database">
    <table name="table_without_updated_at">
        <column name="id" type="INTEGER" primaryKey="true" />

        <behavior name="timestampable">
            <parameter name="disable_updated_at" value="true" />
        </behavior>
    </table>
</database>
EOF;
        $builder = new PropelQuickBuilder();
        $builder->setSchema($schema);
        $builder->build();
        $this->assertTrue(method_exists('TableWithoutUpdatedAt', 'getCreatedAt'));
        $this->assertTrue(method_exists('TableWithoutUpdatedAt', 'setCreatedAt'));
        $this->assertFalse(method_exists('TableWithoutUpdatedAt', 'getUpdatedAt'));
        $this->assertFalse(method_exists('TableWithoutUpdatedAt', 'setUpdatedAt'));
        $obj = new TableWithoutUpdatedAt();
        $this->assertNull($obj->getCreatedAt());
        $this->assertEquals(1, $obj->save());
        $this->assertNotNull($obj->getCreatedAt());
    }
    public function setUp()
    {
        if (!class_exists('GeocodedObject')) {
            $schema = <<<EOF
<database name="bookstore" defaultIdMethod="native">
    <table name="simple_geocoded_object">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <behavior name="geocodable" />
    </table>

    <table name="geocoded_object">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" size="100" primaryString="true" />
        <column name="street" type="VARCHAR" size="100" primaryString="true" />
        <column name="city" type="VARCHAR" size="100" primaryString="true" />
        <column name="country" type="VARCHAR" size="100" primaryString="true" />

        <behavior name="geocodable">
            <!-- IP -->
            <parameter name="geocode_ip" value="true" />
            <!-- Address -->
            <parameter name="geocode_address" value="true" />
            <parameter name="address_columns" value="street, city, country" />
            <!-- Geocoder -->
            <parameter name="geocoder_api_key" value="YOUR_API_KEY" />
        </behavior>
    </table>

    <table name="geocoded_object_no_autoupdate">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" size="100" primaryString="true" />
        <column name="street" type="VARCHAR" size="100" primaryString="true" />
        <column name="city" type="VARCHAR" size="100" primaryString="true" />
        <column name="country" type="VARCHAR" size="100" primaryString="true" />

        <behavior name="geocodable">
            <parameter name="auto_update" value="false" />
            <!-- IP -->
            <parameter name="geocode_ip" value="true" />
            <!-- Address -->
            <parameter name="geocode_address" value="true" />
            <parameter name="address_columns" value="street, city, country" />
            <!-- Geocoder -->
            <parameter name="geocoder_api_key" value="YOUR_API_KEY" />
        </behavior>
    </table>

    <table name="geocoded_object_key_provider">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" size="100" primaryString="true" />
        <column name="street" type="VARCHAR" size="100" primaryString="true" />
        <column name="city" type="VARCHAR" size="100" primaryString="true" />
        <column name="country" type="VARCHAR" size="100" primaryString="true" />

        <behavior name="geocodable">
            <!-- IP -->
            <parameter name="geocode_ip" value="true" />
            <!-- Address -->
            <parameter name="geocode_address" value="true" />
            <parameter name="address_columns" value="street, city, country" />
            <!-- Geocoder -->
            <parameter name="geocoder_api_key_provider" value="GeoApikeyProvider" />
        </behavior>
    </table>

    <table name="geocoded_object_key_provider_static">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" size="100" primaryString="true" />
        <column name="street" type="VARCHAR" size="100" primaryString="true" />
        <column name="city" type="VARCHAR" size="100" primaryString="true" />
        <column name="country" type="VARCHAR" size="100" primaryString="true" />

        <behavior name="geocodable">
            <!-- IP -->
            <parameter name="geocode_ip" value="true" />
            <!-- Address -->
            <parameter name="geocode_address" value="true" />
            <parameter name="address_columns" value="street, city, country" />
            <!-- Geocoder -->
            <parameter name="geocoder_api_key_provider" value="GeoApikeyProvider::getKey()" />
        </behavior>
    </table>

    <table name="geocoded_object_key_provider_method">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="name" type="VARCHAR" size="100" primaryString="true" />
        <column name="street" type="VARCHAR" size="100" primaryString="true" />
        <column name="city" type="VARCHAR" size="100" primaryString="true" />
        <column name="country" type="VARCHAR" size="100" primaryString="true" />

        <behavior name="geocodable">
            <!-- IP -->
            <parameter name="geocode_ip" value="true" />
            <!-- Address -->
            <parameter name="geocode_address" value="true" />
            <parameter name="address_columns" value="street, city, country" />
            <!-- Geocoder -->
            <parameter name="geocoder_api_key_provider" value="GeoApikeyProvider->getApiKeyMethod()" />
        </behavior>
    </table>
</database>
EOF;
            $builder = new PropelQuickBuilder();
            $config = $builder->getConfig();
            $config->setBuildProperty('behavior.geocodable.class', '../src/GeocodableBehavior');
            $builder->setConfig($config);
            $builder->setSchema($schema);
            $con = $builder->build();
            $con->sqliteCreateFunction('ACOS', 'acos', 1);
            $con->sqliteCreateFunction('COS', 'cos', 1);
            $con->sqliteCreateFunction('RADIANS', 'deg2rad', 1);
            $con->sqliteCreateFunction('SIN', 'sin', 1);
        }
    }
Пример #25
0
    public function setUp()
    {
        if (!class_exists('ArchivableTest1')) {
            $schema = <<<EOF
<database name="archivable_behavior_test_0">

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

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

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

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

\t<table name="archivable_test_4">
\t\t<column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
\t\t<column name="title" type="VARCHAR" size="100" primaryString="true" />
\t\t<column name="age" type="INTEGER" />
\t\t<behavior name="archivable">
\t\t\t<parameter name="archive_class" value="FooArchive" />
\t\t</behavior>
\t</table>

</database>
EOF;
            $builder = new PropelQuickBuilder();
            $builder->setSchema($schema);
            self::$generatedSQL = $builder->getSQL();
            $builder->build();
        }
    }
    protected function loadFixtures()
    {
        $this->loadPropelQuickBuilder();
        $schema = <<<XML
<database name="default" package="vendor.bundles.Propel.PropelBundle.Tests.Request.DataFixtures.Loader"
    namespace="Propel\\PropelBundle\\Tests\\Request\\ParamConverter" defaultIdMethod="native">
    <table name="my_book">
        <column name="id" type="integer" primaryKey="true" />
        <column name="name" type="varchar" size="255" />
        <column name="my_author_id" type="integer" required="true" />

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

    <table name="my_author">
        <column name="id" type="integer" primaryKey="true" />
        <column name="name" type="varchar" size="255" />
    </table>
</database>
XML;
        $builder = new \PropelQuickBuilder();
        $builder->setSchema($schema);
        if (class_exists('Propel\\PropelBundle\\Tests\\Request\\ParamConverter\\MyAuthor')) {
            $builder->setClassTargets(array());
        }
        $this->con = $builder->build();
        $this->con->useDebug(true);
        MyBookQuery::create()->deleteAll($this->con);
        MyAuthorQuery::create()->deleteAll($this->con);
        $author = new MyAuthor();
        $author->setId(10);
        $author->setName('Will');
        $book = new MyBook();
        $book->setId(1);
        $book->setName('PropelBook');
        $book->setMyAuthor($author);
        $book2 = new MyBook();
        $book2->setId(2);
        $book2->setName('sf2lBook');
        $book2->setMyAuthor($author);
        $author->save($this->con);
    }
    public function testHydrateOverwritePreviousValues()
    {
        $schema = <<<EOF
<database name="generated_object_complex_type_test_with_constructor">
    <table name="complex_column_type_entity_with_constructor">
        <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
        <column name="tags" type="ARRAY" />
    </table>
</database>
EOF;
        $builder = new PropelQuickBuilder();
        $builder->setSchema($schema);
        $builder->setClassTargets(array('tablemap', 'peer', 'object', 'query', 'peerstub', 'querystub'));
        $builder->build();
        require_once dirname(__FILE__) . '/fixtures/ComplexColumnTypeEntityWithConstructor.php';
        Propel::disableInstancePooling();
        // need to be disabled to test the hydrate() method
        $obj = new ComplexColumnTypeEntityWithConstructor();
        $this->assertEquals(array('foo', 'bar'), $obj->getTags());
        $obj->setTags(array('baz'));
        $this->assertEquals(array('baz'), $obj->getTags());
        $obj->save();
        $obj = ComplexColumnTypeEntityWithConstructorQuery::create()->findOne();
        $this->assertEquals(array('baz'), $obj->getTags());
        Propel::enableInstancePooling();
    }
    public function testLoadDelegatedOnPrimaryKey()
    {
        $schema = <<<XML
<database name="default" package="vendor.bundles.Propel.PropelBundle.Tests.Fixtures.DataFixtures.Loader" namespace="Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader" defaultIdMethod="native">
    <table name="yaml_delegate_on_primary_key_person" phpName="YamlDelegateOnPrimaryKeyPerson">
        <column name="id" type="integer" primaryKey="true" autoIncrement="true" />
        <column name="name" type="varchar" size="255" />
    </table>

    <table name="yaml_delegate_on_primary_key_author" phpName="YamlDelegateOnPrimaryKeyAuthor">
        <column name="id" type="integer" primaryKey="true" autoIncrement="false" />
        <column name="count_books" type="integer" defaultValue="0" required="true" />

        <behavior name="delegate">
            <parameter name="to" value="yaml_delegate_on_primary_key_person" />
        </behavior>

        <foreign-key foreignTable="yaml_delegate_on_primary_key_person" onDelete="RESTRICT" onUpdate="CASCADE">
            <reference local="id" foreign="id" />
        </foreign-key>
    </table>
</database>
XML;
        $fixtures = <<<YAML
Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\YamlDelegateOnPrimaryKeyPerson:
    yaml_delegate_on_primary_key_person_1:
        name: "Some Persons Name"

Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\YamlDelegateOnPrimaryKeyAuthor:
    yaml_delegate_on_primary_key_author_1:
        id: yaml_delegate_on_primary_key_person_1
        count_books: 7
YAML;
        $filename = $this->getTempFile($fixtures);
        $builder = new \PropelQuickBuilder();
        $builder->setSchema($schema);
        $con = $builder->build();
        $loader = new YamlDataLoader(__DIR__ . '/../../Fixtures/DataFixtures/Loader');
        $loader->load(array($filename), 'default');
        $authors = \Propel\PropelBundle\Tests\Fixtures\DataFixtures\Loader\YamlDelegateOnPrimaryKeyAuthorPeer::doSelect(new \Criteria(), $con);
        $this->assertCount(1, $authors);
        $author = $authors[0];
        $person = $author->getYamlDelegateOnPrimaryKeyPerson();
        $this->assertInstanceOf('Propel\\PropelBundle\\Tests\\Fixtures\\DataFixtures\\Loader\\YamlDelegateOnPrimaryKeyPerson', $person);
    }
Пример #29
0
    public function testBuild()
    {
        $schema = <<<EOF
<database name="test_quick_build_2">
\t<table name="quick_build_foo_2">
\t\t<column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
\t\t<column name="bar" type="INTEGER" />
\t</table>
</database>
EOF;
        $builder = new PropelQuickBuilder();
        $builder->setSchema($schema);
        $builder->build();
        $this->assertEquals(0, QuickBuildFoo2Query::create()->count());
        $foo = new QuickBuildFoo2();
        $foo->setBar(3);
        $foo->save();
        $this->assertEquals(1, QuickBuildFoo2Query::create()->count());
        $this->assertEquals($foo, QuickBuildFoo2Query::create()->findOne());
    }
    /**
     * Setup schema und some default data
     */
    public function setUp()
    {
        parent::setUp();
        if (!class_exists('MoreRelationTest\\Page')) {
            $schema = <<<EOF
<database name="more_relation_test" namespace="MoreRelationTest">

    <table name="more_relation_test_page" phpName="Page">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" primaryString="true" />
    </table>

    <table name="more_relation_test_content" phpName="Content">
        <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
        <column name="title" type="VARCHAR" size="100" />
        <column name="content" type="LONGVARCHAR" required="false" />
        <column name="page_id" type="INTEGER" required="false" />
        <foreign-key foreignTable="more_relation_test_page" onDelete="cascade">
          <reference local="page_id" foreign="id"/>
        </foreign-key>
    </table>

    <table name="more_relation_test_comment" phpName="Comment">
        <column name="user_id" required="true" primaryKey="true" type="INTEGER" />
        <column name="page_id" required="true" primaryKey="true" type="INTEGER" />
        <column name="comment" type="VARCHAR" size="100" />
        <foreign-key foreignTable="more_relation_test_page" onDelete="restrict">
          <reference local="page_id" foreign="id"/>
        </foreign-key>
    </table>

    <table name="more_relation_test_content_comment" phpName="ContentComment">
        <column name="id" required="true" autoIncrement="true" primaryKey="true" type="INTEGER" />
        <column name="content_id" type="INTEGER" />
        <column name="comment" type="VARCHAR" size="100" />
        <foreign-key foreignTable="more_relation_test_content" onDelete="setnull">
          <reference local="content_id" foreign="id"/>
        </foreign-key>
    </table>

</database>
EOF;
            $builder = new PropelQuickBuilder();
            $builder->setSchema($schema);
            $builder->build();
        }
        \MoreRelationTest\ContentCommentPeer::doDeleteAll();
        \MoreRelationTest\ContentPeer::doDeleteAll();
        \MoreRelationTest\CommentPeer::doDeleteAll();
        \MoreRelationTest\PagePeer::doDeleteAll();
        for ($i = 1; $i <= 2; $i++) {
            $page = new \MoreRelationTest\Page();
            $page->setTitle('Page ' . $i);
            for ($j = 1; $j <= 3; $j++) {
                $content = new \MoreRelationTest\Content();
                $content->setTitle('Content ' . $j);
                $content->setContent(str_repeat('Content', $j));
                $page->addContent($content);
                $comment = new \MoreRelationTest\Comment();
                $comment->setUserId($j);
                $comment->setComment(str_repeat('Comment', $j));
                $page->addComment($comment);
                $comment = new \MoreRelationTest\ContentComment();
                $comment->setContentId($i * $j);
                $comment->setComment(str_repeat('Comment-' . $j . ', ', $j));
                $content->addContentComment($comment);
            }
            $page->save();
        }
    }