use strict;
use warnings;
use Test::More tests => 36;
use_ok( 'WWW::OpenSearch::Description' );
use_ok( 'WWW::OpenSearch::Url' );
{
my $description = q(
);
my $osd = WWW::OpenSearch::Description->new( $description );
isa_ok( $osd, 'WWW::OpenSearch::Description' );
is( $osd->version, '1.1', 'version' );
is( $osd->ns, 'http://a9.com/-/spec/opensearch/1.1/', 'namespace' );
is( $osd->urls, 1, 'number of urls' );
my ( $url ) = $osd->urls;
isa_ok( $url, 'WWW::OpenSearch::Url' );
is( $url->type, 'application/rss+xml', 'content type' );
is( lc $url->method, 'get', 'method' );
is( $url->template->template,
'http://example.com/?q={searchTerms}&pw={startPage}&format=rss',
'template' );
my $result
= $url->prepare_query( { searchTerms => 'x', startPage => 1 } );
is( $result, 'http://example.com/?q=x&pw=1&format=rss', 'prepare_query' );
}
{
my $description = q(
);
my $osd = WWW::OpenSearch::Description->new( $description );
isa_ok( $osd, 'WWW::OpenSearch::Description' );
is( $osd->urls, 3, 'number of urls' );
is( $osd->get_best_url, $osd->url->[ 1 ], 'get_best_url' );
{
my $url = $osd->url->[ 0 ];
isa_ok( $url, 'WWW::OpenSearch::Url' );
is( $url->type, 'application/rss+xml', 'content type' );
is( lc $url->method, 'get', 'method' );
is( $url->template->template,
'http://example.com/?q={searchTerms}&pw={startPage}&format=rss',
'template' );
}
{
my $url = $osd->url->[ 1 ];
isa_ok( $url, 'WWW::OpenSearch::Url' );
is( $url->type, 'application/atom+xml', 'content type' );
is( lc $url->method, 'get', 'method' );
is( $url->template->template,
'http://example.com/?q={searchTerms}&pw={startPage}&format=atom',
'template'
);
}
{
my $url = $osd->url->[ 2 ];
isa_ok( $url, 'WWW::OpenSearch::Url' );
is( $url->type, 'text/html', 'content type' );
is( lc $url->method, 'post', 'method' );
is( $url->template->template, 'https://intranet/search?format=html',
'template' );
is_deeply(
$url->params,
{ s => '{searchTerms}',
o => '{startIndex}',
c => '{itemsPerPage}',
l => '{language}'
},
'params'
);
my ( $result, $post ) = $url->prepare_query(
{ searchTerms => 'x',
startIndex => '1',
itemsPerPage => 1,
language => 'en'
}
);
is( $result,
'https://intranet/search?format=html',
'prepare_query (uri)'
);
$post = { @$post };
is_deeply(
$post,
{ s => 'x', o => 1, c => 1, l => 'en' },
'prepare_query (params)'
);
}
}
{
my $description = q(
http://www.unto.net/aws?q={searchTerms}&searchindex=Electronics&flavor=osrss&itempage={startPage}
);
my $osd = WWW::OpenSearch::Description->new( $description );
isa_ok( $osd, 'WWW::OpenSearch::Description' );
is( $osd->version, '1.0', 'version' );
is( $osd->ns, 'http://a9.com/-/spec/opensearchrss/1.0/', 'namespace' );
is( $osd->urls, 1, 'number of urls' );
my ( $url ) = $osd->urls;
isa_ok( $url, 'WWW::OpenSearch::Url' );
is( lc $url->method, 'get', 'method' );
is( $url->template->template,
'http://www.unto.net/aws?q={searchTerms}&searchindex=Electronics&flavor=osrss&itempage={startPage}',
'template'
);
}