Skip to content
Snippets Groups Projects
Commit 61eda85b authored by Joan He's avatar Joan He
Browse files

MAGETWO-59444: Create serializer interface and json class in framework

parent 6a08cddd
No related merge requests found
...@@ -7,6 +7,10 @@ namespace Magento\Framework\Serialize\Serializer; ...@@ -7,6 +7,10 @@ namespace Magento\Framework\Serialize\Serializer;
use Magento\Framework\Serialize\SerializerInterface; use Magento\Framework\Serialize\SerializerInterface;
/**
* Class for serializing data to json string and unserializing json string to data
*
*/
class Json implements SerializerInterface class Json implements SerializerInterface
{ {
/** /**
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
*/ */
namespace Magento\Framework\Serialize; namespace Magento\Framework\Serialize;
/**
* Interface for serializing
*/
interface SerializerInterface interface SerializerInterface
{ {
/** /**
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
*/ */
namespace Magento\Framework\Serialize\Test\Unit\Serializer; namespace Magento\Framework\Serialize\Test\Unit\Serializer;
use Magento\Framework\DataObject;
use Magento\Framework\Serialize\Serializer\Json; use Magento\Framework\Serialize\Serializer\Json;
class JsonTest extends \PHPUnit_Framework_TestCase class JsonTest extends \PHPUnit_Framework_TestCase
...@@ -21,25 +22,57 @@ class JsonTest extends \PHPUnit_Framework_TestCase ...@@ -21,25 +22,57 @@ class JsonTest extends \PHPUnit_Framework_TestCase
} }
/** /**
* @param null|bool|array $value * @param string|int|float|bool|array|null $value
* @dataProvider serializeUnserializeDataProvider * @param string $expected
* @dataProvider serializeDataProvider
*/ */
public function testSerializeUnserialize($value) public function testSerialize($value, $expected)
{ {
$this->assertEquals( $this->assertEquals(
$this->json->unserialize($this->json->serialize($value)), $expected,
$value $this->json->serialize($value)
); );
} }
public function serializeUnserializeDataProvider() public function serializeDataProvider()
{ {
$dataObject = new DataObject(['something']);
return [ return [
[''], ['', '""'],
['string'], ['string', '"string"'],
[null], [null, 'null'],
[false], [false, 'false'],
[['a' => 'b']], [['a' => 'b', 'd' => 123], '{"a":"b","d":123}'],
[123, '123'],
[10.56, '10.56'],
[$dataObject, '{}'],
];
}
/**
* @param string $value
* @param string|int|float|bool|array|null $expected
* @dataProvider unserializeDataProvider
*/
public function testUnserialize($value, $expected)
{
$this->assertEquals(
$expected,
$this->json->unserialize($value)
);
}
public function unserializeDataProvider()
{
return [
['""', ''],
['"string"', 'string'],
['null', null],
['false', false],
['{"a":"b","d":123}', ['a' => 'b', 'd' => 123]],
['123', 123],
['10.56', 10.56],
['{}', []],
]; ];
} }
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment