mongo 2.0.6 → 2.1.0

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.
Files changed (317) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +5 -2
  3. data/lib/mongo/address/ipv4.rb +6 -1
  4. data/lib/mongo/address/unix.rb +2 -2
  5. data/lib/mongo/address.rb +18 -10
  6. data/lib/mongo/auth/cr/conversation.rb +1 -1
  7. data/lib/mongo/auth/ldap/conversation.rb +7 -3
  8. data/lib/mongo/auth/scram/conversation.rb +9 -3
  9. data/lib/mongo/auth/user/view.rb +23 -2
  10. data/lib/mongo/auth/x509/conversation.rb +1 -1
  11. data/lib/mongo/bulk_write/combineable.rb +51 -0
  12. data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
  13. data/lib/mongo/bulk_write/result.rb +191 -0
  14. data/lib/mongo/bulk_write/result_combiner.rb +117 -0
  15. data/lib/mongo/bulk_write/transformable.rb +132 -0
  16. data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
  17. data/lib/mongo/bulk_write/validatable.rb +62 -0
  18. data/lib/mongo/bulk_write.rb +159 -23
  19. data/lib/mongo/client.rb +52 -16
  20. data/lib/mongo/cluster/topology/replica_set.rb +27 -9
  21. data/lib/mongo/cluster/topology/sharded.rb +1 -1
  22. data/lib/mongo/cluster/topology/unknown.rb +5 -2
  23. data/lib/mongo/cluster.rb +42 -7
  24. data/lib/mongo/collection/view/aggregation.rb +48 -9
  25. data/lib/mongo/collection/view/immutable.rb +6 -6
  26. data/lib/mongo/collection/view/iterable.rb +18 -4
  27. data/lib/mongo/collection/view/map_reduce.rb +58 -17
  28. data/lib/mongo/collection/view/readable.rb +173 -42
  29. data/lib/mongo/collection/view/writable.rb +37 -23
  30. data/lib/mongo/collection/view.rb +2 -2
  31. data/lib/mongo/collection.rb +370 -33
  32. data/lib/mongo/cursor.rb +15 -3
  33. data/lib/mongo/database/view.rb +5 -4
  34. data/lib/mongo/database.rb +14 -4
  35. data/lib/mongo/dbref.rb +113 -0
  36. data/lib/mongo/error/closed_stream.rb +34 -0
  37. data/lib/mongo/error/extra_file_chunk.rb +34 -0
  38. data/lib/mongo/error/{invalid_uri_option.rb → file_not_found.rb} +11 -12
  39. data/lib/mongo/error/invalid_file.rb +2 -2
  40. data/lib/mongo/error/invalid_file_revision.rb +37 -0
  41. data/lib/mongo/error/invalid_uri.rb +5 -4
  42. data/lib/mongo/error/missing_file_chunk.rb +38 -0
  43. data/lib/mongo/error/operation_failure.rb +1 -1
  44. data/lib/mongo/error/parser.rb +1 -1
  45. data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
  46. data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
  47. data/lib/mongo/error.rb +13 -2
  48. data/lib/mongo/event/description_changed.rb +1 -1
  49. data/lib/mongo/grid/file/chunk.rb +6 -6
  50. data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
  51. data/lib/mongo/grid/file.rb +13 -10
  52. data/lib/mongo/grid/fs_bucket.rb +448 -0
  53. data/lib/mongo/grid/stream/read.rb +208 -0
  54. data/lib/mongo/grid/stream/write.rb +187 -0
  55. data/lib/mongo/grid/stream.rb +64 -0
  56. data/lib/mongo/grid.rb +2 -1
  57. data/lib/mongo/index/view.rb +3 -3
  58. data/lib/mongo/index.rb +5 -0
  59. data/lib/mongo/loggable.rb +34 -57
  60. data/lib/mongo/logger.rb +16 -78
  61. data/lib/mongo/monitoring/command_log_subscriber.rb +112 -0
  62. data/lib/mongo/monitoring/event/command_failed.rb +96 -0
  63. data/lib/mongo/monitoring/event/command_started.rb +89 -0
  64. data/lib/mongo/monitoring/event/command_succeeded.rb +118 -0
  65. data/lib/mongo/monitoring/event/secure.rb +58 -0
  66. data/lib/mongo/monitoring/event.rb +18 -0
  67. data/lib/mongo/monitoring/publishable.rb +106 -0
  68. data/lib/mongo/monitoring.rb +195 -0
  69. data/lib/mongo/operation/{aggregate.rb → commands/aggregate.rb} +3 -41
  70. data/lib/mongo/operation/commands/collections_info/result.rb +39 -0
  71. data/lib/mongo/operation/commands/collections_info.rb +68 -0
  72. data/lib/mongo/operation/{command.rb → commands/command.rb} +2 -18
  73. data/lib/mongo/operation/commands/indexes.rb +70 -0
  74. data/lib/mongo/operation/commands/list_collections/result.rb +112 -0
  75. data/lib/mongo/operation/commands/list_collections.rb +54 -0
  76. data/lib/mongo/operation/commands/list_indexes/result.rb +116 -0
  77. data/lib/mongo/operation/commands/list_indexes.rb +56 -0
  78. data/lib/mongo/operation/{map_reduce → commands/map_reduce}/result.rb +1 -1
  79. data/lib/mongo/operation/{map_reduce.rb → commands/map_reduce.rb} +3 -41
  80. data/lib/mongo/operation/commands/parallel_scan/result.rb +72 -0
  81. data/lib/mongo/operation/commands/parallel_scan.rb +56 -0
  82. data/lib/mongo/operation/commands/user_query.rb +69 -0
  83. data/lib/mongo/{bulk_write/ordered_bulk_write.rb → operation/commands/users_info/result.rb} +18 -30
  84. data/lib/mongo/operation/commands/users_info.rb +53 -0
  85. data/lib/mongo/operation/commands.rb +24 -0
  86. data/lib/mongo/operation/executable.rb +4 -68
  87. data/lib/mongo/operation/kill_cursors.rb +3 -3
  88. data/lib/mongo/operation/read/get_more.rb +2 -22
  89. data/lib/mongo/{bulk_write/unordered_bulk_write.rb → operation/read/query/result.rb} +20 -26
  90. data/lib/mongo/operation/read/query.rb +4 -21
  91. data/lib/mongo/operation/read.rb +0 -4
  92. data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
  93. data/lib/mongo/operation/result.rb +13 -1
  94. data/lib/mongo/operation/specifiable.rb +42 -0
  95. data/lib/mongo/operation/write/bulk/bulkable.rb +82 -0
  96. data/lib/mongo/operation/write/bulk/delete/result.rb +74 -0
  97. data/lib/mongo/operation/write/bulk/delete.rb +71 -0
  98. data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
  99. data/lib/mongo/operation/write/bulk/insert.rb +96 -0
  100. data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
  101. data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
  102. data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
  103. data/lib/mongo/operation/write/bulk/update.rb +81 -0
  104. data/lib/mongo/operation/write/bulk.rb +6 -3
  105. data/lib/mongo/operation/write/command/create_index.rb +0 -1
  106. data/lib/mongo/operation/write/command/create_user.rb +0 -1
  107. data/lib/mongo/operation/write/command/delete.rb +0 -1
  108. data/lib/mongo/operation/write/command/drop_index.rb +0 -1
  109. data/lib/mongo/operation/write/command/insert.rb +0 -1
  110. data/lib/mongo/operation/write/command/remove_user.rb +0 -1
  111. data/lib/mongo/operation/write/command/update.rb +0 -1
  112. data/lib/mongo/operation/write/command/update_user.rb +0 -1
  113. data/lib/mongo/operation/write/command/writable.rb +13 -18
  114. data/lib/mongo/operation/write/create_index.rb +4 -27
  115. data/lib/mongo/operation/write/create_user.rb +4 -30
  116. data/lib/mongo/operation/write/delete.rb +6 -29
  117. data/lib/mongo/operation/write/drop_index.rb +3 -3
  118. data/lib/mongo/operation/write/gle.rb +48 -0
  119. data/lib/mongo/operation/write/idable.rb +5 -0
  120. data/lib/mongo/operation/write/insert.rb +2 -24
  121. data/lib/mongo/operation/write/remove_user.rb +4 -27
  122. data/lib/mongo/operation/write/update.rb +13 -36
  123. data/lib/mongo/operation/write/update_user.rb +4 -30
  124. data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
  125. data/lib/mongo/operation/write.rb +2 -0
  126. data/lib/mongo/operation.rb +32 -4
  127. data/lib/mongo/options/mapper.rb +4 -2
  128. data/lib/mongo/options/redacted.rb +156 -0
  129. data/lib/mongo/options.rb +1 -0
  130. data/lib/mongo/protocol/delete.rb +75 -15
  131. data/lib/mongo/protocol/get_more.rb +65 -13
  132. data/lib/mongo/protocol/insert.rb +85 -13
  133. data/lib/mongo/protocol/kill_cursors.rb +59 -14
  134. data/lib/mongo/protocol/message.rb +12 -12
  135. data/lib/mongo/protocol/query.rb +163 -37
  136. data/lib/mongo/protocol/reply.rb +103 -0
  137. data/lib/mongo/protocol/serializers.rb +1 -1
  138. data/lib/mongo/protocol/update.rb +82 -14
  139. data/lib/mongo/retryable.rb +83 -0
  140. data/lib/mongo/server/connectable.rb +21 -25
  141. data/lib/mongo/server/connection.rb +75 -4
  142. data/lib/mongo/server/connection_pool/queue.rb +15 -0
  143. data/lib/mongo/server/connection_pool.rb +12 -0
  144. data/lib/mongo/server/description/features.rb +2 -1
  145. data/lib/mongo/server/description.rb +52 -1
  146. data/lib/mongo/server/monitor/connection.rb +26 -2
  147. data/lib/mongo/server/monitor.rb +19 -3
  148. data/lib/mongo/server.rb +39 -5
  149. data/lib/mongo/server_selector/selectable.rb +40 -31
  150. data/lib/mongo/server_selector.rb +19 -10
  151. data/lib/mongo/socket/ssl.rb +28 -16
  152. data/lib/mongo/socket/tcp.rb +3 -3
  153. data/lib/mongo/socket/unix.rb +5 -8
  154. data/lib/mongo/socket.rb +11 -4
  155. data/lib/mongo/uri.rb +248 -137
  156. data/lib/mongo/version.rb +1 -1
  157. data/lib/mongo.rb +5 -3
  158. data/spec/mongo/address/unix_spec.rb +1 -1
  159. data/spec/mongo/address_spec.rb +25 -0
  160. data/spec/mongo/auth/cr_spec.rb +9 -1
  161. data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
  162. data/spec/mongo/auth/ldap_spec.rb +9 -1
  163. data/spec/mongo/auth/scram_spec.rb +9 -1
  164. data/spec/mongo/auth/user/view_spec.rb +26 -1
  165. data/spec/mongo/auth/x509_spec.rb +9 -1
  166. data/spec/mongo/bulk_write/ordered_combiner_spec.rb +271 -0
  167. data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
  168. data/spec/mongo/bulk_write_spec.rb +428 -0
  169. data/spec/mongo/client_spec.rb +167 -17
  170. data/spec/mongo/cluster/topology/replica_set_spec.rb +18 -9
  171. data/spec/mongo/cluster/topology/sharded_spec.rb +11 -3
  172. data/spec/mongo/cluster/topology/single_spec.rb +12 -4
  173. data/spec/mongo/cluster_spec.rb +55 -10
  174. data/spec/mongo/collection/view/aggregation_spec.rb +188 -1
  175. data/spec/mongo/collection/view/explainable_spec.rb +1 -1
  176. data/spec/mongo/collection/view/immutable_spec.rb +103 -0
  177. data/spec/mongo/collection/view/map_reduce_spec.rb +99 -4
  178. data/spec/mongo/collection/view/readable_spec.rb +238 -6
  179. data/spec/mongo/collection/view/writable_spec.rb +4 -4
  180. data/spec/mongo/collection/view_spec.rb +459 -71
  181. data/spec/mongo/collection_spec.rb +1291 -9
  182. data/spec/mongo/command_monitoring_spec.rb +51 -0
  183. data/spec/mongo/connection_string_spec.rb +115 -0
  184. data/spec/mongo/crud_spec.rb +2 -2
  185. data/spec/mongo/cursor_spec.rb +3 -3
  186. data/spec/mongo/database_spec.rb +47 -11
  187. data/spec/mongo/dbref_spec.rb +149 -0
  188. data/spec/mongo/grid/file/chunk_spec.rb +5 -5
  189. data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
  190. data/spec/mongo/grid/file_spec.rb +8 -8
  191. data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
  192. data/spec/mongo/grid/stream/read_spec.rb +275 -0
  193. data/spec/mongo/grid/stream/write_spec.rb +440 -0
  194. data/spec/mongo/grid/stream_spec.rb +48 -0
  195. data/spec/mongo/gridfs_spec.rb +50 -0
  196. data/spec/mongo/logger_spec.rb +0 -40
  197. data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
  198. data/spec/mongo/monitoring/event/command_started_spec.rb +26 -0
  199. data/spec/mongo/monitoring/event/command_succeeded_spec.rb +26 -0
  200. data/spec/mongo/monitoring/event/secure_spec.rb +57 -0
  201. data/spec/mongo/monitoring_spec.rb +168 -0
  202. data/spec/mongo/operation/commands/aggregate_spec.rb +69 -0
  203. data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
  204. data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +0 -18
  205. data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
  206. data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +1 -19
  207. data/spec/mongo/operation/kill_cursors_spec.rb +1 -17
  208. data/spec/mongo/operation/read/get_more_spec.rb +0 -16
  209. data/spec/mongo/operation/read/query_spec.rb +19 -16
  210. data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
  211. data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +18 -29
  212. data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +3 -14
  213. data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +8 -19
  214. data/spec/mongo/operation/write/command/delete_spec.rb +0 -16
  215. data/spec/mongo/operation/write/command/insert_spec.rb +0 -16
  216. data/spec/mongo/operation/write/command/update_spec.rb +0 -16
  217. data/spec/mongo/operation/write/delete_spec.rb +4 -4
  218. data/spec/mongo/operation/write/insert_spec.rb +2 -13
  219. data/spec/mongo/operation/write/update_spec.rb +7 -7
  220. data/spec/mongo/options/redacted_spec.rb +350 -0
  221. data/spec/mongo/protocol/kill_cursors_spec.rb +5 -3
  222. data/spec/mongo/protocol/query_spec.rb +15 -30
  223. data/spec/mongo/retryable_spec.rb +147 -0
  224. data/spec/mongo/server/connection_pool/queue_spec.rb +16 -0
  225. data/spec/mongo/server/connection_pool_spec.rb +50 -6
  226. data/spec/mongo/server/connection_spec.rb +49 -4
  227. data/spec/mongo/server/description_spec.rb +49 -3
  228. data/spec/mongo/server/monitor_spec.rb +51 -0
  229. data/spec/mongo/server_discovery_and_monitoring_spec.rb +32 -59
  230. data/spec/mongo/server_selection_rtt_spec.rb +37 -57
  231. data/spec/mongo/server_selection_spec.rb +19 -9
  232. data/spec/mongo/server_selector/nearest_spec.rb +35 -27
  233. data/spec/mongo/server_selector/primary_preferred_spec.rb +32 -30
  234. data/spec/mongo/server_selector/primary_spec.rb +21 -14
  235. data/spec/mongo/server_selector/secondary_preferred_spec.rb +28 -26
  236. data/spec/mongo/server_selector/secondary_spec.rb +24 -22
  237. data/spec/mongo/server_selector_spec.rb +87 -24
  238. data/spec/mongo/server_spec.rb +94 -8
  239. data/spec/mongo/socket/ssl_spec.rb +123 -13
  240. data/spec/mongo/socket/unix_spec.rb +52 -0
  241. data/spec/mongo/uri_spec.rb +295 -67
  242. data/spec/spec_helper.rb +40 -24
  243. data/spec/support/authorization.rb +23 -9
  244. data/spec/support/certificates/client.pem +4 -4
  245. data/spec/support/command_monitoring/bulkWrite.yml +73 -0
  246. data/spec/support/command_monitoring/command.yml +42 -0
  247. data/spec/support/command_monitoring/deleteMany.yml +55 -0
  248. data/spec/support/command_monitoring/deleteOne.yml +55 -0
  249. data/spec/support/command_monitoring/find.yml +219 -0
  250. data/spec/support/command_monitoring/insertMany.yml +81 -0
  251. data/spec/support/command_monitoring/insertOne.yml +51 -0
  252. data/spec/support/command_monitoring/updateMany.yml +67 -0
  253. data/spec/support/command_monitoring/updateOne.yml +95 -0
  254. data/spec/support/command_monitoring.rb +365 -0
  255. data/spec/support/connection_string.rb +228 -0
  256. data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
  257. data/spec/support/connection_string_tests/valid-auth.yml +256 -0
  258. data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
  259. data/spec/support/connection_string_tests/valid-options.yml +30 -0
  260. data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
  261. data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
  262. data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
  263. data/spec/support/crud/read.rb +22 -19
  264. data/spec/support/crud/write.rb +58 -27
  265. data/spec/support/crud.rb +10 -2
  266. data/spec/support/gridfs.rb +637 -0
  267. data/spec/support/gridfs_tests/delete.yml +157 -0
  268. data/spec/support/gridfs_tests/download.yml +210 -0
  269. data/spec/support/gridfs_tests/download_by_name.yml +113 -0
  270. data/spec/support/gridfs_tests/upload.yml +158 -0
  271. data/spec/support/matchers.rb +1 -1
  272. data/spec/support/sdam/rs/equal_electionids.yml +44 -0
  273. data/spec/support/sdam/rs/new_primary_new_electionid.yml +95 -0
  274. data/spec/support/sdam/rs/null_election_id.yml +144 -0
  275. data/spec/support/sdam/rs/primary_disconnect_electionid.yml +124 -0
  276. data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
  277. data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
  278. data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
  279. data/spec/support/sdam/sharded/mongos_disconnect.yml +104 -0
  280. data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
  281. data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
  282. data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
  283. data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
  284. data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
  285. data/spec/support/sdam/single/not_ok_response.yml +0 -1
  286. data/spec/support/server_discovery_and_monitoring.rb +22 -3
  287. data/spec/support/server_selection.rb +3 -1
  288. data/spec/support/shared/bulk_write.rb +218 -22
  289. data/spec/support/shared/server_selector.rb +80 -14
  290. data.tar.gz.sig +0 -0
  291. metadata +188 -59
  292. metadata.gz.sig +0 -0
  293. data/lib/mongo/bulk_write/bulk_writable.rb +0 -196
  294. data/lib/mongo/bulk_write/deletable.rb +0 -56
  295. data/lib/mongo/bulk_write/insertable.rb +0 -48
  296. data/lib/mongo/bulk_write/replacable.rb +0 -57
  297. data/lib/mongo/bulk_write/updatable.rb +0 -68
  298. data/lib/mongo/grid/fs.rb +0 -149
  299. data/lib/mongo/operation/list_collections/result.rb +0 -114
  300. data/lib/mongo/operation/list_indexes/result.rb +0 -118
  301. data/lib/mongo/operation/read/collections_info.rb +0 -68
  302. data/lib/mongo/operation/read/indexes.rb +0 -69
  303. data/lib/mongo/operation/read/list_collections.rb +0 -76
  304. data/lib/mongo/operation/read/list_indexes.rb +0 -78
  305. data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
  306. data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
  307. data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
  308. data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
  309. data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
  310. data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -162
  311. data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
  312. data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
  313. data/spec/mongo/bulk/bulk_write_spec.rb +0 -262
  314. data/spec/mongo/grid/fs_spec.rb +0 -160
  315. data/spec/mongo/loggable_spec.rb +0 -63
  316. data/spec/mongo/operation/aggregate_spec.rb +0 -127
  317. /data/lib/mongo/operation/{aggregate → commands/aggregate}/result.rb +0 -0
@@ -42,22 +42,6 @@ describe Mongo::Operation::Read::Query do
42
42
  end
43
43
  end
44
44
 
45
- context '#merge' do
46
- let(:other_op) { described_class.new(spec) }
47
-
48
- it 'is not allowed' do
49
- expect{ op.merge(other_op) }.to raise_exception
50
- end
51
- end
52
-
53
- context '#merge!' do
54
- let(:other_op) { described_class.new(spec) }
55
-
56
- it 'is not allowed' do
57
- expect{ op.merge!(other_op) }.to raise_exception
58
- end
59
- end
60
-
61
45
  describe '#message' do
62
46
 
63
47
  let(:query_options) do
@@ -98,6 +82,25 @@ describe Mongo::Operation::Read::Query do
98
82
  op.execute(primary_context)
99
83
  end
100
84
  end
85
+
86
+ context "when the document contains an 'ok' field" do
87
+
88
+ before do
89
+ authorized_collection.insert_one(ok: false)
90
+ end
91
+
92
+ after do
93
+ authorized_collection.delete_many
94
+ end
95
+
96
+ let(:context) do
97
+ authorized_client.cluster.next_primary.context
98
+ end
99
+
100
+ it 'does not raise an exception' do
101
+ expect(op.execute(context)).to be_a(Mongo::Operation::Read::Query::Result)
102
+ end
103
+ end
101
104
  end
102
105
  end
103
106
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongo::Operation::ReadPreferrable do
3
+ describe Mongo::Operation::ReadPreference do
4
4
 
5
5
  let(:selector) do
6
6
  { name: 'test' }
@@ -26,9 +26,9 @@ describe Mongo::Operation::ReadPreferrable do
26
26
  Mongo::ServerSelector.get
27
27
  end
28
28
 
29
- let(:read_preferrable) do
29
+ let(:read_preference) do
30
30
  Class.new do
31
- include Mongo::Operation::ReadPreferrable
31
+ include Mongo::Operation::ReadPreference
32
32
  end.new.tap do |rp|
33
33
  allow(rp).to receive(:read).and_return(read_pref)
34
34
  allow(rp).to receive(:selector).and_return(selector)
@@ -55,7 +55,7 @@ describe Mongo::Operation::ReadPreferrable do
55
55
  end
56
56
 
57
57
  it 'returns a special selector' do
58
- expect(read_preferrable.send(:update_selector, context)).to eq(expected)
58
+ expect(read_preference.send(:update_selector, context)).to eq(expected)
59
59
  end
60
60
 
61
61
  context 'when the selector already has $query in it' do
@@ -70,7 +70,7 @@ describe Mongo::Operation::ReadPreferrable do
70
70
  end
71
71
 
72
72
  it 'returns an unaltered special selector' do
73
- expect(read_preferrable.send(:update_selector, context)).to eq(expected)
73
+ expect(read_preference.send(:update_selector, context)).to eq(expected)
74
74
  end
75
75
  end
76
76
  end
@@ -82,7 +82,7 @@ describe Mongo::Operation::ReadPreferrable do
82
82
  end
83
83
 
84
84
  it 'returns a selector' do
85
- expect(read_preferrable.send(:update_selector, context)).to eq(selector)
85
+ expect(read_preference.send(:update_selector, context)).to eq(selector)
86
86
  end
87
87
  end
88
88
 
@@ -168,7 +168,7 @@ describe Mongo::Operation::ReadPreferrable do
168
168
  end
169
169
 
170
170
  it 'does not set the slave_ok flag' do
171
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
171
+ expect(read_preference.send(:update_options, context)).to eq(expected)
172
172
  end
173
173
  end
174
174
 
@@ -183,7 +183,7 @@ describe Mongo::Operation::ReadPreferrable do
183
183
  end
184
184
 
185
185
  it 'sets the slave_ok flag' do
186
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
186
+ expect(read_preference.send(:update_options, context)).to eq(expected)
187
187
  end
188
188
  end
189
189
  end
@@ -205,7 +205,7 @@ describe Mongo::Operation::ReadPreferrable do
205
205
  end
206
206
 
207
207
  it 'does not set the slave_ok flag' do
208
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
208
+ expect(read_preference.send(:update_options, context)).to eq(expected)
209
209
  end
210
210
  end
211
211
 
@@ -222,7 +222,7 @@ describe Mongo::Operation::ReadPreferrable do
222
222
  end
223
223
 
224
224
  it 'sets the slave_ok flag' do
225
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
225
+ expect(read_preference.send(:update_options, context)).to eq(expected)
226
226
  end
227
227
  end
228
228
 
@@ -237,7 +237,7 @@ describe Mongo::Operation::ReadPreferrable do
237
237
  end
238
238
 
239
239
  it 'does not set the slave_ok flag' do
240
- expect(read_preferrable.send(:update_options, context)).to eq(expected)
240
+ expect(read_preference.send(:update_options, context)).to eq(expected)
241
241
  end
242
242
  end
243
243
  end
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongo::Operation::Write::BulkDelete do
3
+ describe Mongo::Operation::Write::Bulk::Delete do
4
4
  include_context 'operation'
5
5
 
6
6
  let(:documents) do
7
- [ { q: { foo: 1 }, limit: 1 } ]
7
+ [ { 'q' => { foo: 1 }, 'limit' => 1 } ]
8
8
  end
9
9
 
10
10
  let(:spec) do
@@ -42,7 +42,7 @@ describe Mongo::Operation::Write::BulkDelete do
42
42
 
43
43
  context 'when two ops have different specs' do
44
44
  let(:other_docs) do
45
- [ { q: { bar: 1 }, limit: 1 } ]
45
+ [ { 'q' => { bar: 1 }, 'limit' => 1 } ]
46
46
  end
47
47
 
48
48
  let(:other_spec) do
@@ -62,17 +62,6 @@ describe Mongo::Operation::Write::BulkDelete do
62
62
  end
63
63
  end
64
64
 
65
- describe '#dup' do
66
-
67
- context 'deep copy' do
68
-
69
- it 'copies the list of deletes' do
70
- copy = op.dup
71
- expect(copy.spec[:deletes]).not_to be(op.spec[:deletes])
72
- end
73
- end
74
- end
75
-
76
65
  describe '#execute' do
77
66
 
78
67
  before do
@@ -83,7 +72,7 @@ describe Mongo::Operation::Write::BulkDelete do
83
72
  end
84
73
 
85
74
  after do
86
- authorized_collection.find.delete_many
75
+ authorized_collection.delete_many
87
76
  end
88
77
 
89
78
  context 'when deleting a single document' do
@@ -100,7 +89,7 @@ describe Mongo::Operation::Write::BulkDelete do
100
89
  context 'when the delete succeeds' do
101
90
 
102
91
  let(:documents) do
103
- [{ q: { field: 'test' }, limit: 1 }]
92
+ [{ 'q' => { field: 'test' }, 'limit' => 1 }]
104
93
  end
105
94
 
106
95
  it 'deletes the document from the database' do
@@ -124,7 +113,7 @@ describe Mongo::Operation::Write::BulkDelete do
124
113
  context 'when the deletes succeed' do
125
114
 
126
115
  let(:documents) do
127
- [{ q: { field: 'test' }, limit: 0 }]
116
+ [{ 'q' => { field: 'test' }, 'limit' => 0 }]
128
117
  end
129
118
 
130
119
  it 'deletes the documents from the database' do
@@ -138,10 +127,10 @@ describe Mongo::Operation::Write::BulkDelete do
138
127
 
139
128
  let(:documents) do
140
129
  [ failing_delete_doc,
141
- { q: { field: 'test' }, limit: 1 }
130
+ { 'q' => { field: 'test' }, 'limit' => 1 }
142
131
  ]
143
132
  end
144
-
133
+
145
134
  let(:spec) do
146
135
  { :deletes => documents,
147
136
  :db_name => TEST_DB,
@@ -150,7 +139,7 @@ describe Mongo::Operation::Write::BulkDelete do
150
139
  :ordered => true
151
140
  }
152
141
  end
153
-
142
+
154
143
  let(:failing_delete) do
155
144
  described_class.new(spec)
156
145
  end
@@ -162,7 +151,7 @@ describe Mongo::Operation::Write::BulkDelete do
162
151
  let(:write_concern) do
163
152
  Mongo::WriteConcern.get(w: 1)
164
153
  end
165
-
154
+
166
155
  it 'aborts after first error' do
167
156
  failing_delete.execute(authorized_primary.context)
168
157
  expect(authorized_collection.find.count).to eq(2)
@@ -170,11 +159,11 @@ describe Mongo::Operation::Write::BulkDelete do
170
159
  end
171
160
 
172
161
  context 'when write concern is unacknowledged' do
173
-
162
+
174
163
  let(:write_concern) do
175
164
  Mongo::WriteConcern.get(w: 0)
176
165
  end
177
-
166
+
178
167
  it 'aborts after first error' do
179
168
  failing_delete.execute(authorized_primary.context)
180
169
  expect(authorized_collection.find.count).to eq(2)
@@ -187,10 +176,10 @@ describe Mongo::Operation::Write::BulkDelete do
187
176
 
188
177
  let(:documents) do
189
178
  [ failing_delete_doc,
190
- { q: { field: 'test' }, limit: 1 }
179
+ { 'q' => { field: 'test' }, 'limit' => 1 }
191
180
  ]
192
181
  end
193
-
182
+
194
183
  let(:spec) do
195
184
  { :deletes => documents,
196
185
  :db_name => TEST_DB,
@@ -199,7 +188,7 @@ describe Mongo::Operation::Write::BulkDelete do
199
188
  :ordered => false
200
189
  }
201
190
  end
202
-
191
+
203
192
  let(:failing_delete) do
204
193
  described_class.new(spec)
205
194
  end
@@ -211,7 +200,7 @@ describe Mongo::Operation::Write::BulkDelete do
211
200
  let(:write_concern) do
212
201
  Mongo::WriteConcern.get(w: 1)
213
202
  end
214
-
203
+
215
204
  it 'does not abort after first error' do
216
205
  failing_delete.execute(authorized_primary.context)
217
206
  expect(authorized_collection.find.count).to eq(1)
@@ -219,11 +208,11 @@ describe Mongo::Operation::Write::BulkDelete do
219
208
  end
220
209
 
221
210
  context 'when write concern is unacknowledged' do
222
-
211
+
223
212
  let(:write_concern) do
224
213
  Mongo::WriteConcern.get(w: 0)
225
214
  end
226
-
215
+
227
216
  it 'does not abort after first error' do
228
217
  failing_delete.execute(authorized_primary.context)
229
218
  sleep(1)
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongo::Operation::Write::BulkInsert do
3
+ describe Mongo::Operation::Write::Bulk::Insert do
4
4
  include_context 'operation'
5
5
 
6
6
  let(:documents) do
@@ -20,7 +20,7 @@ describe Mongo::Operation::Write::BulkInsert do
20
20
  end
21
21
 
22
22
  after do
23
- authorized_collection.find.delete_many
23
+ authorized_collection.delete_many
24
24
  end
25
25
 
26
26
  describe '#initialize' do
@@ -74,17 +74,6 @@ describe Mongo::Operation::Write::BulkInsert do
74
74
  end
75
75
  end
76
76
 
77
- describe '#dup' do
78
-
79
- context 'deep copy' do
80
-
81
- it 'copies the list of documents' do
82
- copy = op.dup
83
- expect(copy.spec[:documents]).to_not be(op.spec[:documents])
84
- end
85
- end
86
- end
87
-
88
77
  describe 'document ids' do
89
78
 
90
79
  context 'when documents do not contain an id' do
@@ -115,7 +104,7 @@ describe Mongo::Operation::Write::BulkInsert do
115
104
  end
116
105
 
117
106
  after do
118
- authorized_collection.find.delete_many
107
+ authorized_collection.delete_many
119
108
  authorized_collection.indexes.drop_one('name_1')
120
109
  end
121
110
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongo::Operation::Write::BulkUpdate do
3
+ describe Mongo::Operation::Write::Bulk::Update do
4
4
  include_context 'operation'
5
5
 
6
6
  let(:documents) do
@@ -72,17 +72,6 @@ describe Mongo::Operation::Write::BulkUpdate do
72
72
  end
73
73
  end
74
74
 
75
- describe '#dup' do
76
-
77
- context 'deep copy' do
78
-
79
- it 'copies the list of updates' do
80
- copy = op.dup
81
- expect(copy.spec[:updates]).not_to be(op.spec[:updates])
82
- end
83
- end
84
- end
85
-
86
75
  describe '#execute' do
87
76
 
88
77
  before do
@@ -93,7 +82,7 @@ describe Mongo::Operation::Write::BulkUpdate do
93
82
  end
94
83
 
95
84
  after do
96
- authorized_collection.find.delete_many
85
+ authorized_collection.delete_many
97
86
  end
98
87
 
99
88
  context 'when updating a single document' do
@@ -101,7 +90,7 @@ describe Mongo::Operation::Write::BulkUpdate do
101
90
  context 'when the update passes' do
102
91
 
103
92
  let(:documents) do
104
- [{ q: { other: 'test' }, u: { '$set' => { field: 'blah' }}, multi: false }]
93
+ [{ 'q' => { other: 'test' }, 'u' => { '$set' => { field: 'blah' }}, 'multi' => false }]
105
94
  end
106
95
 
107
96
  it 'updates the document' do
@@ -125,7 +114,7 @@ describe Mongo::Operation::Write::BulkUpdate do
125
114
  context 'when the updates succeed' do
126
115
 
127
116
  let(:documents) do
128
- [{ q: { other: 'test' }, u: { '$set' => { field: 'blah' }}, multi: true }]
117
+ [{ 'q' => { other: 'test' }, 'u' => { '$set' => { field: 'blah' }}, 'multi' => true }]
129
118
  end
130
119
 
131
120
  it 'updates the documents' do
@@ -138,8 +127,8 @@ describe Mongo::Operation::Write::BulkUpdate do
138
127
  context 'when the updates are ordered' do
139
128
 
140
129
  let(:documents) do
141
- [ { q: { name: 'test' }, u: { '$st' => { field: 'blah' }}, multi: true},
142
- { q: { field: 'test' }, u: { '$set' => { other: 'blah' }}, multi: true }
130
+ [ { 'q' => { name: 'test' }, 'u' => { '$st' => { field: 'blah' }}, 'multi' => true},
131
+ { 'q' => { field: 'test' }, 'u' => { '$set' => { other: 'blah' }}, 'multi' => true }
143
132
  ]
144
133
  end
145
134
 
@@ -187,8 +176,8 @@ describe Mongo::Operation::Write::BulkUpdate do
187
176
  context 'when the updates are unordered' do
188
177
 
189
178
  let(:documents) do
190
- [ { q: { name: 'test' }, u: { '$st' => { field: 'blah' }}, multi: true},
191
- { q: { field: 'test' }, u: { '$set' => { other: 'blah' }}, multi: false }
179
+ [ { 'q' => { name: 'test' }, 'u' => { '$st' => { field: 'blah' }}, 'multi' => true},
180
+ { 'q' => { field: 'test' }, 'u' => { '$set' => { other: 'blah' }}, 'multi' => false }
192
181
  ]
193
182
  end
194
183
 
@@ -56,22 +56,6 @@ describe Mongo::Operation::Write::Command::Delete do
56
56
  end
57
57
  end
58
58
 
59
- context '#merge' do
60
- let(:other_op) { described_class.new(spec) }
61
-
62
- it 'is not allowed' do
63
- expect{ op.merge(other_op) }.to raise_exception
64
- end
65
- end
66
-
67
- context '#merge!' do
68
- let(:other_op) { described_class.new(spec) }
69
-
70
- it 'is not allowed' do
71
- expect{ op.merge!(other_op) }.to raise_exception
72
- end
73
- end
74
-
75
59
  describe '#execute' do
76
60
 
77
61
  context 'server' do
@@ -56,22 +56,6 @@ describe Mongo::Operation::Write::Command::Insert do
56
56
  end
57
57
  end
58
58
 
59
- context '#merge' do
60
- let(:other_op) { described_class.new(spec) }
61
-
62
- it 'is not allowed' do
63
- expect{ op.merge(other_op) }.to raise_exception
64
- end
65
- end
66
-
67
- context '#merge!' do
68
- let(:other_op) { described_class.new(spec) }
69
-
70
- it 'is not allowed' do
71
- expect{ op.merge!(other_op) }.to raise_exception
72
- end
73
- end
74
-
75
59
  describe '#execute' do
76
60
 
77
61
  context 'server' do
@@ -62,22 +62,6 @@ describe Mongo::Operation::Write::Command::Update do
62
62
  end
63
63
  end
64
64
 
65
- context '#merge' do
66
- let(:other_op) { described_class.new(spec) }
67
-
68
- it 'is not allowed' do
69
- expect{ op.merge(other_op) }.to raise_exception
70
- end
71
- end
72
-
73
- context '#merge!' do
74
- let(:other_op) { described_class.new(spec) }
75
-
76
- it 'is not allowed' do
77
- expect{ op.merge!(other_op) }.to raise_exception
78
- end
79
- end
80
-
81
65
  describe '#execute' do
82
66
 
83
67
  context 'server' do
@@ -72,7 +72,7 @@ describe Mongo::Operation::Write::Delete do
72
72
  end
73
73
 
74
74
  after do
75
- authorized_collection.find.delete_many
75
+ authorized_collection.delete_many
76
76
  end
77
77
 
78
78
  context 'when deleting a single document' do
@@ -89,7 +89,7 @@ describe Mongo::Operation::Write::Delete do
89
89
  context 'when the delete succeeds' do
90
90
 
91
91
  let(:document) do
92
- { q: { field: 'test' }, limit: 1 }
92
+ { 'q' => { field: 'test' }, 'limit' => 1 }
93
93
  end
94
94
 
95
95
  let(:result) do
@@ -133,7 +133,7 @@ describe Mongo::Operation::Write::Delete do
133
133
  context 'when the deletes succeed' do
134
134
 
135
135
  let(:document) do
136
- { q: { field: 'test' }, limit: 0 }
136
+ { 'q' => { field: 'test' }, 'limit' => 0 }
137
137
  end
138
138
 
139
139
  let(:result) do
@@ -172,7 +172,7 @@ describe Mongo::Operation::Write::Delete do
172
172
  context 'when a document exceeds max bson size' do
173
173
 
174
174
  let(:document) do
175
- { q: { field: 't'*17000000 }, limit: 0 }
175
+ { 'q' => { field: 't'*17000000 }, 'limit' => 0 }
176
176
  end
177
177
 
178
178
  it 'raises an error' do
@@ -16,7 +16,7 @@ describe Mongo::Operation::Write::Insert do
16
16
  end
17
17
 
18
18
  after do
19
- authorized_collection.find.delete_many
19
+ authorized_collection.delete_many
20
20
  end
21
21
 
22
22
  let(:insert) do
@@ -73,17 +73,6 @@ describe Mongo::Operation::Write::Insert do
73
73
  end
74
74
  end
75
75
 
76
- describe '#dup' do
77
-
78
- context 'deep copy' do
79
-
80
- it 'copies the list of documents' do
81
- copy = insert.dup
82
- expect(copy.spec[:documents]).to_not be(insert.spec[:documents])
83
- end
84
- end
85
- end
86
-
87
76
  describe 'document ids' do
88
77
 
89
78
  context 'when documents do not contain an id' do
@@ -114,7 +103,7 @@ describe Mongo::Operation::Write::Insert do
114
103
  end
115
104
 
116
105
  after do
117
- authorized_collection.find.delete_many
106
+ authorized_collection.delete_many
118
107
  authorized_collection.indexes.drop_one('name_1')
119
108
  end
120
109
 
@@ -78,7 +78,7 @@ describe Mongo::Operation::Write::Update do
78
78
  end
79
79
 
80
80
  after do
81
- authorized_collection.find.delete_many
81
+ authorized_collection.delete_many
82
82
  end
83
83
 
84
84
  context 'when updating a single document' do
@@ -95,7 +95,7 @@ describe Mongo::Operation::Write::Update do
95
95
  context 'when the update succeeds' do
96
96
 
97
97
  let(:document) do
98
- { q: { name: 'test' }, u: { '$set' => { field: 'blah' }}, limit: 1 }
98
+ { 'q' => { name: 'test' }, 'u' => { '$set' => { field: 'blah' }}, limit: 1 }
99
99
  end
100
100
 
101
101
  let(:result) do
@@ -122,7 +122,7 @@ describe Mongo::Operation::Write::Update do
122
122
  context 'when the update fails' do
123
123
 
124
124
  let(:document) do
125
- { q: { name: 'test' }, u: { '$st' => { field: 'blah' } } }
125
+ { 'q' => { name: 'test' }, 'u' => { '$st' => { field: 'blah' } } }
126
126
  end
127
127
 
128
128
  it 'raises an exception' do
@@ -147,7 +147,7 @@ describe Mongo::Operation::Write::Update do
147
147
  context 'when the updates succeed' do
148
148
 
149
149
  let(:document) do
150
- { q: { field: 'test' }, u: { '$set' => { other: 'blah' }}, multi: true }
150
+ { 'q' => { field: 'test' }, 'u' => { '$set' => { other: 'blah' }}, 'multi' => true }
151
151
  end
152
152
 
153
153
  let(:result) do
@@ -174,7 +174,7 @@ describe Mongo::Operation::Write::Update do
174
174
  context 'when an update fails' do
175
175
 
176
176
  let(:document) do
177
- { q: { name: 'test' }, u: { '$st' => { field: 'blah' } }, multi: true }
177
+ { 'q' => { name: 'test' }, 'u' => { '$st' => { field: 'blah' } }, 'multi' => true }
178
178
  end
179
179
 
180
180
  it 'raises an exception' do
@@ -187,7 +187,7 @@ describe Mongo::Operation::Write::Update do
187
187
  context 'when a document exceeds max bson size' do
188
188
 
189
189
  let(:document) do
190
- { q: { name: 't'*17000000}, u: { '$set' => { field: 'blah' } } }
190
+ { 'q' => { name: 't'*17000000}, 'u' => { '$set' => { field: 'blah' } } }
191
191
  end
192
192
 
193
193
  it 'raises an error' do
@@ -200,7 +200,7 @@ describe Mongo::Operation::Write::Update do
200
200
  context 'when upsert is true' do
201
201
 
202
202
  let(:document) do
203
- { q: { field: 'non-existent' }, u: { '$set' => { other: 'blah' }}, upsert: true }
203
+ { 'q' => { field: 'non-existent' }, 'u' => { '$set' => { other: 'blah' }}, 'upsert' => true }
204
204
  end
205
205
 
206
206
  let(:result) do