auto-add the self link within the app
This commit is contained in:
parent
ebbb5f9466
commit
0a2eee55ce
@ -30,6 +30,8 @@ has types => (
|
||||
default => sub { +{} },
|
||||
);
|
||||
|
||||
has app => ( is => 'ro', );
|
||||
|
||||
=head2 add_type($type, $definition = {})
|
||||
|
||||
Adds a data type to the registry.
|
||||
|
@ -66,6 +66,11 @@ sub serialize ( $self, $data, $extra_data = {} ) {
|
||||
|
||||
$serial->{links} = gen_links( $self->top_level_links, $data, $extra_data )
|
||||
if $self->top_level_links;
|
||||
|
||||
if ( $self->registry and $self->registry->app ) {
|
||||
$serial->{links}{self} = $self->registry->app->request->path;
|
||||
}
|
||||
|
||||
$serial->{meta} = gen_links( $self->top_level_meta, $data, $extra_data )
|
||||
if $self->top_level_meta;
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
use Test2::V0;
|
||||
|
||||
use Dancer2::Plugin::JsonApi::Registry::Schema;
|
||||
use Dancer2::Plugin::JsonApi::Registry;
|
||||
|
||||
use experimental qw/ signatures /;
|
||||
|
||||
@ -96,4 +97,29 @@ subtest 'empty data', sub {
|
||||
ok( !$serialized->{data}, "there is no data" );
|
||||
};
|
||||
|
||||
package FakeRequest {
|
||||
use Moo;
|
||||
has path => ( is => 'ro', default => '/some/path' );
|
||||
}
|
||||
|
||||
package FakeApp {
|
||||
use Moo;
|
||||
has request => (
|
||||
is => 'ro',
|
||||
default => sub {
|
||||
FakeRequest->new;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
subtest "add the self link if tied to the app" => sub {
|
||||
my $serialized = Dancer2::Plugin::JsonApi::Registry::Schema->new(
|
||||
type => 'thing',
|
||||
registry =>
|
||||
Dancer2::Plugin::JsonApi::Registry->new( app => FakeApp->new )
|
||||
)->serialize(undef);
|
||||
|
||||
is $serialized->{links}{self} => '/some/path';
|
||||
|
||||
};
|
||||
done_testing();
|
||||
|
Loading…
Reference in New Issue
Block a user