From 7b43bcc893682106c7590d62b3f14c7cd39a879f Mon Sep 17 00:00:00 2001 From: Thijs Alberts Date: Mon, 16 Nov 2015 09:54:11 +0100 Subject: [PATCH 1/3] [HttpFoundation] JsonResponse.php. Updated setData() with getContent() when getContent is not empty --- src/Symfony/Component/HttpFoundation/JsonResponse.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Symfony/Component/HttpFoundation/JsonResponse.php b/src/Symfony/Component/HttpFoundation/JsonResponse.php index 0445a9a6ce11a..3960fe5dc40a8 100644 --- a/src/Symfony/Component/HttpFoundation/JsonResponse.php +++ b/src/Symfony/Component/HttpFoundation/JsonResponse.php @@ -171,6 +171,10 @@ public function setEncodingOptions($encodingOptions) { $this->encodingOptions = (int) $encodingOptions; + if ($this->content !== null) { + $this->data = $this->content; + } + return $this->setData(json_decode($this->data)); } From 7ea082365b495265ea1b5fcfad63e037bbc71c4f Mon Sep 17 00:00:00 2001 From: Thijs Alberts Date: Mon, 16 Nov 2015 09:56:25 +0100 Subject: [PATCH 2/3] [HttpFoundation] JsonResponse.php. Updated JsonResponseTest Added new tests for testing setting content and setting data after setting EncodingOptions --- .../HttpFoundation/Tests/JsonResponseTest.php | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php index 60d27e4d5961c..bbeac2a5bf5a8 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php @@ -213,6 +213,30 @@ public function testSetContentJsonSerializeError() JsonResponse::create($serializable); } + + public function testSetDataAfterSettingEncodingOptions() + { + $response = new JsonResponse(); + $response->setData(array(array(1, 2, 3))); + + $this->assertEquals('[[1,2,3]]', $response->getContent()); + + $response->setEncodingOptions(JSON_FORCE_OBJECT); + $response->setData(array(array(4, 5, 6))); + $this->assertEquals('{"0":{"0":4,"1":5,"2":6}}', $response->getContent()); + } + + public function testSetContentAfterSettingEncodingOptions() + { + $response = new JsonResponse(); + $response->setData(array(array(1, 2, 3))); + + $this->assertEquals('[[1,2,3]]', $response->getContent()); + + $response->setEncodingOptions(JSON_PRETTY_PRINT); + $response->setContent("['baz' => ['foo' => 'bar']]"); + $this->assertEquals("['baz' => ['foo' => 'bar']]", $response->getContent()); + } } if (interface_exists('JsonSerializable')) { From 1a1a089304d1178f5555cb8a704216589e7e767c Mon Sep 17 00:00:00 2001 From: Thijs Alberts Date: Mon, 16 Nov 2015 14:31:46 +0100 Subject: [PATCH 3/3] [HttpFoundation] JsonResponse.php. Updated JsonResponseTest --- .../HttpFoundation/Tests/JsonResponseTest.php | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php index 64d86847d447f..8f261dd1de6bc 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php @@ -213,28 +213,24 @@ public function testSetContentJsonSerializeError() JsonResponse::create($serializable); } - public function testSetDataAfterSettingEncodingOptions() + public function testDataAfterSettingEncodingOptions() { $response = new JsonResponse(); $response->setData(array(array(1, 2, 3))); $this->assertEquals('[[1,2,3]]', $response->getContent()); - $response->setEncodingOptions(JSON_FORCE_OBJECT); - $response->setData(array(array(4, 5, 6))); - $this->assertEquals('{"0":{"0":4,"1":5,"2":6}}', $response->getContent()); + + $this->assertEquals('{"0":{"0":1,"1":2,"2":3}}', $response->getContent()); } - public function testSetContentAfterSettingEncodingOptions() + public function testContentAfterSettingEncodingOptionsToBeEmpty() { $response = new JsonResponse(); - $response->setData(array(array(1, 2, 3))); - - $this->assertEquals('[[1,2,3]]', $response->getContent()); + $response->setContent('{"different":{"key":"value"}}'); + $response->setEncodingOptions(JSON_FORCE_OBJECT); - $response->setEncodingOptions(JSON_PRETTY_PRINT); - $response->setContent("['baz' => ['foo' => 'bar']]"); - $this->assertEquals("['baz' => ['foo' => 'bar']]", $response->getContent()); + $this->assertEquals($response->getContent(), '{"different":{"key":"value"}}'); } }