/test/Mad/Model/Serializer/BaseTest.php
https://github.com/maintainable/framework · PHP · 325 lines · 241 code · 63 blank · 21 comment · 2 complexity · 8f211981c4e58c471326301311d1769e MD5 · raw file
- <?php
- /**
- * @category Mad
- * @package Mad_Model
- * @subpackage UnitTests
- * @copyright (c) 2007-2009 Maintainable Software, LLC
- * @license http://opensource.org/licenses/bsd-license.php BSD
- */
- /**
- * Set environment
- */
- if (!defined('MAD_ENV')) define('MAD_ENV', 'test');
- if (!defined('MAD_ROOT')) {
- require_once dirname(dirname(dirname(dirname(dirname(__FILE__))))).'/config/environment.php';
- }
- /**
- * @todo Tests for sanitizeSql()
- *
- * @group model
- * @category Mad
- * @package Mad_Model
- * @subpackage UnitTests
- * @copyright (c) 2007-2009 Maintainable Software, LLC
- * @license http://opensource.org/licenses/bsd-license.php BSD
- */
- class Mad_Model_Serializer_BaseTest extends Mad_Test_Unit
- {
- // set up new db by inserting dummy data into the db
- public function setUp()
- {
- $this->fixtures('users', 'articles', 'comments');
- }
- public function testGetSerializableAttributeNames()
- {
- $record = $this->users('mike');
- $options = array();
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $attrNames = $serializer->getSerializableAttributeNames();
- $expected = array('approved', 'company_id', 'created_at', 'created_on',
- 'first_name', 'id', 'name', 'updated_at', 'updated_on');
- $this->assertEquals($expected, $attrNames);
- }
- public function testGetSerializableAttributeNamesExceptSingle()
- {
- $record = $this->users('mike');
- $options = array('except' => 'first_name');
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $attrNames = $serializer->getSerializableAttributeNames();
- $expected = array('approved', 'company_id', 'created_at', 'created_on',
- 'id', 'name', 'updated_at', 'updated_on');
- $this->assertEquals($expected, $attrNames);
- }
- public function testGetSerializableAttributeNamesExceptMultiple()
- {
- $record = $this->users('mike');
- $options = array('except' => array('first_name', 'name'));
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $attrNames = $serializer->getSerializableAttributeNames();
- $expected = array('approved', 'company_id', 'created_at', 'created_on',
- 'id', 'updated_at', 'updated_on');
- $this->assertEquals($expected, $attrNames);
- }
- public function testGetSerializableAttributeNamesOnlySingle()
- {
- $record = $this->users('mike');
- $options = array('only' => 'first_name');
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $attrNames = $serializer->getSerializableAttributeNames();
- $expected = array('first_name');
- $this->assertEquals($expected, $attrNames);
- }
- public function testGetSerializableAttributeNamesOnlyMultiple()
- {
- $record = $this->users('mike');
- $options = array('only' => array('first_name', 'name'));
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $attrNames = $serializer->getSerializableAttributeNames();
- $expected = array('first_name', 'name');
- $this->assertEquals($expected, $attrNames);
- }
-
- public function testGetSerializablePropertyNamesSingle()
- {
- $record = $this->articles('xml_rpc');
- $options = array('properties' => 'validity');
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $propertyNames = $serializer->getSerializablePropertyNames();
-
- $expected = array('validity');
- $this->assertEquals($expected, $propertyNames);
- }
- public function testGetSerializablePropertyNamesMultiple()
- {
- $record = $this->articles('xml_rpc');
- $options = array('properties' => array('validity', 'is_good'));
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $propertyNames = $serializer->getSerializablePropertyNames();
-
- $expected = array('is_good', 'validity');
- $this->assertEquals($expected, $propertyNames);
- }
- public function testGetSerializableMethodNamesSingle()
- {
- $record = $this->articles('xml_rpc');
- $options = array('methods' => 'foo');
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $methodNames = $serializer->getSerializableMethodNames();
-
- $expected = array('foo');
- $this->assertEquals($expected, $methodNames);
- }
- public function testGetSerializableMethodNamesMultiple()
- {
- $record = $this->articles('xml_rpc');
- $options = array('methods' => array('foo', 'bar'));
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $methodNames = $serializer->getSerializableMethodNames();
-
- $expected = array('bar', 'foo');
- $this->assertEquals($expected, $methodNames);
- }
- public function testGetSerializableNames()
- {
- $record = $this->articles('xml_rpc');
- $options = array('methods' => 'foo',
- 'properties' => 'validity',
- 'except' => 'title');
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $attrNames = $serializer->getSerializableNames();
- $expected = array('foo', 'id', 'user_id', 'validity');
- $this->assertEquals($expected, $attrNames);
- }
- public function testGetSerializableRecord()
- {
- $record = $this->articles('xml_rpc');
- $options = array();
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $record = $serializer->getSerializableRecord();
- $expected = array (
- 'id' => '1',
- 'title' => 'Easier XML-RPC for PHP5',
- 'user_id' => '1'
- );
- $this->assertEquals($expected, $record);
- }
- public function testGetSerializableRecordIncludeSingleBelongsto()
- {
- $record = $this->articles('xml_rpc');
- $options = array('include' => 'User');
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $record = $serializer->getSerializableRecord();
- $expected = array (
- 'id' => '1',
- 'title' => 'Easier XML-RPC for PHP5',
- 'user_id' => '1',
- 'User' => array(
- 'approved' => 1,
- 'company_id' => 1,
- 'created_at' => '2008-01-01 12:20:00',
- 'created_on' => '2008-01-01',
- 'first_name' => 'Mike',
- 'id' => 1,
- 'name' => 'Mike Naberezny',
- 'updated_at' => '2008-01-01 12:20:00',
- 'updated_on' => '2008-01-01'
- )
- );
-
- $this->assertEquals($expected, $record);
- }
- public function testGetSerializableRecordIncludeSingleHasMany()
- {
- $record = $this->articles('xml_rpc');
- $options = array('include' => 'Comments');
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $record = $serializer->getSerializableRecord();
- $expected = array (
- 'id' => '1',
- 'title' => 'Easier XML-RPC for PHP5',
- 'user_id' => '1',
- 'Comments' => array(
- array('article_id' => 1, 'body' => 'Comment A', 'created_at' => '2008-05-01 12:00:00', 'id' => 1, 'user_id' => 1),
- array('article_id' => 1, 'body' => 'Comment B', 'created_at' => '2008-08-01 12:00:00', 'id' => 2, 'user_id' => 1)
- )
- );
- $this->assertEquals($expected, $record);
- }
- public function testGetSerializableRecordIncludeMultiple()
- {
- $record = $this->articles('xml_rpc');
- $options = array('include' => array('User', 'Comments'));
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $record = $serializer->getSerializableRecord();
-
- $expected = array (
- 'id' => '1',
- 'title' => 'Easier XML-RPC for PHP5',
- 'user_id' => '1',
- 'User' => array(
- 'approved' => 1,
- 'company_id' => 1,
- 'created_at' => '2008-01-01 12:20:00',
- 'created_on' => '2008-01-01',
- 'first_name' => 'Mike',
- 'id' => 1,
- 'name' => 'Mike Naberezny',
- 'updated_at' => '2008-01-01 12:20:00',
- 'updated_on' => '2008-01-01'
- ),
- 'Comments' => array(
- array('article_id' => 1, 'body' => 'Comment A', 'created_at' => '2008-05-01 12:00:00', 'id' => 1, 'user_id' => 1),
- array('article_id' => 1, 'body' => 'Comment B', 'created_at' => '2008-08-01 12:00:00', 'id' => 2, 'user_id' => 1)
- )
- );
-
- $this->assertEquals($expected, $record);
- }
- public function testGetSerializableRecordIncludeWithOptions()
- {
- $record = $this->articles('xml_rpc');
- $options = array('include' => array('User' => array('only' => 'name'),
- 'Comments' => array('except' => 'article_id')));
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $record = $serializer->getSerializableRecord();
- $expected = array (
- 'id' => '1',
- 'title' => 'Easier XML-RPC for PHP5',
- 'user_id' => '1',
- 'User' => array('name' => 'Mike Naberezny'),
- 'Comments' => array(
- array('body' => 'Comment A', 'created_at' => '2008-05-01 12:00:00', 'id' => 1, 'user_id' => 1),
- array('body' => 'Comment B', 'created_at' => '2008-08-01 12:00:00', 'id' => 2, 'user_id' => 1)
- )
- );
- $this->assertEquals($expected, $record);
- }
- public function testGetSerializableRecordWithMethods()
- {
- $record = $this->articles('xml_rpc');
- $options = array('methods' => array('foo', 'intMethod', 'boolMethod'));
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $record = $serializer->getSerializableRecord();
- $expected = array (
- 'id' => '1',
- 'title' => 'Easier XML-RPC for PHP5',
- 'user_id' => '1',
- 'boolMethod' => true,
- 'foo' => 'test serializer foo',
- 'intMethod' => 123
- );
- $this->assertEquals($expected, $record);
- }
- public function testGetSerializableRecordWithProperties()
- {
- $record = $this->articles('xml_rpc');
- $record->is_good = false;
- $record->validity = array('Valid!');
- $options = array('properties' => array('is_good', 'validity'));
- $serializer = new Mad_Model_Serializer_Base($record, $options);
- $record = $serializer->getSerializableRecord();
- $expected = array (
- 'id' => '1',
- 'title' => 'Easier XML-RPC for PHP5',
- 'user_id' => '1',
- 'is_good' => false,
- 'validity' => array('Valid!')
- );
- $this->assertEquals($expected, $record);
- }
- }