Can you help me with the Plugin Adaptor? Looking at https://metacpan.org/source/YANICK/Dancer2-Plugin-Adapter-0.006/t/file-temp.... it seems as if a Plugin Adaptor test should go like this: use strict; use warnings; use Test::More 0.96 import => ['!pass']; use Plack::Test; use HTTP::Request::Common; use Data::Printer; { # Test app package Test::Adapter::fuu::Barr; use Dancer2; use Dancer2::Plugin::Adapter; set show_errors => 0; set serializer => "JSON"; set plugins => { "Adapter" => { capdir => { class => 'fuu::CAP::Directory', constructor => 'new' }, }, }; get '/' => sub { if ( -d service("capdir") ) { return {message => 'Hello World'}; } else { return ({message => service}); } }; } my $test = Plack::Test->create( Test::Adapter::fuu::Barr->to_app ); my $res = $test->request( GET '/' ); p( $res); ok( $res->is_success, 'Successful request' ); #like $res->content->{message}, qr/Hello World/i, "Request content correct"; like $res->content, qr/Hello World/i, "Request content correct"; done_testing; =========================================== exception below: ================== $ perl -T -Ilib t/004_plugin_adapter_dir.t 2>&1 [Test::Adapter::fuu::Barr:9518] error @2015-09-18 14:38:41> Route exception: Dancer2::Plugin::Adapter::service() requires a name argument at lib/Dancer2/Plugin/Adapter.pm line 42. in /usr/local/share/perl/5.20.1/Dancer2/Core/App.pm l. 1276 HTTP::Response { Parents HTTP::Message public methods (23) : as_string, base, clone, code, current_age, dump, error_as_HTML, filename, freshness_lifetime, fresh_until, from_psgi, is_error, is_fresh, is_info, is_redirect, is_success, message, new, parse, previous, redirects, request, status_line private methods (0) internals: { _content "{"status":500,"exception":"Dancer2::Plugin::Adapter::service() requires a name argument at lib/Dancer2/Plugin/Adapter.pm line 42.\n","message":"","title":"Error 500 - Internal Server Error"}", _headers HTTP::Headers, _msg "Internal Server Error", _rc 500, _request HTTP::Request } } not ok 1 - Successful request # Failed test 'Successful request' # at t/004_plugin_adapter_dir.t line 45. not ok 2 - Request content correct # Failed test 'Request content correct' # at t/004_plugin_adapter_dir.t line 47. # '{"status":500,"exception":"Dancer2::Plugin::Adapter::service() requires a name argument at lib/Dancer2/Plugin/Adapter.pm line 42.\n","message":"","title":"Error 500 - Internal Server Error"}' # doesn't match '(?^i:Hello World)' 1..2 # Looks like you failed 2 tests of 2. ==================== The exception above is coming from line 47 below ======================== Dancer2/Plugin/Adapter.pm ======================== register service => sub { my ( $dsl, $name ) = plugin_args(@_); unless ($name) { die "Dancer2::Plugin::Adapter::service() requires a name argument"; # line 47 } $conf ||= plugin_setting(); # ensure service is defined my $object_conf = $conf->{$name} or die "No configuration for Adapter '$name'"; ============== Dancer2/Plugin.pm around line 136 =============== sub plugin_setting { my $plugin = caller; my $dsl = _get_dsl() or croak 'No DSL object found'; ( my $plugin_name = $plugin ) =~ s/Dancer2::Plugin:://; return $dsl->app->config->{'plugins'}->{$plugin_name} ||= {}; } ================= (ref https://metacpan.org/pod/Dancer2::Manual::Testing and https://metacpan.org/pod/Plack::Test http://search.cpan.org/~xsawyerx/Dancer2-0.162000/lib/Dancer2/Manual/Testing... ) -- Thanks -- Rick
On 19/09/2015 4:52 am, Rick Leir wrote:
Can you help me with the Plugin Adaptor?
get '/' => sub { if ( -d service("capdir") ) { return {message => 'Hello World'}; } else { return ({message => service}); }
There are two calls to `service` in your route code. The second one (within the else block) has no name argument. Hope that helps, Russell.
participants (2)
-
Rick Leir -
Russell Jenkins