format
This commit is contained in:
parent
0a67377791
commit
ea112b2bd5
159
t/example.t
159
t/example.t
@ -9,66 +9,60 @@ use experimental qw/ signatures /;
|
||||
# example taken straight from https://www.npmjs.com/package/json-api-serializer
|
||||
|
||||
my $data = [
|
||||
{
|
||||
id=> "1",
|
||||
title=> "JSON API paints my bikeshed!",
|
||||
body=> "The shortest article. Ever.",
|
||||
created=> "2015-05-22T14:56:29.000Z",
|
||||
updated=> "2015-05-22T14:56:28.000Z",
|
||||
author=> {
|
||||
id=> "1",
|
||||
firstName=> "Kaley",
|
||||
lastName=> "Maggio",
|
||||
email=> "Kaley-Maggio\@example.com",
|
||||
age=> "80",
|
||||
gender=> "male"
|
||||
},
|
||||
tags=> ["1", "2"],
|
||||
photos=> [
|
||||
"ed70cf44-9a34-4878-84e6-0c0e4a450cfe",
|
||||
"24ba3666-a593-498c-9f5d-55a4ee08c72e",
|
||||
"f386492d-df61-4573-b4e3-54f6f5d08acf"
|
||||
],
|
||||
comments=> [
|
||||
{
|
||||
_id=> "1",
|
||||
body=> "First !",
|
||||
created=> "2015-08-14T18:42:16.475Z"
|
||||
},
|
||||
{
|
||||
_id=> "2",
|
||||
body=> "I Like !",
|
||||
created=> "2015-09-14T18:42:12.475Z"
|
||||
},
|
||||
{
|
||||
_id=> "3",
|
||||
body=> "Awesome",
|
||||
created=> "2015-09-15T18:42:12.475Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
{ id => "1",
|
||||
title => "JSON API paints my bikeshed!",
|
||||
body => "The shortest article. Ever.",
|
||||
created => "2015-05-22T14:56:29.000Z",
|
||||
updated => "2015-05-22T14:56:28.000Z",
|
||||
author => {
|
||||
id => "1",
|
||||
firstName => "Kaley",
|
||||
lastName => "Maggio",
|
||||
email => "Kaley-Maggio\@example.com",
|
||||
age => "80",
|
||||
gender => "male"
|
||||
},
|
||||
tags => [ "1", "2" ],
|
||||
photos => [
|
||||
"ed70cf44-9a34-4878-84e6-0c0e4a450cfe",
|
||||
"24ba3666-a593-498c-9f5d-55a4ee08c72e",
|
||||
"f386492d-df61-4573-b4e3-54f6f5d08acf"
|
||||
],
|
||||
comments => [
|
||||
{ _id => "1",
|
||||
body => "First !",
|
||||
created => "2015-08-14T18:42:16.475Z"
|
||||
},
|
||||
{ _id => "2",
|
||||
body => "I Like !",
|
||||
created => "2015-09-14T18:42:12.475Z"
|
||||
},
|
||||
{ _id => "3",
|
||||
body => "Awesome",
|
||||
created => "2015-09-15T18:42:12.475Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
my $registry = Dancer2::Plugin::JsonApi::Registry->new;
|
||||
|
||||
$registry->add_type(
|
||||
'article', {
|
||||
top_level_meta => sub($data,$xtra) {
|
||||
return +{
|
||||
'article',
|
||||
{ top_level_meta => sub ( $data, $xtra ) {
|
||||
return +{
|
||||
count => $xtra->{count},
|
||||
total => 0+ @$data,
|
||||
}
|
||||
total => 0 + @$data,
|
||||
};
|
||||
},
|
||||
top_level_links => {
|
||||
self => '/articles',
|
||||
},
|
||||
links => {
|
||||
self => sub($data,@) {
|
||||
top_level_links => { self => '/articles', },
|
||||
links => {
|
||||
self => sub ( $data, @ ) {
|
||||
return "/articles/" . $data->{id};
|
||||
},
|
||||
},
|
||||
relationships => {
|
||||
'tags' => { type => 'tag' },
|
||||
'tags' => { type => 'tag' },
|
||||
'comments' => { type => 'comment' },
|
||||
author => {
|
||||
type => "people",
|
||||
@ -91,48 +85,47 @@ $registry->add_type( 'comment',
|
||||
$registry->add_type(
|
||||
'people',
|
||||
{ links => sub ( $data, @ ) { '/peoples/' . $data->{id} }
|
||||
} );
|
||||
}
|
||||
);
|
||||
|
||||
my $output = $registry->serialize('article', $data, { count => 2 } );
|
||||
my $output = $registry->serialize( 'article', $data, { count => 2 } );
|
||||
|
||||
like $output->{data}[0]{relationships}{author}, {
|
||||
links => {
|
||||
like $output->{data}[0]{relationships}{author},
|
||||
{ links => {
|
||||
"self" => "/articles/1/relationships/author",
|
||||
"related" => "/articles/1/author"
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
like $output => {
|
||||
"jsonapi"=> {
|
||||
"version"=> "1.0"
|
||||
},
|
||||
"meta"=> {
|
||||
"count"=> 2,
|
||||
"total"=> 1
|
||||
},
|
||||
"links"=> {
|
||||
"self"=> "/articles"
|
||||
},
|
||||
"data"=> [{
|
||||
"type"=> "article",
|
||||
"id"=> "1",
|
||||
"attributes"=> {
|
||||
"title"=> "JSON API paints my bikeshed!",
|
||||
"body"=> "The shortest article. Ever.",
|
||||
"created"=> "2015-05-22T14:56:29.000Z"
|
||||
"jsonapi" => { "version" => "1.0" },
|
||||
"meta" => {
|
||||
"count" => 2,
|
||||
"total" => 1
|
||||
},
|
||||
"relationships"=> {
|
||||
"tags"=> {
|
||||
"data"=> [{
|
||||
"type"=> "tag",
|
||||
"id"=> "1"
|
||||
}, {
|
||||
"type"=> "tag",
|
||||
"id"=> "2"
|
||||
}]
|
||||
},
|
||||
}
|
||||
}],
|
||||
"links" => { "self" => "/articles" },
|
||||
"data" => [
|
||||
{ "type" => "article",
|
||||
"id" => "1",
|
||||
"attributes" => {
|
||||
"title" => "JSON API paints my bikeshed!",
|
||||
"body" => "The shortest article. Ever.",
|
||||
"created" => "2015-05-22T14:56:29.000Z"
|
||||
},
|
||||
"relationships" => {
|
||||
"tags" => {
|
||||
"data" => [
|
||||
{ "type" => "tag",
|
||||
"id" => "1"
|
||||
},
|
||||
{ "type" => "tag",
|
||||
"id" => "2"
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
}
|
||||
],
|
||||
};
|
||||
|
||||
done_testing;
|
||||
|
Loading…
Reference in New Issue
Block a user