#!perl

use Test::More;
use strict;
use warnings;
our $es;
my $r;

ok $r= $es->mget(
    index => 'es_test_1',
    type  => 'type_1',
    ids   => [ 1, 2, 3, 4, 5 ]
    ),
    'mget';
is scalar @$r, 5, ' - 5 results';
is $r->[0]{_id},    1, ' - first id ok';
is $r->[3]{exists}, 0, "id 3 doesn't exist";

ok $r= $es->mget(
    index          => 'es_test_1',
    type           => 'type_1',
    ids            => [ 1, 2, 3, 4, 5 ],
    filter_missing => 1
    ),
    ' - filter missing';
is scalar @$r, 2, ' - missing filtered';

ok $r= $es->mget(
    docs => [
        { _index => 'es_test_1', _type => 'type_1', _id => 1 },
        { _index => 'es_test_1', _type => 'type_1', _id => 5 }
    ]
    ),
    ' - docs';

ok $r= $es->mget(
    fields => [ 'num', 'date' ],
    docs   => [
        { _index => 'es_test_1', _type => 'type_1', _id => 1 },
        {   _index => 'es_test_1',
            _type  => 'type_1',
            _id    => 5,
            fields => ['text']
        }
    ]
    ),
    ' - fields';

ok keys %{ $r->[0]{fields} } == 2
    && $r->[0]{fields}{num}
    && $r->[0]{fields}{date}, ' - default';

ok keys %{ $r->[1]{fields} } == 1 && $r->[1]{fields}{text}, ' - specific';

is_deeply $r = $es->mget( docs => [] ), [], ' - no docs';
is $r = $es->mget( docs => [], as_json => 1 ), "[]\n", ' - no docs json';

throws_ok { $es->mget( type => 'foo' ) } qr/Cannot specify a type for mget/,
    ' - type without index';
throws_ok { $es->mget( ids => [] ) } qr/Use of the ids param with mget/,
    ' - ids no index';
throws_ok { $es->mget( index => 'es_type_1', ids => [], docs => [] ) }
qr/Cannot specify both ids and docs/, ' - ids and docs';

1
