Catalyst-Model-Search-ElasticSearch
view release on metacpan or search on metacpan
use strict;
use warnings;
use Test::More;
use FindBin qw/$Bin/;
use lib "$Bin/../t/lib";
use Test::Requires { 'Search::Elasticsearch' => 1.10, };
use_ok 'Catalyst::Model::Search::ElasticSearch';
SKIP: {
skip "Environment variable ES_HOME not set", 16
unless defined $ENV{ES_HOME};
use Test::Exception;
use HTTP::Request::Common;
use Test::Requires {
'Search::Elasticsearch::TestServer' => 1.10,
'Search::Elasticsearch::Transport' => 1.10
};
use Catalyst::Test 'Test::App';
BEGIN {
use_ok 'Search::Elasticsearch' || print "Bail out!";
use_ok 'Search::Elasticsearch::TestServer' || print "Bail out!";
use_ok 'Search::Elasticsearch::Transport' || print "Bail out!";
}
my $test_server = Search::Elasticsearch::TestServer->new(
instances => 1,
es_home => $ENV{ES_HOME}
);
my $nodes = $test_server->start();
{
package TestES;
use Moose;
use namespace::autoclean;
extends 'Catalyst::Model::Search::ElasticSearch';
use Search::Elasticsearch::TestServer;
sub _build_es {
return Search::Elasticsearch->new( nodes => $nodes );
}
__PACKAGE__->meta->make_immutable;
}
use Data::Dumper;
use_ok 'Catalyst::Model::Search::ElasticSearch';
my $es_model;
lives_ok { $es_model = TestES->new(
request_timeout => 30,
nodes => 'localhost:9300',
) };
is( $es_model->nodes(), 'localhost:9300' );
is_deeply( $es_model->_additional_opts(), { request_timeout => 30 } );
lives_ok { $es_model = TestES->new() };
lives_ok {
$es_model->index(
index => 'test',
type => 'test',
body => { schpongle => 'bongle' },
refresh => 1,
);
};
my $search = $es_model->search(
index => 'test',
type => 'test',
body => { query => { term => { schpongle => 'bongle' } } }
);
my $expected = { _source => { schpongle => 'bongle', }, };
is_deeply( $search->{hits}{hits}->[0]->{_source}, $expected->{_source} );
( run in 0.591 second using v1.01-cache-2.11-cpan-9581c071862 )