mongo 2.18.1 → 2.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/mongo/bulk_write.rb +6 -4
- data/lib/mongo/client.rb +1 -1
- data/lib/mongo/collection/view/writable.rb +0 -2
- data/lib/mongo/collection.rb +150 -45
- data/lib/mongo/crypt/kms.rb +0 -1
- data/lib/mongo/error/invalid_read_option.rb +1 -1
- data/lib/mongo/operation/aggregate.rb +1 -2
- data/lib/mongo/operation/collections_info.rb +3 -15
- data/lib/mongo/operation/command.rb +1 -2
- data/lib/mongo/operation/count.rb +1 -2
- data/lib/mongo/operation/create.rb +1 -2
- data/lib/mongo/operation/create_index.rb +1 -2
- data/lib/mongo/operation/create_user.rb +1 -2
- data/lib/mongo/operation/delete.rb +0 -1
- data/lib/mongo/operation/distinct.rb +1 -2
- data/lib/mongo/operation/drop.rb +1 -2
- data/lib/mongo/operation/drop_database.rb +1 -2
- data/lib/mongo/operation/drop_index.rb +1 -2
- data/lib/mongo/operation/explain.rb +1 -3
- data/lib/mongo/operation/find/builder.rb +0 -1
- data/lib/mongo/operation/find.rb +1 -3
- data/lib/mongo/operation/get_more.rb +1 -3
- data/lib/mongo/operation/indexes.rb +1 -17
- data/lib/mongo/operation/insert.rb +0 -1
- data/lib/mongo/operation/kill_cursors.rb +1 -2
- data/lib/mongo/operation/list_collections.rb +1 -2
- data/lib/mongo/operation/map_reduce.rb +1 -2
- data/lib/mongo/operation/parallel_scan.rb +1 -2
- data/lib/mongo/operation/remove_user.rb +1 -2
- data/lib/mongo/operation/shared/{polymorphic_operation.rb → op_msg_executable.rb} +11 -6
- data/lib/mongo/operation/update.rb +0 -1
- data/lib/mongo/operation/update_user.rb +1 -2
- data/lib/mongo/operation/users_info.rb +1 -2
- data/lib/mongo/operation/write_command.rb +1 -2
- data/lib/mongo/operation.rb +1 -3
- data/lib/mongo/protocol.rb +0 -3
- data/lib/mongo/query_cache.rb +20 -20
- data/lib/mongo/session.rb +1 -1
- data/lib/mongo/version.rb +1 -1
- data/spec/integration/command_spec.rb +1 -23
- data/spec/mongo/client_construction_spec.rb +4 -4
- data/spec/mongo/collection_crud_spec.rb +56 -0
- data/spec/mongo/collection_spec.rb +11 -1
- data/spec/mongo/crypt/kms_spec.rb +12 -9
- data.tar.gz.sig +0 -0
- metadata +1133 -1186
- metadata.gz.sig +0 -0
- data/lib/mongo/operation/aggregate/command.rb +0 -55
- data/lib/mongo/operation/collections_info/command.rb +0 -48
- data/lib/mongo/operation/command/command.rb +0 -41
- data/lib/mongo/operation/count/command.rb +0 -47
- data/lib/mongo/operation/create/command.rb +0 -47
- data/lib/mongo/operation/create_index/command.rb +0 -61
- data/lib/mongo/operation/create_user/command.rb +0 -46
- data/lib/mongo/operation/delete/command.rb +0 -52
- data/lib/mongo/operation/distinct/command.rb +0 -47
- data/lib/mongo/operation/drop/command.rb +0 -41
- data/lib/mongo/operation/drop_database/command.rb +0 -41
- data/lib/mongo/operation/drop_index/command.rb +0 -45
- data/lib/mongo/operation/explain/command.rb +0 -58
- data/lib/mongo/operation/explain/legacy.rb +0 -52
- data/lib/mongo/operation/find/builder/legacy.rb +0 -123
- data/lib/mongo/operation/find/command.rb +0 -51
- data/lib/mongo/operation/find/legacy/result.rb +0 -46
- data/lib/mongo/operation/find/legacy.rb +0 -52
- data/lib/mongo/operation/get_more/command.rb +0 -43
- data/lib/mongo/operation/get_more/legacy.rb +0 -39
- data/lib/mongo/operation/indexes/command.rb +0 -42
- data/lib/mongo/operation/indexes/legacy.rb +0 -48
- data/lib/mongo/operation/insert/command.rb +0 -55
- data/lib/mongo/operation/kill_cursors/command.rb +0 -48
- data/lib/mongo/operation/list_collections/command.rb +0 -46
- data/lib/mongo/operation/map_reduce/command.rb +0 -51
- data/lib/mongo/operation/parallel_scan/command.rb +0 -57
- data/lib/mongo/operation/remove_user/command.rb +0 -46
- data/lib/mongo/operation/shared/op_msg_or_command.rb +0 -41
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +0 -44
- data/lib/mongo/operation/update/command.rb +0 -53
- data/lib/mongo/operation/update_user/command.rb +0 -45
- data/lib/mongo/operation/users_info/command.rb +0 -46
- data/lib/mongo/operation/write_command/command.rb +0 -51
- data/lib/mongo/protocol/delete.rb +0 -172
- data/lib/mongo/protocol/insert.rb +0 -181
- data/lib/mongo/protocol/update.rb +0 -214
- data/spec/mongo/operation/delete/command_spec.rb +0 -115
- data/spec/mongo/operation/find/legacy_spec.rb +0 -131
- data/spec/mongo/operation/get_more_spec.rb +0 -63
- data/spec/mongo/operation/insert/command_spec.rb +0 -118
- data/spec/mongo/operation/update/command_spec.rb +0 -122
- data/spec/mongo/protocol/delete_spec.rb +0 -185
- data/spec/mongo/protocol/insert_spec.rb +0 -179
- data/spec/mongo/protocol/update_spec.rb +0 -204
@@ -1,204 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
require 'lite_spec_helper'
|
5
|
-
require 'support/shared/protocol'
|
6
|
-
|
7
|
-
describe Mongo::Protocol::Update do
|
8
|
-
|
9
|
-
let(:opcode) { 2001 }
|
10
|
-
let(:db) { SpecConfig.instance.test_db }
|
11
|
-
let(:collection_name) { 'protocol-test' }
|
12
|
-
let(:ns) { "#{db}.#{collection_name}" }
|
13
|
-
let(:selector) { { :name => 'Tyler' } }
|
14
|
-
let(:update_doc) { { :name => 'Bob' } }
|
15
|
-
let(:options) { Hash.new }
|
16
|
-
|
17
|
-
let(:message) do
|
18
|
-
described_class.new(db, collection_name, selector, update_doc, options)
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#initialize' do
|
22
|
-
|
23
|
-
it 'sets the namespace' do
|
24
|
-
expect(message.namespace).to eq(ns)
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'sets the selector' do
|
28
|
-
expect(message.selector).to eq(selector)
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'sets the update document' do
|
32
|
-
expect(message.update).to eq(update_doc)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#==' do
|
37
|
-
|
38
|
-
context 'when the other is an update' do
|
39
|
-
|
40
|
-
context 'when the fields are equal' do
|
41
|
-
let(:other) do
|
42
|
-
described_class.new(db, collection_name, selector, update_doc, options)
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'returns true' do
|
46
|
-
expect(message).to eq(other)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context 'when the database is not equal' do
|
51
|
-
let(:other) do
|
52
|
-
described_class.new('tyler', collection_name, selector, update_doc, options)
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'returns false' do
|
56
|
-
expect(message).not_to eq(other)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context 'when the collection is not equal' do
|
61
|
-
let(:other) do
|
62
|
-
described_class.new(db, 'tyler', selector, update_doc, options)
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'returns false' do
|
66
|
-
expect(message).not_to eq(other)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context 'when the selector is not equal' do
|
71
|
-
let(:other) do
|
72
|
-
described_class.new(db, collection_name, { :a => 1 }, update_doc, options)
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'returns false' do
|
76
|
-
expect(message).not_to eq(other)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context 'when the update document is not equal' do
|
81
|
-
let(:other) do
|
82
|
-
described_class.new(db, collection_name, selector, { :a => 1 }, options)
|
83
|
-
end
|
84
|
-
|
85
|
-
it 'returns false' do
|
86
|
-
expect(message).not_to eq(other)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
context 'when the options are not equal' do
|
91
|
-
let(:other) do
|
92
|
-
described_class.new(db, collection_name, selector, update_doc,
|
93
|
-
:flags => :upsert)
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'returns false' do
|
97
|
-
expect(message).not_to eq(other)
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
context 'when the other is not a query' do
|
103
|
-
let(:other) do
|
104
|
-
expect(message).not_to eq('test')
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
describe '#hash' do
|
110
|
-
let(:values) do
|
111
|
-
message.send(:fields).map do |field|
|
112
|
-
message.instance_variable_get(field[:name])
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
it 'returns a hash of the field values' do
|
117
|
-
expect(message.hash).to eq(values.hash)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
describe '#replyable?' do
|
122
|
-
|
123
|
-
it 'returns false' do
|
124
|
-
expect(message).to_not be_replyable
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
describe '#serialize' do
|
129
|
-
let(:bytes) { message.serialize }
|
130
|
-
|
131
|
-
include_examples 'message with a header'
|
132
|
-
|
133
|
-
describe 'zero' do
|
134
|
-
let(:field) { bytes.to_s[16..19] }
|
135
|
-
|
136
|
-
it 'serializes a zero' do
|
137
|
-
expect(field).to be_int32(0)
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
describe 'namespace' do
|
142
|
-
let(:field) { bytes.to_s[20..36] }
|
143
|
-
it 'serializes the namespace' do
|
144
|
-
expect(field).to be_cstring(ns)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
describe 'flags' do
|
149
|
-
let(:field) { bytes.to_s[37..40] }
|
150
|
-
|
151
|
-
context 'when no flags are provided' do
|
152
|
-
it 'does not set any bits' do
|
153
|
-
expect(field).to be_int32(0)
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
context 'when flags are provided' do
|
158
|
-
let(:options) { { :flags => flags } }
|
159
|
-
|
160
|
-
context 'upsert flag' do
|
161
|
-
let(:flags) { [:upsert] }
|
162
|
-
it 'sets the first bit' do
|
163
|
-
expect(field).to be_int32(1)
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
context 'multi update' do
|
168
|
-
let(:flags) { [:multi_update] }
|
169
|
-
it 'sets the second bit' do
|
170
|
-
expect(field).to be_int32(2)
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
describe 'selector' do
|
177
|
-
let(:field) { bytes.to_s[41..61] }
|
178
|
-
it 'serializes the selector' do
|
179
|
-
expect(field).to be_bson(selector)
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
describe 'update' do
|
184
|
-
let(:field) { bytes.to_s[62..80] }
|
185
|
-
it 'serializes the update' do
|
186
|
-
expect(field).to be_bson(update_doc)
|
187
|
-
end
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
describe '#registry' do
|
192
|
-
|
193
|
-
context 'when the class is loaded' do
|
194
|
-
|
195
|
-
it 'registers the op code in the Protocol Registry' do
|
196
|
-
expect(Mongo::Protocol::Registry.get(described_class::OP_CODE)).to be(described_class)
|
197
|
-
end
|
198
|
-
|
199
|
-
it 'creates an #op_code instance method' do
|
200
|
-
expect(message.op_code).to eq(described_class::OP_CODE)
|
201
|
-
end
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|