skip_unless_mongod
build_client
get_test_db
server_version
clear_testdbs
skip_unless_min_version
/
;
skip_unless_mongod();
my
$conn
= build_client();
my
$server_version
= server_version(
$conn
);
skip_unless_min_version(
$conn
,
'v3.6.0'
);
my
$cb
= MongoDBTest::Callback->new;
$conn
= build_client(
monitoring_callback
=>
$cb
->callback);
my
$testdb
= get_test_db(
$conn
);
my
$coll
=
$testdb
->get_collection(
'test_collection'
);
subtest
'insert single document'
=>
sub
{
$cb
->clear_events;
$ENV
{DO_OP_MSG} = 1;
my
$ret
=
$coll
->insert_one([
_id
=> 1 ]);
$ENV
{DO_OP_MSG} = 0;
is
$cb
->events->[-2]{command}{
'$db'
},
$testdb
->name,
'Sent to correct database'
;
is
$ret
->inserted_id, 1,
'Correct inserted id'
;
my
@collection
=
$coll
->find()->all;
is_deeply \
@collection
, [ {
_id
=> 1 } ],
'Collection info correct'
;
};
subtest
'insert multiple document'
=>
sub
{
$cb
->clear_events;
$ENV
{DO_OP_MSG} = 1;
my
$ret
=
$coll
->insert_many([[
_id
=> 2 ], [
_id
=> 3 ]]);
$ENV
{DO_OP_MSG} = 0;
is
$cb
->events->[-2]{command}{
'$db'
},
$testdb
->name,
'Sent to correct database'
;
is_deeply
$ret
->inserted_ids, {
0
=> 2,
1
=> 3 },
'Correct inserted id'
;
my
@collection
=
$coll
->find()->all;
is_deeply \
@collection
, [ {
_id
=> 1 }, {
_id
=> 2 }, {
_id
=> 3 } ],
'Collection info correct'
;
};
subtest
'update single document'
=>
sub
{
$cb
->clear_events;
$ENV
{DO_OP_MSG} = 1;
my
$ret
=
$coll
->update_one({
_id
=> 1 }, {
'$set'
=> {
eg
=> 2 } });
$ENV
{DO_OP_MSG} = 0;
is
$cb
->events->[-2]{command}{
'$db'
},
$testdb
->name,
'Sent to correct database'
;
is
$ret
->modified_count, 1,
'Correct modified count'
;
my
@collection
=
$coll
->find()->all;
is_deeply \
@collection
, [ {
_id
=> 1,
eg
=> 2 }, {
_id
=> 2 }, {
_id
=> 3 } ],
'Collection info correct'
;
};
subtest
'update multiple document'
=>
sub
{
$cb
->clear_events;
$ENV
{DO_OP_MSG} = 1;
my
$ret
=
$coll
->update_many({
_id
=> {
'$gte'
=> 2 } }, {
'$set'
=> {
eg
=> 3 } });
$ENV
{DO_OP_MSG} = 0;
is
$cb
->events->[-2]{command}{
'$db'
},
$testdb
->name,
'Sent to correct database'
;
is
$ret
->modified_count, 2,
'Correct modified count'
;
my
@collection
=
$coll
->find()->all;
is_deeply \
@collection
, [ {
_id
=> 1,
eg
=> 2 }, {
_id
=> 2,
eg
=> 3 }, {
_id
=> 3,
eg
=> 3 } ],
'Collection info correct'
;
};
subtest
'delete single document'
=>
sub
{
$cb
->clear_events;
$ENV
{DO_OP_MSG} = 1;
my
$ret
=
$coll
->delete_one([
_id
=> 1 ]);
$ENV
{DO_OP_MSG} = 0;
is
$cb
->events->[-2]{command}{
'$db'
},
$testdb
->name,
'Sent to correct database'
;
is
$ret
->deleted_count, 1,
'Correct deleted count'
;
my
@collection
=
$coll
->find()->all;
is_deeply \
@collection
, [ {
_id
=> 2,
eg
=> 3 }, {
_id
=> 3,
eg
=> 3 } ],
'Collection info correct'
;
};
subtest
'delete multiple document'
=>
sub
{
$cb
->clear_events;
$ENV
{DO_OP_MSG} = 1;
my
$ret
=
$coll
->delete_many([
_id
=> {
'$gte'
=> 2 } ]);
$ENV
{DO_OP_MSG} = 0;
is
$cb
->events->[-2]{command}{
'$db'
},
$testdb
->name,
'Sent to correct database'
;
is
$ret
->deleted_count, 2,
'Correct deleted count'
;
my
@collection
=
$coll
->find()->all;
is_deeply \
@collection
, [ ],
'Collection info correct'
;
};
clear_testdbs;
done_testing;