Skip to content

Commit 09499e7

Browse files
Test using lowest possible dependencies
1 parent 555c105 commit 09499e7

File tree

6 files changed

+90
-51
lines changed

6 files changed

+90
-51
lines changed

.travis.yml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
language: php
22

33
php:
4-
- 5.3.3
54
- 5.3
65
- 5.4
76
- 5.5
@@ -11,18 +10,14 @@ php:
1110
matrix:
1211
allow_failures:
1312
- php: hhvm
14-
15-
env:
16-
- SYMFONY_VERSION="2.2.0" GUZZLE_VERSION="3.0.0" SENSIO_FRAMEWORK_EXTRA_VERSION="~2.2"
17-
- SYMFONY_VERSION="2.3.x" GUZZLE_VERSION="~3.0" SENSIO_FRAMEWORK_EXTRA_VERSION="~2.2"
18-
- SYMFONY_VERSION="~2.4" GUZZLE_VERSION="~3.0" SENSIO_FRAMEWORK_EXTRA_VERSION="~3.0"
13+
include:
14+
- php: 5.3.3
15+
env: dependencies=lowest
1916

2017
before_install:
21-
- composer require symfony/framework-bundle:${SYMFONY_VERSION} --no-interaction --no-update
22-
- composer require guzzle/guzzle:${GUZZLE_VERSION} --no-interaction --no-update
23-
- composer require sensio/framework-extra-bundle:${SENSIO_FRAMEWORK_EXTRA_VERSION} --no-interaction --dev --no-update
18+
- composer self-update
2419

2520
install:
26-
- composer install --no-interaction --dev --prefer-source
21+
- if [ "$dependencies" = "lowest" ]; then composer update --dev --prefer-lowest --prefer-stable --prefer-source --no-interaction; else composer install --dev --prefer-source --no-interaction; fi;
2722

2823
script: ./vendor/bin/phpunit

Resources/doc/serialization.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Executing the `GetPerson` command will now return an instance of `Vendor\MyBundl
3232
$command = $client->getCommand('GetPerson', array('id' => $id));
3333
$person = $client->execute($command);
3434

35-
If you wish to customize the deserialization context of the serializer, you can do so by usage of the `data` property of the Operation. Groups, version, and max depth checks are configurable for deserialization:
35+
If you wish to customize the deserialization context of the serializer (JMSSerializer v0.12+), you can do so by usage of the `data` property of the Operation. Groups, version, and max depth checks (JMSSerializer v0.13+) are configurable for deserialization:
3636

3737
For example:
3838

Service/Command/JMSSerializerResponseParser.php

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -105,24 +105,36 @@ protected function deserialize(CommandInterface $command, Response $response, $c
105105
if (null !== $serializerContentType &&
106106
OperationInterface::TYPE_CLASS === $command->getOperation()->getResponseType()
107107
) {
108-
$context = DeserializationContext::create();
109-
$operation = $command->getOperation();
108+
if (true === class_exists('JMS\Serializer\DeserializationContext')) {
109+
$context = DeserializationContext::create();
110+
$operation = $command->getOperation();
110111

111-
if (null !== $groups = $operation->getData('jms_serializer.groups')) {
112-
$context->setGroups($groups);
113-
}
114-
if (null !== $version = $operation->getData('jms_serializer.version')) {
115-
$context->setVersion($version);
116-
}
117-
if (true === $operation->getData('jms_serializer.max_depth_checks')) {
118-
$context->enableMaxDepthChecks();
112+
if (null !== $groups = $operation->getData('jms_serializer.groups')) {
113+
$context->setGroups($groups);
114+
}
115+
if (null !== $version = $operation->getData('jms_serializer.version')) {
116+
$context->setVersion($version);
117+
}
118+
if (
119+
true === $operation->getData('jms_serializer.max_depth_checks')
120+
&&
121+
true === method_exists('JMS\Serializer\DeserializationContext', 'enableMaxDepthChecks')
122+
) {
123+
$context->enableMaxDepthChecks();
124+
}
125+
126+
return $this->serializer->deserialize(
127+
$response->getBody(),
128+
$command->getOperation()->getResponseClass(),
129+
$serializerContentType,
130+
$context
131+
);
119132
}
120133

121134
return $this->serializer->deserialize(
122135
$response->getBody(),
123136
$command->getOperation()->getResponseClass(),
124-
$serializerContentType,
125-
$context
137+
$serializerContentType
126138
);
127139
}
128140
}

Service/Command/LocationVisitor/Request/JMSSerializerBodyVisitor.php

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,22 +65,31 @@ public function visit(CommandInterface $command, RequestInterface $request, Para
6565
$contentType = 'xml';
6666
break;
6767
}
68-
$context = SerializationContext::create();
6968

70-
if (null !== $groups = $param->getData('jms_serializer.groups')) {
71-
$context->setGroups($groups);
72-
}
73-
if (null !== $version = $param->getData('jms_serializer.version')) {
74-
$context->setVersion($version);
75-
}
76-
if (null !== $nulls = $param->getData('jms_serializer.serialize_nulls')) {
77-
$context->setSerializeNull($nulls);
78-
}
79-
if (true === $param->getData('jms_serializer.max_depth_checks')) {
80-
$context->enableMaxDepthChecks();
81-
}
69+
if (true === class_exists('JMS\Serializer\SerializationContext')) {
70+
$context = SerializationContext::create();
71+
72+
if (null !== $groups = $param->getData('jms_serializer.groups')) {
73+
$context->setGroups($groups);
74+
}
75+
if (null !== $version = $param->getData('jms_serializer.version')) {
76+
$context->setVersion($version);
77+
}
78+
if (null !== $nulls = $param->getData('jms_serializer.serialize_nulls')) {
79+
$context->setSerializeNull($nulls);
80+
}
81+
if (
82+
true === $param->getData('jms_serializer.max_depth_checks')
83+
&&
84+
true === method_exists('JMS\Serializer\SerializationContext', 'enableMaxDepthChecks')
85+
) {
86+
$context->enableMaxDepthChecks();
87+
}
8288

83-
$value = $this->serializer->serialize($filteredValue, $contentType, $context);
89+
$value = $this->serializer->serialize($filteredValue, $contentType, $context);
90+
} else {
91+
$value = $this->serializer->serialize($filteredValue, $contentType);
92+
}
8493
}
8594

8695
parent::visit($command, $request, $param, $value);

Tests/Service/Command/JMSSerializerResponseParserTest.php

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,16 @@ class JMSSerializerResponseParserTest extends \PHPUnit_Framework_TestCase
2020
{
2121
public function testDeserializeContextConfiguration()
2222
{
23-
$expectedContext = DeserializationContext::create();
24-
$expectedContext->setGroups('group');
25-
$expectedContext->setVersion(1);
26-
$expectedContext->enableMaxDepthChecks();
23+
if (true === class_exists('JMS\Serializer\DeserializationContext')) {
24+
$expectedContext = DeserializationContext::create();
25+
$expectedContext->setGroups('group');
26+
$expectedContext->setVersion(1);
27+
if(true === method_exists('JMS\Serializer\DeserializationContext', 'enableMaxDepthChecks')) {
28+
$expectedContext->enableMaxDepthChecks();
29+
}
30+
} else {
31+
$expectedContext = null;
32+
}
2733

2834
$operation = $this->getMock('Guzzle\Service\Description\OperationInterface');
2935
$operation->expects($this->any())->method('getResponseType')->will($this->returnValue(OperationInterface::TYPE_CLASS));
@@ -46,8 +52,13 @@ public function testDeserializeContextConfiguration()
4652
$response->setBody('body');
4753

4854
$serializer = $this->getMock('JMS\Serializer\SerializerInterface');
49-
$serializer->expects($this->once())->method('deserialize')
50-
->with('body', 'ResponseClass', 'json', $this->equalTo($expectedContext));
55+
if(null === $expectedContext) {
56+
$serializer->expects($this->once())->method('deserialize')
57+
->with('body', 'ResponseClass', 'json');
58+
} else {
59+
$serializer->expects($this->once())->method('deserialize')
60+
->with('body', 'ResponseClass', 'json', $this->equalTo($expectedContext));
61+
}
5162

5263
$parser = new JMSSerializerResponseParser($serializer, $this->getMock('Guzzle\Service\Command\ResponseParserInterface'));
5364

Tests/Service/Command/LocationVisitor/Request/JMSSerializerBodyVisitorTest.php

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,17 @@ class JMSSerializerBodyVisitorTest extends \PHPUnit_Framework_TestCase
1818
{
1919
public function testSerializeContextConfiguration()
2020
{
21-
$expectedContext = SerializationContext::create();
22-
$expectedContext->setGroups('group');
23-
$expectedContext->setVersion(1);
24-
$expectedContext->setSerializeNull(true);
25-
$expectedContext->enableMaxDepthChecks();
21+
if (true === class_exists('JMS\Serializer\SerializationContext')) {
22+
$expectedContext = SerializationContext::create();
23+
$expectedContext->setGroups('group');
24+
$expectedContext->setVersion(1);
25+
$expectedContext->setSerializeNull(true);
26+
if(true === method_exists('JMS\Serializer\SerializationContext', 'enableMaxDepthChecks')) {
27+
$expectedContext->enableMaxDepthChecks();
28+
}
29+
} else {
30+
$expectedContext = null;
31+
}
2632

2733
$parameter = $this->getMock('Guzzle\Service\Description\Parameter');
2834
$parameter->expects($this->once())->method('getSentAs')->will($this->returnValue('json'));
@@ -45,9 +51,15 @@ public function testSerializeContextConfiguration()
4551
->getMock();
4652

4753
$serializer = $this->getMock('JMS\Serializer\SerializerInterface');
48-
$serializer->expects($this->once())->method('serialize')
49-
->with(array(), 'json', $this->equalTo($expectedContext))
50-
->will($this->returnValue('serialized'));
54+
if(null === $expectedContext) {
55+
$serializer->expects($this->once())->method('serialize')
56+
->with(array(), 'json')
57+
->will($this->returnValue('serialized'));
58+
} else {
59+
$serializer->expects($this->once())->method('serialize')
60+
->with(array(), 'json', $this->equalTo($expectedContext))
61+
->will($this->returnValue('serialized'));
62+
}
5163

5264
$parser = new JMSSerializerBodyVisitor($serializer, $this->getMock('Guzzle\Service\Command\ResponseParserInterface'));
5365

0 commit comments

Comments
 (0)