Catalyst-Model-Search-ElasticSearch

 view release on metacpan or  search on metacpan

t/basic.t  view on Meta::CPAN

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 )