231 lines
5.8 KiB
PHP
231 lines
5.8 KiB
PHP
<?php
|
|
/*
|
|
* $Id: Doctrine.php 3754 2008-02-13 10:53:07Z romanb $
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* This software consists of voluntary contributions made by many individuals
|
|
* and is licensed under the LGPL. For more information, see
|
|
* <http://www.phpdoctrine.org>.
|
|
*/
|
|
|
|
/**
|
|
* Testcase for basic accessor/mutator functionality.
|
|
*
|
|
* @package Doctrine
|
|
* @author Bjarte Stien Karlsen <doctrine@bjartek.org>
|
|
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
|
* @link www.phpdoctrine.org
|
|
* @since 1.0
|
|
* @version $Revision: 3754 $
|
|
*/
|
|
require_once 'lib/DoctrineTestInit.php';
|
|
|
|
class AccessStub extends Doctrine_Access {}
|
|
|
|
class Orm_Component_AccessTest extends Doctrine_OrmTestCase
|
|
{
|
|
|
|
private $user;
|
|
|
|
public function setUp()
|
|
{
|
|
parent::setUp();
|
|
$em = new Doctrine_EntityManager(new Doctrine_Connection_Mock());
|
|
$this->user = new ForumUser();
|
|
}
|
|
|
|
/*public function testAccessorOverridePerformance() {
|
|
$this->user->username;
|
|
$start = microtime(true);
|
|
for ($i = 0; $i < 1; $i++) {
|
|
$this->user->username;
|
|
}
|
|
$end = microtime(true);
|
|
echo ($end - $start) . " seconds" . PHP_EOL;
|
|
}*/
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function shouldMarkEmptyFieldAsNotSetOnNewRecord()
|
|
{
|
|
$this->assertFalse(isset($this->user->username));
|
|
$this->assertFalse(isset($this->user['username']));
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function shouldMarkNonExistantFieldAsNotSetOnNewRecord()
|
|
{
|
|
$this->assertFalse(isset($this->user->rat));
|
|
$this->assertFalse(isset($this->user['rat']));
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function shouldSetSingleValueInRecord()
|
|
{
|
|
$this->user->username = 'meus';
|
|
$this->assertEquals('meus', $this->user->username);
|
|
$this->assertEquals('meus', $this->user['username']);
|
|
}
|
|
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function shouldSetSingleValueInRecordWithOffset()
|
|
{
|
|
$this->user['username'] ='meus';
|
|
$this->assertEquals('meus', $this->user->username);
|
|
$this->assertEquals('meus', $this->user['username']);
|
|
}
|
|
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function shouldSetArrayOfValusInRecord()
|
|
{
|
|
$this->user->setArray(array(
|
|
'username' => 'meus',
|
|
'id' => 22));
|
|
|
|
$this->assertEquals('meus', $this->user->username);
|
|
$this->assertEquals('meus', $this->user['username']);
|
|
|
|
$this->assertEquals(22, $this->user->id);
|
|
$this->assertEquals(22, $this->user['id']);
|
|
}
|
|
|
|
|
|
/**
|
|
* @test
|
|
* @expectedException Doctrine_Entity_Exception
|
|
*/
|
|
public function shouldNotBeAbleToSetNonExistantField()
|
|
{
|
|
$this->user->rat = 'meus';
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
* @expectedException Doctrine_Entity_Exception
|
|
*/
|
|
public function shouldNotBeAbleToSetNonExistantFieldWithOffset()
|
|
{
|
|
$this->user['rat'] = 'meus';
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
* @expectedException Doctrine_Entity_Exception
|
|
*/
|
|
public function shouldNotBeAbleToSetNonExistantFieldAsPartInSetArray()
|
|
{
|
|
$this->user->setArray(array(
|
|
'rat' => 'meus',
|
|
'id' => 22));
|
|
}
|
|
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function newCollectionShouldBeEmpty()
|
|
{
|
|
$col = new Doctrine_Collection('ForumUser');
|
|
$this->assertEquals(0, count($col));
|
|
$this->assertFalse(isset($coll[0]));
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function shouldBeAbleToUnsetWithOffsetFromCollection()
|
|
{
|
|
$col = new Doctrine_Collection('ForumUser');
|
|
$col[0] = new ForumUser();
|
|
$this->assertTrue(isset($col[0]));
|
|
unset($col[0]);
|
|
$this->assertFalse(isset($col[0]));
|
|
}
|
|
/**
|
|
* @test
|
|
*/
|
|
|
|
public function shouldBeAbleToUnsetFromCollection()
|
|
{
|
|
$col = new Doctrine_Collection('ForumUser');
|
|
$col->test = new ForumUser();
|
|
$this->assertTrue(isset($col->test));
|
|
unset($col->test);
|
|
$this->assertFalse(isset($col->test));
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* @test
|
|
* @expectedException Doctrine_Exception
|
|
*/
|
|
public function shouldNotBeAbleToSetNullFieldInRecord()
|
|
{
|
|
$this->user->offsetSet(null, 'test');
|
|
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
* @expectedException Doctrine_Exception
|
|
*/
|
|
public function shouldNotBeAbleToUseContainsWhenNotImplemented()
|
|
{
|
|
$stub = new AccessStub();
|
|
isset($stub['foo']);
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
* @expectedException Doctrine_Exception
|
|
*/
|
|
public function shouldNotBeAbleToUseSetWhenNotImplemented()
|
|
{
|
|
$stub = new AccessStub();
|
|
$stub['foo'] = 'foo';
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
* @expectedException Doctrine_Exception
|
|
*/
|
|
public function shouldNotBeAbleToUseUnsetWhenNotImplemented()
|
|
{
|
|
$stub = new AccessStub();
|
|
unset($stub['foo']);
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
* @expectedException Doctrine_Exception
|
|
*/
|
|
public function shouldNotBeAbleToUseGetWhenNotImplemented()
|
|
{
|
|
$stub = new AccessStub();
|
|
$stub['foo'];
|
|
}
|
|
}
|