The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 6;
use Test::Mock::LWP;

$Mock_ua->mock(
    post => sub {
        my $mock = shift;
        my $uri  = shift;
        my $params = { @_ };
        _test_req( $uri, $params );
        return HTTP::Response->new;
    }
);
$Mock_response->mock( is_error => sub { return 0 } );

use_ok( 'WebService::Solr' );
my $solr = WebService::Solr->new();
isa_ok( $solr, 'WebService::Solr' );

my ( $expect_path, $expect_params );

{
    $expect_path = '/solr/select';
    $expect_params = { q => 'foo', wt => 'json' };
    is $solr->last_response, undef, "The last_response attribute hasn't been set yet";
    $solr->search( 'foo' );
    isa_ok $solr->last_response, 'WebService::Solr::Response';
}

sub _test_req {
    my( $uri, $params ) = @_;
    is( $uri->path, $expect_path, 'search() path' );
    is_deeply( $params->{ Content }, $expect_params, 'search() params in post content' );
}