mongo 2.1.0.beta → 2.2.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +10 -3
- data/Rakefile +1 -7
- data/lib/mongo/address/ipv4.rb +6 -1
- data/lib/mongo/address/unix.rb +2 -2
- data/lib/mongo/address.rb +32 -10
- data/lib/mongo/auth/cr/conversation.rb +1 -1
- data/lib/mongo/auth/ldap/conversation.rb +7 -3
- data/lib/mongo/auth/scram/conversation.rb +9 -3
- data/lib/mongo/auth/user/view.rb +23 -2
- data/lib/mongo/auth/x509/conversation.rb +1 -1
- data/lib/mongo/bulk_write/combineable.rb +51 -0
- data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
- data/lib/mongo/bulk_write/result.rb +61 -8
- data/lib/mongo/bulk_write/result_combiner.rb +117 -0
- data/lib/mongo/bulk_write/transformable.rb +132 -0
- data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
- data/lib/mongo/bulk_write/validatable.rb +62 -0
- data/lib/mongo/bulk_write.rb +164 -23
- data/lib/mongo/client.rb +75 -18
- data/lib/mongo/cluster/topology/replica_set.rb +8 -6
- data/lib/mongo/cluster/topology/unknown.rb +5 -2
- data/lib/mongo/cluster.rb +85 -5
- data/lib/mongo/collection/view/aggregation.rb +19 -45
- data/lib/mongo/collection/view/builder/aggregation.rb +98 -0
- data/lib/mongo/collection/view/builder/find_command.rb +111 -0
- data/lib/mongo/collection/view/builder/flags.rb +62 -0
- data/lib/mongo/collection/view/builder/map_reduce.rb +134 -0
- data/lib/mongo/collection/view/builder/modifiers.rb +80 -0
- data/lib/mongo/collection/view/builder/op_query.rb +83 -0
- data/lib/mongo/collection/view/builder.rb +20 -0
- data/lib/mongo/collection/view/explainable.rb +15 -0
- data/lib/mongo/collection/view/immutable.rb +4 -11
- data/lib/mongo/collection/view/iterable.rb +40 -5
- data/lib/mongo/collection/view/map_reduce.rb +67 -37
- data/lib/mongo/collection/view/readable.rb +114 -100
- data/lib/mongo/collection/view/writable.rb +46 -22
- data/lib/mongo/collection/view.rb +25 -22
- data/lib/mongo/collection.rb +130 -12
- data/lib/mongo/cursor/builder/get_more_command.rb +71 -0
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +62 -0
- data/lib/mongo/cursor/builder/op_get_more.rb +61 -0
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +56 -0
- data/lib/mongo/cursor/builder.rb +18 -0
- data/lib/mongo/cursor.rb +76 -21
- data/lib/mongo/database/view.rb +11 -6
- data/lib/mongo/database.rb +16 -6
- data/lib/mongo/dbref.rb +9 -9
- data/lib/mongo/{bulk_write/unordered_bulk_write.rb → error/closed_stream.rb} +12 -21
- data/lib/mongo/{bulk_write/ordered_bulk_write.rb → error/extra_file_chunk.rb} +13 -27
- data/lib/mongo/error/file_not_found.rb +37 -0
- data/lib/mongo/error/invalid_file.rb +2 -2
- data/lib/mongo/error/invalid_file_revision.rb +37 -0
- data/lib/mongo/error/invalid_uri.rb +5 -4
- data/lib/mongo/error/invalid_write_concern.rb +35 -0
- data/lib/mongo/error/missing_file_chunk.rb +38 -0
- data/lib/mongo/error/operation_failure.rb +33 -2
- data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
- data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
- data/lib/mongo/error.rb +8 -0
- data/lib/mongo/grid/file/chunk.rb +9 -9
- data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
- data/lib/mongo/grid/file.rb +12 -9
- data/lib/mongo/grid/fs_bucket.rb +448 -0
- data/lib/mongo/grid/stream/read.rb +208 -0
- data/lib/mongo/grid/stream/write.rb +187 -0
- data/lib/mongo/grid/stream.rb +64 -0
- data/lib/mongo/grid.rb +2 -1
- data/lib/mongo/index/view.rb +7 -4
- data/lib/mongo/index.rb +5 -0
- data/lib/mongo/loggable.rb +34 -57
- data/lib/mongo/logger.rb +16 -78
- data/lib/mongo/monitoring/command_log_subscriber.rb +38 -14
- data/lib/mongo/monitoring/event/command_started.rb +2 -1
- data/lib/mongo/monitoring/event/command_succeeded.rb +24 -2
- data/lib/mongo/monitoring/event/secure.rb +58 -0
- data/lib/mongo/monitoring/event.rb +1 -0
- data/lib/mongo/monitoring/publishable.rb +22 -12
- data/lib/mongo/monitoring.rb +1 -5
- data/lib/mongo/operation/commands/aggregate/result.rb +89 -0
- data/lib/mongo/operation/commands/aggregate.rb +64 -0
- data/lib/mongo/operation/commands/collections_info/result.rb +41 -0
- data/lib/mongo/operation/{read → commands}/collections_info.rb +5 -3
- data/lib/mongo/operation/commands/command.rb +47 -0
- data/lib/mongo/operation/commands/find/result.rb +62 -0
- data/lib/mongo/operation/commands/find.rb +27 -0
- data/lib/mongo/operation/commands/get_more/result.rb +62 -0
- data/lib/mongo/operation/commands/get_more.rb +27 -0
- data/lib/mongo/operation/{read → commands}/indexes.rb +9 -6
- data/lib/mongo/operation/{list_collections → commands/list_collections}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_collections.rb +4 -32
- data/lib/mongo/operation/{list_indexes → commands/list_indexes}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_indexes.rb +3 -33
- data/lib/mongo/operation/commands/map_reduce/result.rb +119 -0
- data/lib/mongo/operation/commands/map_reduce.rb +49 -0
- data/lib/mongo/operation/commands/parallel_scan/result.rb +64 -0
- data/lib/mongo/operation/commands/parallel_scan.rb +52 -0
- data/lib/mongo/operation/commands/user_query.rb +71 -0
- data/lib/mongo/operation/commands/users_info/result.rb +38 -0
- data/lib/mongo/operation/commands/users_info.rb +48 -0
- data/lib/mongo/operation/commands.rb +26 -0
- data/lib/mongo/operation/executable.rb +4 -68
- data/lib/mongo/operation/kill_cursors.rb +3 -3
- data/lib/mongo/operation/object_id_generator.rb +36 -0
- data/lib/mongo/operation/read/get_more.rb +2 -22
- data/lib/mongo/operation/read/query/result.rb +40 -0
- data/lib/mongo/operation/read/query.rb +4 -21
- data/lib/mongo/operation/read.rb +0 -4
- data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
- data/lib/mongo/operation/result.rb +43 -1
- data/lib/mongo/operation/specifiable.rb +59 -1
- data/lib/mongo/operation/write/bulk/bulkable.rb +83 -0
- data/lib/mongo/operation/write/bulk/delete/result.rb +67 -0
- data/lib/mongo/operation/write/bulk/delete.rb +71 -0
- data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
- data/lib/mongo/operation/write/bulk/insert.rb +96 -0
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
- data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
- data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
- data/lib/mongo/operation/write/bulk/update.rb +81 -0
- data/lib/mongo/operation/write/bulk.rb +6 -3
- data/lib/mongo/operation/write/command/create_index.rb +0 -1
- data/lib/mongo/operation/write/command/create_user.rb +0 -1
- data/lib/mongo/operation/write/command/delete.rb +3 -3
- data/lib/mongo/operation/write/command/drop_index.rb +0 -1
- data/lib/mongo/operation/write/command/insert.rb +4 -3
- data/lib/mongo/operation/write/command/remove_user.rb +0 -1
- data/lib/mongo/operation/write/command/update.rb +6 -4
- data/lib/mongo/operation/write/command/update_user.rb +0 -1
- data/lib/mongo/operation/write/command/writable.rb +13 -18
- data/lib/mongo/operation/write/create_index.rb +4 -27
- data/lib/mongo/operation/write/create_user.rb +4 -30
- data/lib/mongo/operation/write/delete.rb +6 -29
- data/lib/mongo/operation/write/drop_index.rb +3 -3
- data/lib/mongo/operation/write/gle.rb +49 -0
- data/lib/mongo/operation/write/idable.rb +24 -2
- data/lib/mongo/operation/write/insert.rb +2 -24
- data/lib/mongo/operation/write/remove_user.rb +4 -27
- data/lib/mongo/operation/write/update.rb +13 -36
- data/lib/mongo/operation/write/update_user.rb +4 -30
- data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
- data/lib/mongo/operation/write.rb +2 -0
- data/lib/mongo/operation.rb +33 -5
- data/lib/mongo/options/mapper.rb +26 -2
- data/lib/mongo/options/redacted.rb +156 -0
- data/lib/mongo/options.rb +1 -0
- data/lib/mongo/protocol/bit_vector.rb +11 -9
- data/lib/mongo/protocol/delete.rb +78 -3
- data/lib/mongo/protocol/get_more.rb +59 -2
- data/lib/mongo/protocol/insert.rb +73 -1
- data/lib/mongo/protocol/kill_cursors.rb +66 -4
- data/lib/mongo/protocol/message.rb +44 -20
- data/lib/mongo/protocol/query.rb +153 -65
- data/lib/mongo/protocol/reply.rb +92 -1
- data/lib/mongo/protocol/serializers.rb +49 -40
- data/lib/mongo/protocol/update.rb +93 -1
- data/lib/mongo/retryable.rb +101 -0
- data/lib/mongo/server/connectable.rb +28 -8
- data/lib/mongo/server/connection.rb +52 -10
- data/lib/mongo/server/connection_pool/queue.rb +15 -0
- data/lib/mongo/server/connection_pool.rb +12 -15
- data/lib/mongo/server/description/features.rb +4 -2
- data/lib/mongo/server/description.rb +39 -3
- data/lib/mongo/server/monitor/connection.rb +49 -28
- data/lib/mongo/server/monitor.rb +3 -14
- data/lib/mongo/server.rb +31 -4
- data/lib/mongo/server_selector/selectable.rb +58 -32
- data/lib/mongo/server_selector.rb +19 -10
- data/lib/mongo/socket/ssl.rb +4 -1
- data/lib/mongo/socket/tcp.rb +2 -2
- data/lib/mongo/socket/unix.rb +5 -8
- data/lib/mongo/socket.rb +11 -4
- data/lib/mongo/uri.rb +245 -139
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern.rb +21 -6
- data/lib/mongo.rb +4 -4
- data/mongo.gemspec +1 -2
- data/spec/mongo/address/unix_spec.rb +1 -1
- data/spec/mongo/address_spec.rb +25 -0
- data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
- data/spec/mongo/auth/user/view_spec.rb +26 -1
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +284 -0
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
- data/spec/mongo/bulk_write_spec.rb +385 -161
- data/spec/mongo/client_spec.rb +193 -23
- data/spec/mongo/cluster/topology/replica_set_spec.rb +2 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +65 -0
- data/spec/mongo/collection/view/builder/find_command_spec.rb +167 -0
- data/spec/mongo/collection/view/builder/flags_spec.rb +106 -0
- data/spec/mongo/collection/view/builder/modifiers_spec.rb +210 -0
- data/spec/mongo/collection/view/builder/op_query_spec.rb +154 -0
- data/spec/mongo/collection/view/explainable_spec.rb +1 -2
- data/spec/mongo/collection/view/immutable_spec.rb +54 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +104 -9
- data/spec/mongo/collection/view/readable_spec.rb +109 -112
- data/spec/mongo/collection/view_spec.rb +119 -487
- data/spec/mongo/collection_spec.rb +1002 -33
- data/spec/mongo/command_monitoring_spec.rb +64 -0
- data/spec/mongo/connection_string_spec.rb +115 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +160 -0
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +52 -0
- data/spec/mongo/cursor_spec.rb +10 -60
- data/spec/mongo/database_spec.rb +81 -12
- data/spec/mongo/dbref_spec.rb +4 -4
- data/spec/mongo/grid/file/chunk_spec.rb +6 -6
- data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
- data/spec/mongo/grid/file_spec.rb +8 -8
- data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
- data/spec/mongo/grid/stream/read_spec.rb +275 -0
- data/spec/mongo/grid/stream/write_spec.rb +440 -0
- data/spec/mongo/grid/stream_spec.rb +48 -0
- data/spec/mongo/gridfs_spec.rb +50 -0
- data/spec/mongo/index/view_spec.rb +41 -0
- data/spec/mongo/logger_spec.rb +0 -40
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
- data/spec/mongo/monitoring/event/command_started_spec.rb +26 -0
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +26 -0
- data/spec/mongo/monitoring/event/secure_spec.rb +57 -0
- data/spec/mongo/operation/{aggregate → commands/aggregate}/result_spec.rb +1 -1
- data/spec/mongo/operation/commands/aggregate_spec.rb +69 -0
- data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +1 -19
- data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
- data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +1 -19
- data/spec/mongo/operation/kill_cursors_spec.rb +1 -17
- data/spec/mongo/operation/read/get_more_spec.rb +0 -16
- data/spec/mongo/operation/read/query_spec.rb +19 -16
- data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
- data/spec/mongo/operation/result_spec.rb +19 -0
- data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +17 -28
- data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +1 -12
- data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +7 -18
- data/spec/mongo/operation/write/command/delete_spec.rb +18 -9
- data/spec/mongo/operation/write/command/insert_spec.rb +18 -9
- data/spec/mongo/operation/write/command/update_spec.rb +18 -9
- data/spec/mongo/operation/write/delete_spec.rb +3 -3
- data/spec/mongo/operation/write/insert_spec.rb +0 -11
- data/spec/mongo/operation/write/update_spec.rb +6 -6
- data/spec/mongo/options/redacted_spec.rb +350 -0
- data/spec/mongo/protocol/delete_spec.rb +4 -4
- data/spec/mongo/protocol/get_more_spec.rb +4 -4
- data/spec/mongo/protocol/insert_spec.rb +3 -3
- data/spec/mongo/protocol/kill_cursors_spec.rb +8 -6
- data/spec/mongo/protocol/query_spec.rb +21 -7
- data/spec/mongo/protocol/update_spec.rb +5 -5
- data/spec/mongo/retryable_spec.rb +221 -0
- data/spec/mongo/server/connection_pool/queue_spec.rb +16 -0
- data/spec/mongo/server/connection_pool_spec.rb +42 -6
- data/spec/mongo/server/connection_spec.rb +86 -1
- data/spec/mongo/server/description/features_spec.rb +25 -0
- data/spec/mongo/server/description_spec.rb +42 -0
- data/spec/mongo/server/monitor_spec.rb +44 -0
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +25 -59
- data/spec/mongo/server_selection_rtt_spec.rb +37 -57
- data/spec/mongo/server_selection_spec.rb +5 -3
- data/spec/mongo/server_selector/nearest_spec.rb +35 -27
- data/spec/mongo/server_selector/primary_preferred_spec.rb +32 -30
- data/spec/mongo/server_selector/primary_spec.rb +21 -14
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +28 -26
- data/spec/mongo/server_selector/secondary_spec.rb +24 -22
- data/spec/mongo/server_selector_spec.rb +87 -24
- data/spec/mongo/server_spec.rb +78 -15
- data/spec/mongo/socket/ssl_spec.rb +101 -57
- data/spec/mongo/socket/unix_spec.rb +52 -0
- data/spec/mongo/uri_spec.rb +271 -59
- data/spec/mongo/write_concern_spec.rb +126 -0
- data/spec/spec_helper.rb +29 -23
- data/spec/support/authorization.rb +4 -5
- data/spec/support/command_monitoring/bulkWrite.yml +73 -0
- data/spec/support/command_monitoring/command.yml +42 -0
- data/spec/support/command_monitoring/deleteMany.yml +55 -0
- data/spec/support/command_monitoring/deleteOne.yml +55 -0
- data/spec/support/command_monitoring/find.yml +268 -0
- data/spec/support/command_monitoring/insertMany.yml +81 -0
- data/spec/support/command_monitoring/insertOne.yml +51 -0
- data/spec/support/command_monitoring/updateMany.yml +67 -0
- data/spec/support/command_monitoring/updateOne.yml +95 -0
- data/spec/support/command_monitoring.rb +373 -0
- data/spec/support/connection_string.rb +228 -0
- data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
- data/spec/support/connection_string_tests/valid-auth.yml +256 -0
- data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
- data/spec/support/connection_string_tests/valid-options.yml +30 -0
- data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
- data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
- data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
- data/spec/support/crud/read.rb +14 -10
- data/spec/support/crud/write.rb +36 -9
- data/spec/support/crud.rb +10 -2
- data/spec/support/gridfs.rb +637 -0
- data/spec/support/gridfs_tests/delete.yml +157 -0
- data/spec/support/gridfs_tests/download.yml +210 -0
- data/spec/support/gridfs_tests/download_by_name.yml +113 -0
- data/spec/support/gridfs_tests/upload.yml +158 -0
- data/spec/support/matchers.rb +2 -2
- data/spec/support/sdam/rs/equal_electionids.yml +1 -2
- data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -3
- data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
- data/spec/support/sdam/rs/rsother_discovered.yml +24 -3
- data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/stepdown_change_set_name.yml +59 -0
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
- data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
- data/spec/support/sdam/single/not_ok_response.yml +0 -1
- data/spec/support/server_discovery_and_monitoring.rb +3 -1
- data/spec/support/server_selection.rb +3 -1
- data/spec/support/shared/bulk_write.rb +192 -0
- data/spec/support/shared/protocol.rb +5 -5
- data/spec/support/shared/server_selector.rb +78 -13
- data/spec/support/travis.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +211 -72
- metadata.gz.sig +0 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +0 -252
- data/lib/mongo/bulk_write/deletable.rb +0 -57
- data/lib/mongo/bulk_write/insertable.rb +0 -49
- data/lib/mongo/bulk_write/replacable.rb +0 -58
- data/lib/mongo/bulk_write/updatable.rb +0 -69
- data/lib/mongo/grid/fs.rb +0 -146
- data/lib/mongo/operation/aggregate/result.rb +0 -103
- data/lib/mongo/operation/aggregate.rb +0 -108
- data/lib/mongo/operation/command.rb +0 -61
- data/lib/mongo/operation/map_reduce/result.rb +0 -122
- data/lib/mongo/operation/map_reduce.rb +0 -95
- data/lib/mongo/operation/parallel_scan/result.rb +0 -72
- data/lib/mongo/operation/parallel_scan.rb +0 -76
- data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
- data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
- data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
- data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
- data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
- data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -174
- data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
- data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
- data/spec/mongo/grid/fs_spec.rb +0 -160
- data/spec/mongo/loggable_spec.rb +0 -63
- data/spec/mongo/operation/aggregate_spec.rb +0 -127
@@ -18,6 +18,40 @@ describe Mongo::Collection::View::Readable do
|
|
18
18
|
authorized_collection.delete_many
|
19
19
|
end
|
20
20
|
|
21
|
+
shared_examples_for 'a read concern aware operation' do
|
22
|
+
|
23
|
+
context 'when a read concern is provided', if: find_command_enabled? do
|
24
|
+
|
25
|
+
let(:new_view) do
|
26
|
+
Mongo::Collection::View.new(new_collection, selector, options)
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'when the read concern is valid' do
|
30
|
+
|
31
|
+
let(:new_collection) do
|
32
|
+
authorized_collection.with(read_concern: { level: 'local' })
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'sends the read concern' do
|
36
|
+
expect { result }.to_not raise_error
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when the read concern is not valid' do
|
41
|
+
|
42
|
+
let(:new_collection) do
|
43
|
+
authorized_collection.with(read_concern: { level: 'na' })
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'raises an exception' do
|
47
|
+
expect {
|
48
|
+
result
|
49
|
+
}.to raise_error(Mongo::Error::OperationFailure)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
21
55
|
describe '#allow_partial_results' do
|
22
56
|
|
23
57
|
let(:new_view) do
|
@@ -25,7 +59,7 @@ describe Mongo::Collection::View::Readable do
|
|
25
59
|
end
|
26
60
|
|
27
61
|
it 'sets the flag' do
|
28
|
-
expect(new_view.
|
62
|
+
expect(new_view.options[:allow_partial_results]).to be true
|
29
63
|
end
|
30
64
|
|
31
65
|
it 'returns a new View' do
|
@@ -60,6 +94,15 @@ describe Mongo::Collection::View::Readable do
|
|
60
94
|
view.aggregate(pipeline)
|
61
95
|
end
|
62
96
|
|
97
|
+
context 'when incorporating read concern' do
|
98
|
+
|
99
|
+
let(:result) do
|
100
|
+
new_view.aggregate(pipeline, options).to_a
|
101
|
+
end
|
102
|
+
|
103
|
+
it_behaves_like 'a read concern aware operation'
|
104
|
+
end
|
105
|
+
|
63
106
|
context 'when not iterating the aggregation' do
|
64
107
|
|
65
108
|
it 'returns the aggregation object' do
|
@@ -127,6 +170,15 @@ describe Mongo::Collection::View::Readable do
|
|
127
170
|
view.map_reduce(map, reduce)
|
128
171
|
end
|
129
172
|
|
173
|
+
context 'when incorporating read concern' do
|
174
|
+
|
175
|
+
let(:result) do
|
176
|
+
new_view.map_reduce(map, reduce, options).to_a
|
177
|
+
end
|
178
|
+
|
179
|
+
it_behaves_like 'a read concern aware operation'
|
180
|
+
end
|
181
|
+
|
130
182
|
context 'when not iterating the map/reduce' do
|
131
183
|
|
132
184
|
it 'returns the map/reduce object' do
|
@@ -218,6 +270,19 @@ describe Mongo::Collection::View::Readable do
|
|
218
270
|
authorized_collection.delete_many
|
219
271
|
end
|
220
272
|
|
273
|
+
let(:result) do
|
274
|
+
view.count(options)
|
275
|
+
end
|
276
|
+
|
277
|
+
context 'when incorporating read concern' do
|
278
|
+
|
279
|
+
let(:result) do
|
280
|
+
new_view.count(options)
|
281
|
+
end
|
282
|
+
|
283
|
+
it_behaves_like 'a read concern aware operation'
|
284
|
+
end
|
285
|
+
|
221
286
|
context 'when a selector is provided' do
|
222
287
|
|
223
288
|
let(:selector) do
|
@@ -227,6 +292,10 @@ describe Mongo::Collection::View::Readable do
|
|
227
292
|
it 'returns the count of matching documents' do
|
228
293
|
expect(view.count).to eq(1)
|
229
294
|
end
|
295
|
+
|
296
|
+
it 'returns an integer' do
|
297
|
+
expect(view.count).to be_a(Integer)
|
298
|
+
end
|
230
299
|
end
|
231
300
|
|
232
301
|
context 'when no selector is provided' do
|
@@ -253,6 +322,15 @@ describe Mongo::Collection::View::Readable do
|
|
253
322
|
|
254
323
|
describe '#distinct' do
|
255
324
|
|
325
|
+
context 'when incorporating read concern' do
|
326
|
+
|
327
|
+
let(:result) do
|
328
|
+
new_view.distinct(:field, options)
|
329
|
+
end
|
330
|
+
|
331
|
+
it_behaves_like 'a read concern aware operation'
|
332
|
+
end
|
333
|
+
|
256
334
|
context 'when a selector is provided' do
|
257
335
|
|
258
336
|
let(:selector) do
|
@@ -318,7 +396,7 @@ describe Mongo::Collection::View::Readable do
|
|
318
396
|
end
|
319
397
|
|
320
398
|
it 'returns the distinct values' do
|
321
|
-
expect(distinct).to eq([ 'test1', 'test2', 'test3' ])
|
399
|
+
expect(distinct.sort).to eq([ 'test1', 'test2', 'test3' ])
|
322
400
|
end
|
323
401
|
end
|
324
402
|
|
@@ -329,7 +407,7 @@ describe Mongo::Collection::View::Readable do
|
|
329
407
|
end
|
330
408
|
|
331
409
|
it 'returns the distinct values' do
|
332
|
-
expect(distinct).to eq([ 'test1', 'test2', 'test3' ])
|
410
|
+
expect(distinct.sort).to eq([ 'test1', 'test2', 'test3' ])
|
333
411
|
end
|
334
412
|
end
|
335
413
|
|
@@ -360,7 +438,7 @@ describe Mongo::Collection::View::Readable do
|
|
360
438
|
end
|
361
439
|
|
362
440
|
it 'returns the distinct values' do
|
363
|
-
expect(distinct).to eq([ 'test1', 'test2', 'test3' ])
|
441
|
+
expect(distinct.sort).to eq([ 'test1', 'test2', 'test3' ])
|
364
442
|
end
|
365
443
|
end
|
366
444
|
|
@@ -465,53 +543,40 @@ describe Mongo::Collection::View::Readable do
|
|
465
543
|
end
|
466
544
|
end
|
467
545
|
|
468
|
-
describe '#
|
546
|
+
describe '#max_value' do
|
469
547
|
|
470
548
|
let(:new_view) do
|
471
|
-
view.
|
549
|
+
view.max_value(_id: 1)
|
472
550
|
end
|
473
551
|
|
474
|
-
it 'sets the
|
475
|
-
expect(new_view.
|
476
|
-
end
|
477
|
-
|
478
|
-
it 'returns a new View' do
|
479
|
-
expect(new_view).not_to be(view)
|
552
|
+
it 'sets the value in the options' do
|
553
|
+
expect(new_view.max_value).to eq('_id' => 1)
|
480
554
|
end
|
481
555
|
end
|
482
556
|
|
483
|
-
describe '#
|
557
|
+
describe '#min_value' do
|
484
558
|
|
485
|
-
let(:
|
486
|
-
(1
|
487
|
-
{ name: "testing-scan-#{i}" }
|
488
|
-
end
|
559
|
+
let(:new_view) do
|
560
|
+
view.min_value(_id: 1)
|
489
561
|
end
|
490
562
|
|
491
|
-
|
492
|
-
|
563
|
+
it 'sets the value in the options' do
|
564
|
+
expect(new_view.min_value).to eq('_id' => 1)
|
493
565
|
end
|
566
|
+
end
|
494
567
|
|
495
|
-
|
496
|
-
view.parallel_scan(2)
|
497
|
-
end
|
568
|
+
describe '#no_cursor_timeout' do
|
498
569
|
|
499
|
-
|
500
|
-
|
501
|
-
expect(cursor.class).to be(Mongo::Cursor)
|
502
|
-
end
|
570
|
+
let(:new_view) do
|
571
|
+
view.no_cursor_timeout
|
503
572
|
end
|
504
573
|
|
505
|
-
it '
|
506
|
-
expect(
|
507
|
-
cursors.reduce(0) { |total, cursor| total + cursor.to_a.size }
|
508
|
-
).to eq(200)
|
574
|
+
it 'sets the flag' do
|
575
|
+
expect(new_view.options[:no_cursor_timeout]).to be true
|
509
576
|
end
|
510
577
|
|
511
|
-
it '
|
512
|
-
expect
|
513
|
-
cursors
|
514
|
-
}.to raise_error(Mongo::Error::OperationFailure)
|
578
|
+
it 'returns a new View' do
|
579
|
+
expect(new_view).not_to be(view)
|
515
580
|
end
|
516
581
|
end
|
517
582
|
|
@@ -527,6 +592,10 @@ describe Mongo::Collection::View::Readable do
|
|
527
592
|
{ 'y' => 1 }
|
528
593
|
end
|
529
594
|
|
595
|
+
before do
|
596
|
+
authorized_collection.insert_one(y: 'value', a: 'other_value')
|
597
|
+
end
|
598
|
+
|
530
599
|
it 'sets the projection' do
|
531
600
|
new_view = view.projection(new_projection)
|
532
601
|
expect(new_view.projection).to eq(new_projection)
|
@@ -535,6 +604,10 @@ describe Mongo::Collection::View::Readable do
|
|
535
604
|
it 'returns a new View' do
|
536
605
|
expect(view.projection(new_projection)).not_to be(view)
|
537
606
|
end
|
607
|
+
|
608
|
+
it 'returns only that field on the collection' do
|
609
|
+
expect(view.projection(new_projection).first.keys).to match_array(['_id', 'y'])
|
610
|
+
end
|
538
611
|
end
|
539
612
|
|
540
613
|
context 'when projection is not specified' do
|
@@ -645,13 +718,13 @@ describe Mongo::Collection::View::Readable do
|
|
645
718
|
describe '#modifiers' do
|
646
719
|
|
647
720
|
let(:options) do
|
648
|
-
{ :modifiers => {
|
721
|
+
{ :modifiers => { '$orderby' => 1 } }
|
649
722
|
end
|
650
723
|
|
651
724
|
context 'when a modifiers document is specified' do
|
652
725
|
|
653
726
|
let(:new_modifiers) do
|
654
|
-
{
|
727
|
+
{ '$orderby' => -1 }
|
655
728
|
end
|
656
729
|
|
657
730
|
it 'sets the new_modifiers document' do
|
@@ -779,81 +852,5 @@ describe Mongo::Collection::View::Readable do
|
|
779
852
|
expect(view.sort).to eq(options[:sort])
|
780
853
|
end
|
781
854
|
end
|
782
|
-
|
783
|
-
context 'when an option is a cursor flag' do
|
784
|
-
|
785
|
-
let(:query_spec_options) do
|
786
|
-
view.send(:query_spec)[:options]
|
787
|
-
end
|
788
|
-
|
789
|
-
context 'when allow_partial_results is set as an option' do
|
790
|
-
|
791
|
-
let(:options) do
|
792
|
-
{ :allow_partial_results => true }
|
793
|
-
end
|
794
|
-
|
795
|
-
it 'sets the cursor flag' do
|
796
|
-
expect(query_spec_options[:flags]).to eq([:partial])
|
797
|
-
end
|
798
|
-
|
799
|
-
context 'when allow_partial_results is also called as a method' do
|
800
|
-
|
801
|
-
before do
|
802
|
-
view.allow_partial_results
|
803
|
-
end
|
804
|
-
|
805
|
-
it 'sets only one cursor flag' do
|
806
|
-
expect(query_spec_options[:flags]).to eq([:partial])
|
807
|
-
end
|
808
|
-
end
|
809
|
-
end
|
810
|
-
|
811
|
-
context 'when oplog_replay is set as an option' do
|
812
|
-
|
813
|
-
let(:options) do
|
814
|
-
{ :oplog_replay => true }
|
815
|
-
end
|
816
|
-
|
817
|
-
it 'sets the cursor flag' do
|
818
|
-
expect(query_spec_options[:flags]).to eq([:oplog_replay])
|
819
|
-
end
|
820
|
-
end
|
821
|
-
|
822
|
-
context 'when no_cursor_timeout is set as an option' do
|
823
|
-
|
824
|
-
let(:options) do
|
825
|
-
{ :no_cursor_timeout => true }
|
826
|
-
end
|
827
|
-
|
828
|
-
it 'sets the cursor flag' do
|
829
|
-
expect(query_spec_options[:flags]).to eq([:no_cursor_timeout])
|
830
|
-
end
|
831
|
-
end
|
832
|
-
|
833
|
-
context 'when cursor_type is set as an option' do
|
834
|
-
|
835
|
-
context 'when :tailable is the cursor type' do
|
836
|
-
|
837
|
-
let(:options) do
|
838
|
-
{ :cursor_type => :tailable }
|
839
|
-
end
|
840
|
-
|
841
|
-
it 'sets the cursor flag' do
|
842
|
-
expect(query_spec_options[:flags]).to eq([:tailable_cursor])
|
843
|
-
end
|
844
|
-
end
|
845
|
-
|
846
|
-
context 'when :tailable_await is the cursor type' do
|
847
|
-
|
848
|
-
let(:options) do
|
849
|
-
{ :cursor_type => :tailable_await }
|
850
|
-
end
|
851
|
-
|
852
|
-
it 'sets the cursor flags' do
|
853
|
-
expect(query_spec_options[:flags]).to eq([:await_data, :tailable_cursor])
|
854
|
-
end
|
855
|
-
end
|
856
|
-
end
|
857
|
-
end
|
858
855
|
end
|
859
856
|
end
|