use strict;
use warnings;
use Test::More qw( no_plan );
use URI;
use XML::Simple;
use_ok( 'SRU::Request::SearchRetrieve' );
my $url = 'http://myserver.com/myurl?operation=searchRetrieve&version=1.1&query=dc.identifier+%3d%220-8212-1623-6%22&recordSchema=dc&recordPacking=XML&stylesheet=http://myserver.com/myStyle';
CONSTRUCTOR: {
my $request = SRU::Request::SearchRetrieve->new(
version => '1.1',
query => 'dc.identifier ="0-8212-1623-6"',
recordSchema => 'dc',
recordPacking => 'XML',
stylesheet => 'http://myserver.com/myStyle' );
is( $request->version(), '1.1', 'version()' );
is( $request->query(), 'dc.identifier ="0-8212-1623-6"', 'query()' );
is( $request->recordSchema(), 'dc', 'recordSchema()' );
is( $request->recordPacking(), 'XML', 'recordPacking()' );
is( $request->stylesheet(), 'http://myserver.com/myStyle', 'stylesheet()' );
is( $request->type(), 'searchRetrieve', 'type()' );
}
CQL: {
my $request = SRU::Request::SearchRetrieve->newFromURI( $url );
my $node = $request->cql();
isa_ok( $node, 'CQL::TermNode', 'got CQL node' );
is( $node->toCQL(), 'dc.identifier = 0-8212-1623-6', 'correct CQL' );
}
FROM_URI: {
my $uri = URI->new( $url );
my $request = SRU::Request->newFromURI( $uri );
isa_ok( $request, 'SRU::Request::SearchRetrieve' );
is( $request->version(), '1.1', 'version()' );
is( $request->query(), 'dc.identifier ="0-8212-1623-6"', 'query()' );
is( $request->recordSchema(), 'dc', 'recordSchema()' );
is( $request->recordPacking(), 'XML', 'recordPacking()' );
is( $request->stylesheet(), 'http://myserver.com/myStyle', 'stylesheet()' );
}
FROM_STRING: {
my $request = SRU::Request->newFromURI( $url );
isa_ok( $request, 'SRU::Request::SearchRetrieve' );
is( $request->version(), '1.1', 'version()' );
is( $request->query(), 'dc.identifier ="0-8212-1623-6"', 'query()' );
is( $request->recordSchema(), 'dc', 'recordSchema()' );
is( $request->recordPacking(), 'XML', 'recordPacking()' );
is( $request->stylesheet(), 'http://myserver.com/myStyle', 'stylesheet()' );
}
AS_XML: {
my $request = SRU::Request->newFromURI( $url );
my $xml = XMLin( $request->asXML(), KeepRoot => 1 );
is( $xml->{echoedSearchRetrieveRequest}{version}, '1.1',
'found version in XML' );
is( $xml->{echoedSearchRetrieveRequest}{query},
'dc.identifier ="0-8212-1623-6"', 'found query in XML' );
is( $xml->{echoedSearchRetrieveRequest}{recordPacking}, 'XML',
'found recordPacking in XML' );
is( $xml->{echoedSearchRetrieveRequest}{stylesheet},
'http://myserver.com/myStyle', 'found stylesheet in XML' );
}