blob: 64756edff06d6a153f71fea1f968aecaf7b9b2d8 [file] [log] [blame]
<?php
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @version //autogentag//
* @filesource
* @package PersistentObject
* @subpackage Tests
*/
require_once "data/keywordtest/table_class.php";
require_once "data/keywordtest/where_class.php";
require_once "data/keywordtest/sequence_class.php";
/**
* These tests tests for the usage of keywords for table and column names.
* Basically this means that we are testing that all table and column names
* are properly escaped.
*
* @package PersistentObject
* @subpackage Tests
*/
class ezcPersistentKeywordTest extends ezcTestCase
{
private $session = null;
private $hasTables = false;
protected function setUp()
{
try
{
$db = ezcDbInstance::get();
}
catch ( Exception $e )
{
$this->markTestSkipped( 'There was no database configured' );
}
Table::setupTable();
// Table::saveSchema();
$this->session = new ezcPersistentSession( ezcDbInstance::get(),
new ezcPersistentCodeManager( dirname( __FILE__ ) . "/data/keywordtest" ) );
}
protected function tearDown()
{
Table::cleanup();
}
public static function suite()
{
return new PHPUnit_Framework_TestSuite( 'ezcPersistentKeywordTest' );
}
// Test saving a valid object
public function testSave()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$this->assertEquals( 1, $object->from );
$object2 = $this->session->loadIfExists( 'Table', 1 );
$this->assertNotEquals( NULL, $object2 );
$this->assertEquals( 42, $object2->select );
}
public function testUpdate()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$this->assertEquals( 1, $object->from );
$object2 = $this->session->loadIfExists( 'Table', 1 );
$this->assertNotEquals( NULL, $object2 );
$this->assertEquals( 42, $object2->select );
$object2->select = 99;
$this->session->update( $object2 );
$object3 = $this->session->loadIfExists( 'Table', 1 );
$this->assertNotEquals( NULL, $object3 );
$this->assertEquals( 99, $object3->select );
}
public function testSaveOrUpdateSave()
{
$object = new Table();
$object->select = 42;
$this->session->saveOrUpdate( $object );
$this->assertEquals( 1, $object->from );
$object2 = $this->session->loadIfExists( 'Table', 1 );
$this->assertNotEquals( NULL, $object2 );
$this->assertEquals( 42, $object2->select );
}
public function testSaveOrUpdateUpdate()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$this->assertEquals( 1, $object->from );
$object2 = $this->session->loadIfExists( 'Table', 1 );
$this->assertNotEquals( NULL, $object2 );
$this->assertEquals( 42, $object2->select );
$object2->select = 99;
$this->session->saveOrUpdate( $object2 );
$object3 = $this->session->loadIfExists( 'Table', 1 );
$this->assertNotEquals( NULL, $object3 );
$this->assertEquals( 99, $object3->select );
}
public function testDelete()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$this->assertEquals( 1, $object->from );
$object2 = $this->session->loadIfExists( 'Table', 1 );
$this->assertNotEquals( NULL, $object2 );
$this->assertEquals( 42, $object2->select );
$this->session->delete( $object2 );
$this->assertNull( $this->session->loadIfExists( 'Table', 1 ) );
}
public function testSaveAlias()
{
$object = new Sequence();
$object->trigger = 42;
$this->session->save( $object );
$this->assertEquals( 1, $object->column );
$object2 = $this->session->loadIfExists( 'Sequence', 1 );
$this->assertNotEquals( NULL, $object2 );
$this->assertEquals( 42, $object2->trigger );
}
public function test1NGetRelatedObject()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$rel = new Where();
$rel->update = 1; // correct relation
$this->session->save( $rel );
$relation = $this->session->getRelatedObjects( $object, "Where" );
$this->assertNotEquals( count( $relation ), 0 );
}
public function test1NGetRelatedObjects()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$rel = new Where();
$rel->update = 1; // correct relation
$this->session->save( $rel );
$relations = $this->session->getRelatedObjects( $object, "Where" );
$this->assertEquals( 1, count( $relations ) );
}
public function test1NAddAndRemoveRelatedObject()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$rel = new Where();
$rel->update = 1; // correct relation
$this->session->save( $rel );
// First let's remove the old relation
$this->session->removeRelatedObject( $object, $rel );
// Let's create a new object to relate to
$object2 = new Table();
$object2->select = 99;
$this->session->save( $object2 ); // id 2
$this->session->addRelatedObject( $object2, $rel );
$this->session->update( $rel );
// test that it worked
$relations = $this->session->getRelatedObjects( $object, "Where" );
$this->assertEquals( 0, count( $relations ) );
$relations = $this->session->getRelatedObjects( $object2, "Where" );
$this->assertEquals( 1, count( $relations ) );
}
public function testNMAddRelatedObject()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$rel = new Like();
$this->session->save( $rel );
$this->session->addRelatedObject( $object, $rel );
}
public function testNMgetRelatedObject()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$rel = new Like();
$this->session->save( $rel );
$this->session->addRelatedObject( $object, $rel );
$this->assertNotEquals( count( $this->session->getRelatedObject( $object, "Like" ) ), 0 );
}
public function testNMgetRelatedObjects()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$rel = new Like();
$this->session->save( $rel );
$this->session->addRelatedObject( $object, $rel );
$this->assertEquals( 1, count( $this->session->getRelatedObjects( $object, "Like" ) ) );
}
public function testNMRemoveRelatedObject()
{
$object = new Table();
$object->select = 42;
$this->session->save( $object );
$rel = new Like();
$this->session->save( $rel );
$this->session->addRelatedObject( $object, $rel );
$this->session->removeRelatedObject( $object, $rel );
$this->assertEquals( 0, count( $this->session->getRelatedObjects( $object, "Like" ) ) );
}
}
?>