The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use lib qw(t/lib);
use MyModel;
use Test::Most;
use DateTime;

my $model   = MyModel->testing;
my $twitter = $model->index('twitter')->type('tweet');
ok( my $tweet = $twitter->put(
        {   user    => 'mo',
            message => 'Elastic baby!',
        },
        { refresh => 1 }
    ),
    'Put ok'
);
is( $tweet->_version, 1, 'version is 1' );

ok( my $version1 = $twitter->get( $tweet->_id ), 'get fresh version 1' );

ok( $tweet->put, 'put again' );

is( $tweet->_version, 2, 'version is 2' );

throws_ok { $version1->update } qr/Conflict/;

ok( $version1->update( { version => undef } ), 'unset version' );

throws_ok { $version1->update( { version => $version1->_version - 1 } ) }
qr/Conflict/;

ok( $version1->update( { version => $version1->_version } ),
    'set correct version' );

throws_ok { $version1->create } qr/Conflict/;

ok( my $bulk = $version1->index->bulk, 'create bulk' );

ok( $bulk->create($version1), 'bulk create already indexed doc' );

my $return = $bulk->commit;

is( @{ $return->{errors} }, 1, 'error' );

done_testing;