Skip to content

Instantly share code, notes, and snippets.

@martinj
Created November 23, 2011 09:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save martinj/1388309 to your computer and use it in GitHub Desktop.
Save martinj/1388309 to your computer and use it in GitHub Desktop.
Propel Versionable Foreign Object Test
SELECT
beers_version.ID, beers_version.NAME, beers_version.BAR_ID, beers_version.VERSION, beers_version.BAR_ID_VERSION
FROM
`beers_version`
WHERE
(beers_version.ID='2' AND beers_version.BAR_ID_VERSION='1')
SELECT
beers_version.ID, beers_version.NAME, beers_version.BAR_ID, beers_version.VERSION, beers_version.BAR_ID_VERSION
FROM
`beers_version`, `bars_version`
WHERE
(bars_version.BEERS_IDS='2' AND bars_version.BEERS_VERSIONS='1');
<?xml version="1.0" encoding="utf-8"?>
<database name="test" defaultIdMethod="native" package="DBTable">
<table name="bars" phpName="Bar">
<vendor type="mysql">
<parameter name="Engine" value="InnoDB"/>
<parameter name="Charset" value="utf8"/>
</vendor>
<column name="id" phpName="Id" type="integer" primaryKey="true" autoIncrement="true" required="true"/>
<column name="name" phpName="Name" type="varchar" size="128" required="true"/>
<behavior name="versionable" />
</table>
<table name="beers" phpName="Beer">
<vendor type="mysql">
<parameter name="Engine" value="InnoDB"/>
<parameter name="Charset" value="utf8"/>
</vendor>
<column name="id" phpName="Id" type="integer" primaryKey="true" autoIncrement="true" required="true"/>
<column name="name" phpName="Name" type="varchar" size="128" required="true"/>
<column name="bar_id" phpName="BarId" type="integer" required="true"/>
<foreign-key foreignTable="bars" onUpdate="cascade" onDelete="cascade">
<reference local="bar_id" foreign="id" />
</foreign-key>
<behavior name="versionable" />
</table>
</database>
<?php
class VersionableTest extends PHPUnit_Framework_TestCase
{
public function testVersionable()
{
Propel::disableInstancePooling();
$bar = new DBTableBar();
$bar->setName('My Bar');
$beer = new DBTableBeer();
$beer->setName('My Beer');
$bar->addBeer($beer);
//first version
$bar->save();
$beer->setName('My Beer V2');
//create second version that should containt "My Beer V2"
$bar->save();
//get version 1
$bar = DBTableBarQuery::create()->findPk($bar->getId());
$bar->toVersion(1);
$beers = $bar->getBeers();
$this->assertEquals(1, $beers[0]->getVersion());
$this->assertEquals('My Beer', $beers[0]->getName());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment