/** * */ public function testItWillSerializeToHalXmlAnArrayOfObjects() { $postArray = [new SimplePost(1, 'post title 1', 'post body 1', 4), new SimplePost(2, 'post title 2', 'post body 2', 5)]; $postMapping = new Mapping(SimplePost::class, '/post/{postId}', ['postId']); $postMapping->setFilterKeys(['body', 'title']); $mapper = new Mapper(); $mapper->setClassMap([$postMapping->getClassName() => $postMapping]); $transformer = new XmlTransformer($mapper); $expected = <<<XML <?xml version="1.0" encoding="UTF-8"?> <resource> <total><![CDATA[2]]></total> <embedded> <resource href="/post/1"> <post_id><![CDATA[1]]></post_id> <title><![CDATA[post title 1]]></title> <body><![CDATA[post body 1]]></body> <author_id><![CDATA[4]]></author_id> <comments/> <links> <link rel="self" href="/post/1"/> </links> </resource> <resource href="/post/2"> <post_id><![CDATA[2]]></post_id> <title><![CDATA[post title 2]]></title> <body><![CDATA[post body 2]]></body> <author_id><![CDATA[5]]></author_id> <comments/> <links> <link rel="self" href="/post/2"/> </links> </resource> </embedded> </resource> XML; $this->assertEquals($expected, (new HalSerializer($transformer))->serialize($postArray)); }
public function testItWillSerializeObjectsNotAddedInMappings() { $stdClass = new \stdClass(); $stdClass->userName = '******'; $stdClass->commentBody = 'Hello World'; $comment = new SimpleComment(1, $stdClass); $mapping = new Mapping(SimpleComment::class, '/comment/{id}', ['id']); $mapper = new Mapper(); $mapper->setClassMap([$mapping->getClassName() => $mapping]); $jsonApiJsonApiSerializer = new JsonApiTransformer($mapper); $expected = <<<JSON { "data":{ "type":"comment", "id":"1", "attributes":{ "created_at":{ "date":"2015-11-20 21:43:31.000000", "timezone_type":3, "timezone":"Europe/Madrid" }, "comment":{ "user_name":"Joe", "comment_body":"Hello World" }, "id": 1 }, "links":{ "self":{ "href":"/comment/1" } } }, "links": { "self": { "href": "/comment/1" } }, "jsonapi":{ "version":"1.0" } } JSON; $this->assertEquals(\json_decode($expected, true), \json_decode((new JsonApiSerializer($jsonApiJsonApiSerializer))->serialize($comment), true)); }
public function testItIfFilteringOutKeys() { $post = $this->createSimplePost(); $postMapping = new Mapping(SimplePost::class, '/post/{postId}', ['postId']); $postMapping->setFilterKeys(['body']); $mapper = new Mapper(); $mapper->setClassMap([$postMapping->getClassName() => $postMapping]); $transformer = new JsonTransformer($mapper); $expected = <<<JSON { "post_id": 1, "title": "post title", "body": "post body", "author_id": 2, "comments": [ { "comment_id": 10, "comment": "I am writing comment no. 1", "user_id": "User 5", "created_at": "2015-07-19T12:48:00+02:00" }, { "comment_id": 20, "comment": "I am writing comment no. 2", "user_id": "User 10", "created_at": "2015-07-20T12:48:00+02:00" }, { "comment_id": 30, "comment": "I am writing comment no. 3", "user_id": "User 15", "created_at": "2015-07-21T12:48:00+02:00" }, { "comment_id": 40, "comment": "I am writing comment no. 4", "user_id": "User 20", "created_at": "2015-07-22T12:48:00+02:00" }, { "comment_id": 50, "comment": "I am writing comment no. 5", "user_id": "User 25", "created_at": "2015-07-23T12:48:00+02:00" } ], "_links":{ "self":{ "href":"/post/1" } } } JSON; $this->assertEquals(\json_decode($expected, true), \json_decode((new HalSerializer($transformer))->serialize($post), true)); }