Ejemplo n.º 1
0
    /**
     *
     */
    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));
    }
 /**
  * @param Mapping $mapping
  * @param string  $className
  *
  * @throws MappingException
  */
 protected static function setProperties(Mapping $mapping, string $className)
 {
     $mapping->setProperties(static::getClassProperties($className));
 }
 /**
  * @param Mapping $mapping
  *
  * @return array
  */
 protected function getPropertiesFromMapping(Mapping $mapping)
 {
     $properties = array_merge(array_combine($mapping->getProperties(), $mapping->getProperties()), $mapping->getAliasedProperties());
     return $properties;
 }
 /**
  * @param \NilPortugues\Api\Mapping\Mapping $mapping
  *
  * @link http://jsonapi.org/format/#document-member-names-allowed-characters
  */
 protected function buildValidPropertyAlias($mapping)
 {
     $aliases = $mapping->getAliasedProperties();
     foreach ($aliases as &$alias) {
         $alias = DataAttributesHelper::transformToValidMemberName($alias);
     }
     $mapping->setPropertyNameAliases($aliases);
 }
    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));
    }
Ejemplo n.º 6
0
 /**
  * @param string $className
  *
  * @return Mapping
  */
 public function getMappingByClassName(string $className) : Mapping
 {
     $className = ltrim($className, '\\');
     return !empty($this->mappings[$className]) ? $this->mappings[$className] : Mapping::null();
 }
 public function testGetMappingByClassNameReturnsNull()
 {
     $this->assertEquals(Mapping::null(), $this->transformer->getMappingByClassName(PHPUnit_Framework_TestCase::class));
 }
Ejemplo n.º 8
0
    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));
    }
Ejemplo n.º 9
0
 public function testMappingCanBeNull()
 {
     $nullable = Mapping::null();
     $this->assertTrue($nullable->isNull());
 }