/
safe_test.rb
68 lines (56 loc) · 1.68 KB
/
safe_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
require File.expand_path("../test_helper", __FILE__)
include Mongo
class SafeTest < Test::Unit::TestCase
context "Safe mode propogation: " do
setup do
@con = standard_connection(:safe => {:w => 1})
@db = @con[MONGO_TEST_DB]
@col = @db['test-safe']
@col.create_index([[:a, 1]], :unique => true)
@col.remove
end
should "propogate safe option on insert" do
@col.insert({:a => 1})
assert_raise_error(OperationFailure, "duplicate key") do
@col.insert({:a => 1})
end
end
should "allow safe override on insert" do
@col.insert({:a => 1})
@col.insert({:a => 1}, :safe => false)
end
should "propogate safe option on update" do
@col.insert({:a => 1})
@col.insert({:a => 2})
assert_raise_error(OperationFailure, "duplicate key") do
@col.update({:a => 2}, {:a => 1})
end
end
should "allow safe override on update" do
@col.insert({:a => 1})
@col.insert({:a => 2})
@col.update({:a => 2}, {:a => 1}, :safe => false)
end
end
context "Safe error objects" do
setup do
@con = standard_connection
@db = @con[MONGO_TEST_DB]
@col = @db['test']
@col.remove
@col.insert({:a => 1})
@col.insert({:a => 1})
@col.insert({:a => 1})
end
should "return object on update" do
response = @col.update({:a => 1}, {"$set" => {:a => 2}},
:multi => true, :safe => true)
assert response['updatedExisting']
assert_equal 3, response['n']
end
should "return object on remove" do
response = @col.remove({}, :safe => true)
assert_equal 3, response['n']
end
end
end