initial commit with working tests, docs, and conversion to dzil+podweaver
[catagits/Catalyst-Controller-DBIC-API.git] / t / lib / RestTest / Controller / API / RPC / Any.pm
1 package RestTest::Controller::API::RPC::Any;
2 use Moose;
3 BEGIN { extends 'Catalyst::Controller::DBIC::API::RPC' }
4
5 use namespace::autoclean;
6
7 sub setup :Chained('/api/rpc/rpc_base') :CaptureArgs(1) :PathPart('any') {
8   my ($self, $c, $object_type) = @_;
9
10   my $config = {};
11   if ($object_type eq 'artist') {
12     $config->{class} = 'RestTestDB::Artist';
13     $config->{create_requires} = [qw/name/];
14     $config->{update_allows} = [qw/name/];
15   } elsif ($object_type eq 'track') {
16     $config->{class} = 'RestTestDB::Track';
17     $config->{update_allows} = [qw/title position/];
18   } else {
19     $self->push_error($c, { message => "invalid object_type" });
20     return;
21   }
22
23   $c->req->_set_class($config->{class});
24   $self->_set_class($config->{class});
25   $c->req->_set_current_result_set($self->stored_result_source->resultset);
26   $c->stash->{$_} = $config->{$_} for keys %{$config};
27 }
28
29 1;