
amiribarksdale at gmail
Jun 23, 2009, 5:39 PM
Views: 558
Permalink
|
|
Error in subclassing Catalyst::Controller::DBIC::API::REST
|
|
I have a controller inheriting from a ControllerBase class that contains the following: package RestTest::ControllerBase::REST; use strict; use warnings; use base qw/Catalyst::Controller::DBIC::API::REST/; sub create :Private { my ($self, $c) = @_; $self->next::method($c); if ($c->stash->{created_object}) { %{$c->stash->{response}->{new_object}} = %$c->stash->{created_object}->get_columns; } } 1; All the ControllerBase does is stash that object on create requests. I was following lukes's example at http://search.cpan.org/~lsaunders/Catalyst-Controller-DBIC-API-1.003000/lib/Catalyst/Controller/DBIC/API.pm#EXTENDING. The relevant part of the controller is: package RestTest::Controller::API::REST::Artist; use strict; use warnings; use base qw/RestTest::ControllerBase::REST/; use JSON::Syck; __PACKAGE__->config( action => { setup => { PathPart => 'artist', Chained => '/api/rest/rest_base' } }, ... ); Now for the problem. When I go to test this: my $mech = Test::WWW::Mechanize::Catalyst->new; ok(my $schema = DBICTest->init_schema(), 'got schema'); my $req = GET("http://localhost/api/rest/artist/list", { }, 'Accept' => 'text/x-json' ); $mech->request($req); cmp_ok( $mech->status, '==', 200, 'open attempt okay' ); I get the error: 'Method GET not implemented for http' => '//localhost/api/rest/artist/api/rest/artist/object' Somehow my request path gets all messed up. I dumped out the $mech, and it tells me that $mech->base is indeed what I put. So is $mech->redirected_uri. Amiri _______________________________________________ List: Catalyst[at]lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst[at]lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/
|