You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
5.1 KiB
173 lines
5.1 KiB
12 years ago
|
<?php
|
||
|
|
||
|
namespace yiiunit\framework\base;
|
||
|
use yiiunit\TestCase;
|
||
|
use yiiunit\data\base\Speaker;
|
||
|
|
||
|
/**
|
||
|
* ModelTest
|
||
|
*/
|
||
|
class ModelTest extends TestCase
|
||
|
{
|
||
|
public function testGetAttributeLalel()
|
||
|
{
|
||
|
$speaker = new Speaker();
|
||
|
$this->assertEquals('First Name', $speaker->getAttributeLabel('firstName'));
|
||
|
$this->assertEquals('This is the custom label', $speaker->getAttributeLabel('customLabel'));
|
||
|
$this->assertEquals('Underscore Style', $speaker->getAttributeLabel('underscore_style'));
|
||
|
}
|
||
|
|
||
|
public function testGetAttributes()
|
||
|
{
|
||
|
$speaker = new Speaker();
|
||
|
$speaker->firstName = 'Qiang';
|
||
|
$speaker->lastName = 'Xue';
|
||
|
|
||
|
$this->assertEquals(array(
|
||
|
'firstName' => 'Qiang',
|
||
|
'lastName' => 'Xue',
|
||
|
'customLabel' => null,
|
||
|
'underscore_style' => null,
|
||
|
), $speaker->getAttributes());
|
||
|
|
||
|
$this->assertEquals(array(
|
||
|
'firstName' => 'Qiang',
|
||
|
'lastName' => 'Xue',
|
||
|
), $speaker->getAttributes(array('firstName', 'lastName')));
|
||
|
|
||
|
$this->assertEquals(array(
|
||
|
'firstName' => 'Qiang',
|
||
|
'lastName' => 'Xue',
|
||
|
), $speaker->getAttributes(null, array('customLabel', 'underscore_style')));
|
||
|
|
||
|
$this->assertEquals(array(
|
||
|
'firstName' => 'Qiang',
|
||
|
), $speaker->getAttributes(array('firstName', 'lastName'), array('lastName', 'customLabel', 'underscore_style')));
|
||
|
}
|
||
|
|
||
|
public function testSetAttributes()
|
||
|
{
|
||
|
// by default mass assignment doesn't work at all
|
||
|
$speaker = new Speaker();
|
||
|
$speaker->setAttributes(array('firstName' => 'Qiang', 'underscore_style' => 'test'));
|
||
|
$this->assertNull($speaker->firstName);
|
||
|
$this->assertNull($speaker->underscore_style);
|
||
|
|
||
|
// in the test scenario
|
||
|
$speaker = new Speaker();
|
||
|
$speaker->setScenario('test');
|
||
|
$speaker->setAttributes(array('firstName' => 'Qiang', 'underscore_style' => 'test'));
|
||
|
$this->assertNull($speaker->underscore_style);
|
||
|
$this->assertEquals('Qiang', $speaker->firstName);
|
||
|
|
||
|
$speaker->setAttributes(array('firstName' => 'Qiang', 'underscore_style' => 'test'), false);
|
||
|
$this->assertEquals('test', $speaker->underscore_style);
|
||
|
$this->assertEquals('Qiang', $speaker->firstName);
|
||
|
}
|
||
|
|
||
|
public function testActiveAttributes()
|
||
|
{
|
||
|
// by default mass assignment doesn't work at all
|
||
|
$speaker = new Speaker();
|
||
|
$this->assertEmpty($speaker->activeAttributes());
|
||
|
|
||
|
$speaker = new Speaker();
|
||
|
$speaker->setScenario('test');
|
||
|
$this->assertEquals(array('firstName', 'lastName', 'underscore_style'), $speaker->activeAttributes());
|
||
|
}
|
||
|
|
||
|
public function testIsAttributeSafe()
|
||
|
{
|
||
|
// by default mass assignment doesn't work at all
|
||
|
$speaker = new Speaker();
|
||
|
$this->assertFalse($speaker->isAttributeSafe('firstName'));
|
||
|
|
||
|
$speaker = new Speaker();
|
||
|
$speaker->setScenario('test');
|
||
|
$this->assertTrue($speaker->isAttributeSafe('firstName'));
|
||
|
|
||
|
}
|
||
|
|
||
|
public function testErrors()
|
||
|
{
|
||
|
$speaker = new Speaker();
|
||
|
|
||
|
$this->assertEmpty($speaker->getErrors());
|
||
|
$this->assertEmpty($speaker->getErrors('firstName'));
|
||
|
$this->assertEmpty($speaker->getFirstErrors());
|
||
|
|
||
|
$this->assertFalse($speaker->hasErrors());
|
||
|
$this->assertFalse($speaker->hasErrors('firstName'));
|
||
|
|
||
|
$speaker->addError('firstName', 'Something is wrong!');
|
||
|
$this->assertEquals(array('firstName' => array('Something is wrong!')), $speaker->getErrors());
|
||
|
$this->assertEquals(array('Something is wrong!'), $speaker->getErrors('firstName'));
|
||
|
|
||
|
$speaker->addError('firstName', 'Totally wrong!');
|
||
|
$this->assertEquals(array('firstName' => array('Something is wrong!', 'Totally wrong!')), $speaker->getErrors());
|
||
|
$this->assertEquals(array('Something is wrong!', 'Totally wrong!'), $speaker->getErrors('firstName'));
|
||
|
|
||
|
$this->assertTrue($speaker->hasErrors());
|
||
|
$this->assertTrue($speaker->hasErrors('firstName'));
|
||
|
$this->assertFalse($speaker->hasErrors('lastName'));
|
||
|
|
||
|
$this->assertEquals(array('Something is wrong!'), $speaker->getFirstErrors());
|
||
|
$this->assertEquals('Something is wrong!', $speaker->getFirstError('firstName'));
|
||
|
$this->assertNull($speaker->getFirstError('lastName'));
|
||
|
|
||
|
$speaker->addError('lastName', 'Another one!');
|
||
|
$this->assertEquals(array(
|
||
|
'firstName' => array(
|
||
|
'Something is wrong!',
|
||
|
'Totally wrong!',
|
||
|
),
|
||
|
'lastName' => array('Another one!'),
|
||
|
), $speaker->getErrors());
|
||
|
|
||
|
$speaker->clearErrors('firstName');
|
||
|
$this->assertEquals(array(
|
||
|
'lastName' => array('Another one!'),
|
||
|
), $speaker->getErrors());
|
||
|
|
||
|
$speaker->clearErrors();
|
||
|
$this->assertEmpty($speaker->getErrors());
|
||
|
$this->assertFalse($speaker->hasErrors());
|
||
|
}
|
||
|
|
||
|
public function testArraySyntax()
|
||
|
{
|
||
|
$speaker = new Speaker();
|
||
|
|
||
|
// get
|
||
|
$this->assertNull($speaker['firstName']);
|
||
|
|
||
|
// isset
|
||
|
$this->assertFalse(isset($speaker['firstName']));
|
||
|
|
||
|
// set
|
||
|
$speaker['firstName'] = 'Qiang';
|
||
|
|
||
|
$this->assertEquals('Qiang', $speaker['firstName']);
|
||
|
$this->assertTrue(isset($speaker['firstName']));
|
||
|
|
||
|
// iteration
|
||
|
$attributes = array();
|
||
|
foreach($speaker as $key => $attribute) {
|
||
|
$attributes[$key] = $attribute;
|
||
|
}
|
||
|
$this->assertEquals(array(
|
||
|
'firstName' => 'Qiang',
|
||
|
'lastName' => null,
|
||
|
'customLabel' => null,
|
||
|
'underscore_style' => null,
|
||
|
), $attributes);
|
||
|
|
||
|
// unset
|
||
|
unset($speaker['firstName']);
|
||
|
|
||
|
// exception isn't expected here
|
||
|
$this->assertNull($speaker['firstName']);
|
||
|
$this->assertFalse(isset($speaker['firstName']));
|
||
|
}
|
||
|
}
|