| 
<?phpnamespace Nkey\Caribu\Tests;
 
 require_once dirname(__FILE__).'/../PostgresAbstractDatabaseTestCase.php';
 require_once dirname(__FILE__).'/../Model/ReferencedGuestBook.php';
 require_once dirname(__FILE__).'/../Model/User.php';
 
 use Nkey\Caribu\Orm\Orm;
 
 use Nkey\Caribu\Tests\Model\ReferencedGuestBook;
 use Nkey\Caribu\Tests\Model\User;
 
 class PostgresPersistComplexTypesTest extends PostgresAbstractDatabaseTestCase
 {
 public function __construct()
 {
 parent::__construct();
 
 $this->dataSetFile = dirname(__FILE__).'/../_files/referenced-guestbook-seed.xml';
 }
 
 /**
 * (non-PHPdoc)
 * @see \PHPUnit\DbUnit\TestCase::setUp()
 */
 protected function setUp()
 {
 Orm::passivate();
 
 $connection = $this->getConnection()->getConnection();
 $connection->beginTransaction();
 $connection->exec("DROP TABLE IF EXISTS guestbook");
 $connection->exec("DROP TABLE IF EXISTS \"user\"");
 $connection->exec("DROP SEQUENCE IF EXISTS seq_user_pk");
 $connection->exec("DROP SEQUENCE IF EXISTS seq_guestbook_pk");
 $connection->exec("CREATE SEQUENCE seq_user_pk START WITH 100");
 $connection->exec("CREATE SEQUENCE seq_guestbook_pk START WITH 100");
 $connection->exec("CREATE TABLE \"user\" (uid INTEGER PRIMARY KEY DEFAULT NEXTVAL('seq_user_pk'), name CHARACTER VARYING(50), email CHARACTER VARYING(50))");
 $connection->exec("CREATE TABLE guestbook (id INTEGER PRIMARY KEY DEFAULT NEXTVAL('seq_guestbook_pk'), content TEXT, \"user\" INTEGER, created TIMESTAMP)");
 $connection->commit();
 
 parent::setUp();
 }
 
 /**
 * (non-PHPdoc)
 * @see \PHPUnit\DbUnit\TestCase::tearDown()
 */
 protected function tearDown()
 {
 $connection = $this->getConnection()->getConnection();
 $connection->beginTransaction();
 $connection->exec("DROP TABLE guestbook");
 $connection->exec("DROP TABLE \"user\"");
 $connection->exec("DROP SEQUENCE seq_user_pk");
 $connection->exec("DROP SEQUENCE seq_guestbook_pk");
 $connection->commit();
 
 parent::tearDown();
 }
 
 public function testPersist()
 {
 $user = User::find(array('name' => 'bob'));
 
 $entity = new ReferencedGuestBook();
 $entity->setCreated(new \DateTime());
 $entity->setContent("Some test content to persist");
 $entity->setUser($user);
 
 $entity->persist();
 
 $this->assertFalse(is_null($entity->getGid()));
 
 $second = ReferencedGuestBook::get($entity->getGid());
 
 $this->assertEquals($entity->getCreated()->getTimestamp(), $second->getCreated()->getTimestamp(), '', 1);
 }
 }
 |