Elastic-Model
view release on metacpan or search on metacpan
t/50_scope/03_delete.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use Test::More 0.96;
use Test::Exception;
use Scalar::Util qw(refaddr weaken);
use lib 't/lib';
our $es;
do 'es.pl';
use_ok 'MyApp' || print 'Bail out';
my $model = new_ok( 'MyApp', [ es => $es ], 'Model' );
ok my $ns = $model->namespace('myapp'), 'Got ns';
ok $ns->index('myapp')->create, 'Create index myapp';
isa_ok my $domain = $model->domain('myapp'),
'Elastic::Model::Domain',
'Domain';
# delete ID in current scope
my $scope_1 = create_scope('Scope_1');
#my ($user_1,$scope_2,$user_2);
my $user_1 = create_user('U1');
isa_ok $domain->delete( user => 1 ), 'Elastic::Model::UID', 'Delete ID 1';
isa_ok $user_1, 'Elastic::Model::Deleted', 'U1';
# delete ID in different scope
$user_1 = create_user('U1');
my $scope_2 = create_scope('Scope_2');
my $user_2 = get_user('U2');
isa_ok $domain->delete( user => 1 ), 'Elastic::Model::UID', 'Delete ID 1';
isa_ok $user_2, 'Elastic::Model::Deleted', 'U2';
isa_ok $user_1, 'MyApp::User', 'U1';
throws_ok sub { $domain->get( user => 1 ) },
qr/Missing/,
'Get deleted throws missing';
ok !$domain->try_get( user => 1 ), 'Try get deleted doc';
# get old version with UID
my $uid = $user_1->uid;
isa_ok $model->get_doc( uid => $uid ),
'Elastic::Model::Deleted',
'Model get old version';
# overwrite deleted in higher scope, then get in lower scope
# is this correct? or should we return Deleted
my $scope_3 = create_scope('Scope_3');
$user_1->name('John');
ok $user_1->overwrite, 'Overwrote U1';
undef $scope_3;
isa_ok $model->get_doc( uid => $uid ),
'MyApp::User',
'U1 with higher version from scope with deleted';
# delete object while new scope active
undef $scope_2;
( run in 1.034 second using v1.01-cache-2.11-cpan-39bf76dae61 )