Skip to content

Commit

Permalink
Required Rock Data provider (romeoz/rock-dataprovider)
Browse files Browse the repository at this point in the history
  • Loading branch information
romeOz committed Aug 1, 2015
1 parent d7f5c62 commit 6e6ace8
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 82 deletions.
128 changes: 66 additions & 62 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,65 +1,69 @@
{
"name": "romeoz/rock",
"description": "The Rock PHP framework",
"keywords": ["framework", "rock"],
"type": "library",
"license": "MIT",
"support": {
"email": "serggalka@gmail.com",
"issues": "https://github.com/romeOz/rock/issues",
"source": "https://github.com/romeOz/rock"
},
"authors": [
{
"name": "Ruslan",
"email": "serggalka@gmail.com"
}
],
"require": {
"php": ">=5.4.0",
"romeoz/rock-components" : "0.11.*",
"romeoz/rock-di" : "0.12.*",
"romeoz/rock-request" : "0.11.*",
"romeoz/rock-url" : "0.11.*",
"romeoz/rock-csrf" : "0.11.*",
"romeoz/rock-sanitize" : "0.10.*",
"romeoz/rock-validate" : "0.10.*",
"romeoz/rock-date" : "0.10.*",
"romeoz/rock-i18n" : "0.10.*",
"romeoz/rock-access" : "0.10.*",
"romeoz/rock-template" : "0.12.*",
"romeoz/rock-widgets" : "0.11.*",
"romeoz/rock-behaviors" : "0.11.*",
"romeoz/rock-session" : "0.10.*",
"romeoz/rock-db" : "0.11.*",
"filp/whoops": "1.1.*",
"phpmailer/phpmailer" : "5.2.*",
"monolog/monolog": "1.15.*"
},
"require-dev": {
"phpunit/phpunit": "~4.7.0"
},
"suggest": {
"romeoz/rock-file" : "Rock File",
"romeoz/rock-cache" : "Rock Cache",
"romeoz/rock-mongodb" : "Rock MongoDB",
"romeoz/rock-sphinx" : "Rock Sphinx",
"romeoz/rock-image": "Rock Image",
"romeoz/rock-markdown": "Rock Markdown",
"romeoz/rock-mq": "Rock MQ",
"romeoz/rock-morphy": "Rock Morphy",
"tackk/cartographer": "required by SitemapResponseFormatter",
"mibe/feedwriter": "required by RssResponseFormatter",
"lusitanian/oauth" : "required by rock-authclient extension"
},
"autoload": {
"psr-4": {
"rock\\": "src/"
}
},
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
"name": "romeoz/rock",
"description": "The Rock PHP framework",
"keywords": [
"framework",
"rock"
],
"type": "library",
"license": "MIT",
"support": {
"email": "serggalka@gmail.com",
"issues": "https://github.com/romeOz/rock/issues",
"source": "https://github.com/romeOz/rock"
},
"authors": [
{
"name": "Ruslan",
"email": "serggalka@gmail.com"
}
],
"require": {
"php": ">=5.4.0",
"romeoz/rock-components": "*@dev",
"romeoz/rock-di": "*@dev",
"romeoz/rock-request": "*@dev",
"romeoz/rock-url": "*@dev",
"romeoz/rock-csrf": "*@dev",
"romeoz/rock-sanitize": "*@dev",
"romeoz/rock-validate": "*@dev",
"romeoz/rock-date": "*@dev",
"romeoz/rock-i18n": "*@dev",
"romeoz/rock-access": "*@dev",
"romeoz/rock-template": "*@dev",
"romeoz/rock-widgets": "*@dev",
"romeoz/rock-behaviors": "*@dev",
"romeoz/rock-session": "*@dev",
"romeoz/rock-db": "*@dev",
"romeoz/rock-dataprovider": "*@dev",
"filp/whoops": "1.1.*",
"phpmailer/phpmailer": "5.2.*",
"monolog/monolog": "1.15.*"
},
"require-dev": {
"phpunit/phpunit": "~4.7.0"
},
"suggest": {
"romeoz/rock-file": "Rock File",
"romeoz/rock-cache": "Rock Cache",
"romeoz/rock-mongodb": "Rock MongoDB",
"romeoz/rock-sphinx": "Rock Sphinx",
"romeoz/rock-image": "Rock Image",
"romeoz/rock-markdown": "Rock Markdown",
"romeoz/rock-mq": "Rock MQ",
"romeoz/rock-morphy": "Rock Morphy",
"tackk/cartographer": "required by SitemapResponseFormatter",
"mibe/feedwriter": "required by RssResponseFormatter",
"lusitanian/oauth": "required by rock-authclient extension"
},
"autoload": {
"psr-4": {
"rock\\": "src/"
}
},
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
}
}
10 changes: 5 additions & 5 deletions src/rest/Serializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
use rock\base\ObjectTrait;
use rock\components\Arrayable;
use rock\components\Model;
use rock\db\common\ActiveDataProvider;
use rock\db\common\PaginationProvider;
use rock\data\ActiveDataProvider;
use rock\data\PaginationProvider;
use rock\helpers\ArrayHelper;
use rock\helpers\Instance;
use rock\helpers\Link;
Expand All @@ -21,7 +21,7 @@
* so that they can be further turned into different formats, such as JSON, XML, by response formatters.
*
* The default implementation handles resources as {@see \rock\components\Model} objects and collections as objects
* implementing {@see \rock\db\common\ActiveDataProvider}. You may override {@see \rock\rest\Serializer::serialize()} to handle more types.
* implementing {@see \rock\data\ActiveDataProvider}. You may override {@see \rock\rest\Serializer::serialize()} to handle more types.
*/
class Serializer implements ObjectInterface
{
Expand Down Expand Up @@ -120,7 +120,7 @@ public function init()
* Serializes the given data into a format that can be easily turned into other formats.
* This method mainly converts the objects of recognized types into array representation.
* It will not do conversion for unknown object types or non-object data.
* The default implementation will handle {@see \rock\components\Model} and {@see \rock\db\common\ActiveDataProvider}.
* The default implementation will handle {@see \rock\components\Model} and {@see \rock\data\ActiveDataProvider}.
* You may override this method to support more object types.
* @param mixed $data the data to be serialized.
* @return mixed the converted data.
Expand Down Expand Up @@ -158,7 +158,7 @@ protected function getRequestedFields()

/**
* Serializes a data provider.
* @param ActiveDataProvider $dataProvider
* @param \rock\data\ActiveDataProvider $dataProvider
* @return array the array representation of the data provider.
*/
protected function serializeDataProvider($dataProvider)
Expand Down
30 changes: 15 additions & 15 deletions tests/rest/SerializerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


use rock\components\Model;
use rock\db\common\ActiveDataProvider;
use rock\data\ActiveDataProvider;
use rock\response\Response;
use rock\rest\Serializer;
use rockunit\db\DatabaseTestCase;
Expand Down Expand Up @@ -48,23 +48,23 @@ public function testAsActiveDataProvider()
[
'self' =>
[
'href' => 'http://site.com/',
'href' => 'http://site.com/?limit=2',
],
'first' =>
[
'href' => 'http://site.com/',
'href' => 'http://site.com/?limit=2',
],
'prev' =>
[
'href' => 'http://site.com/',
'href' => 'http://site.com/?limit=2',
],
'next' =>
[
'href' => 'http://site.com/?page=1',
'href' => 'http://site.com/?page=1&limit=2',
],
'last' =>
[
'href' => 'http://site.com/?page=1',
'href' => 'http://site.com/?page=1&limit=2',
],
],
'_meta' =>
Expand All @@ -75,7 +75,7 @@ public function testAsActiveDataProvider()
'perPage' => 2,
],
];
$serialize = new Serializer(['collectionEnvelope' => 'data', 'response' => $response]);
$serialize = new Serializer(['collectionEnvelope' => 'data', 'response' => $response]);
$this->assertEquals($expected, $serialize->serialize($provider));
$this->assertNotEmpty($response->getHeaders()->get(strtolower($serialize->totalCountHeader)));
$this->assertNotEmpty($response->getHeaders()->get('link'));
Expand All @@ -85,7 +85,7 @@ public function testAsModel()
{
$response = new Response();
$config = ['collectionEnvelope' => 'data', 'response' => $response];
$serialize = new Serializer($config);
$serialize = new Serializer($config);
$_GET[$serialize->fieldsParam] = 'username,email';
$model = Users::find()->select(['id', 'username', 'email'])->one();

Expand All @@ -105,7 +105,7 @@ public function testAsModel()
// extend

$config['extend'] = ['message' => 'text...'];
$serialize = new Serializer($config);
$serialize = new Serializer($config);
$expected[$serialize->extendAttribute] = [
'message' => 'text...'
];
Expand All @@ -124,18 +124,18 @@ public function testAsModelForm()
$this->assertFalse($model->validate());
$this->assertNotEmpty($model->getErrors());
$response = new Response();
$serialize = new Serializer(['collectionEnvelope' => 'data', 'response' => $response]);
$serialize = new Serializer(['collectionEnvelope' => 'data', 'response' => $response]);
$expected = [
'email'=>'email must be valid'
'email' => 'email must be valid'
];

$this->assertEquals($expected, $serialize->serialize($model));

// all errors

$serialize = new Serializer(['collectionEnvelope' => 'data', 'response' => $response, 'firstErrors' => false]);
$serialize = new Serializer(['collectionEnvelope' => 'data', 'response' => $response, 'firstErrors' => false]);
$expected = [
'email'=> ['email must be valid']
'email' => ['email must be valid']
];

$this->assertEquals($expected, $serialize->serialize($model));
Expand All @@ -152,7 +152,7 @@ public function testExtend()
'message' => 'text...'
]
];
$serialize = new Serializer($config);
$serialize = new Serializer($config);

$expected = $data;
$expected[$serialize->extendAttribute] = [
Expand All @@ -168,7 +168,7 @@ public function testExtend()
'note' => 'note...'
]
];
$serialize = new Serializer($config);
$serialize = new Serializer($config);

$expected2 = $data;
$expected2[$serialize->extendAttribute] = [
Expand Down

0 comments on commit 6e6ace8

Please sign in to comment.