use strict; use warnings; use File::Spec::Functions; use FindBin; use HTTP::Request; use HTTP::Response; use Moxy::Plugin::DisplayWidth; use Test::Base; use YAML; use HTTP::MobileAttribute plugins => [ qw/IS/, { module => 'Display', config => { DoCoMoMap => YAML::LoadFile( catfile( 'assets', 'common', 'docomo-display-map.yaml' ) ) } } ]; plan tests => 1*blocks; filters { input => [qw/yaml response fetch_content remove_space/], expected => [qw/remove_space/], }; sub response { my $input = shift; my $res = HTTP::Response->new(200); $res->header('Content-Type' => 'text/html'); $res->content($input->{html}); Moxy::Plugin::DisplayWidth->response_filter( {}, { response => $res, mobile_attribute => HTTP::MobileAttribute->new( $input->{ua} ) } ); $res; } sub fetch_content { my $res = shift; $res->content; } sub remove_space { my $x = shift; $x =~ s/^\s+//mg; $x =~ s/\n//g; $x } run_is input => 'expected'; __END__ === regression test. --- input ua: 'Mozilla/4.0 (compatible; MSIE 4.0; MSN 2.5; Windows 95)' html: |+ --- expected === docomo --- input ua: 'DoCoMo/2.0 SH901iC(c100;TB;W24H12)' html: |+ --- expected
=== wx310k(willcom) --- input ua: 'Mozilla/3.0(WILLCOM;KYOCERA/WX310K/2;1.1.5.15.000000/0.1/C100) Opera 7.0' html: |+ --- expected