public void CollectionNamespace_get_should_return_expected_value() { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); var result = subject.CollectionNamespace; result.Should().BeSameAs(_collectionNamespace); }
public void constructor_should_initialize_subject() { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); subject.CollectionNamespace.Should().BeSameAs(_collectionNamespace); subject.MessageEncoderSettings.Should().BeSameAs(_messageEncoderSettings); subject.Requests.Should().ContainInOrder(requests); subject.WriteConcern.Should().Be(WriteConcern.Acknowledged); }
public void CreateCommand_should_return_expected_result_when_creating_one_index() { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); var expectedResult = new BsonDocument { { "createIndexes", _collectionNamespace.CollectionName }, { "indexes", new BsonArray { requests[0].CreateIndexDocument() } } }; var result = subject.CreateCommand(); result.Should().Be(expectedResult); }
public void WriteConcern_set_should_throw_when_value_is_null() { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); Action action = () => { subject.WriteConcern = null; }; action.ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("value"); }
public void WriteConcern_get_and_set_should_work() { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); var value = WriteConcern.WMajority; subject.WriteConcern = value; var result = subject.WriteConcern; result.Should().BeSameAs(value); }
public void Execute_should_work_when_expireAfter_has_value( [Values(false, true)] bool async) { var expireAfterSeconds = 1.5; var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { ExpireAfter = TimeSpan.FromSeconds(expireAfterSeconds) } }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); var result = ExecuteOperation(subject, async); result["ok"].ToBoolean().Should().BeTrue(); var indexes = ListIndexes(async); var index = indexes.Single(i => i["name"].AsString == "x_1"); index["expireAfterSeconds"].ToDouble().Should().Be(expireAfterSeconds); }
public void Execute_should_work_when_partialFilterExpression_has_value( [Values(false, true)] bool async) { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { PartialFilterExpression = new BsonDocument("x", new BsonDocument("$gt", 0)) } }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); var result = ExecuteOperation(subject, async); result["ok"].ToBoolean().Should().BeTrue(); var indexes = ListIndexes(async); var index = indexes.Single(i => i["name"].AsString == "x_1"); index["partialFilterExpression"].AsBsonDocument.Should().Be(requests[0].PartialFilterExpression); }
public void Execute_should_work_when_creating_two_indexes( [Values(false, true)] bool async) { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)), new CreateIndexRequest(new BsonDocument("y", 1)) }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); var result = ExecuteOperation(subject, async); result["ok"].ToBoolean().Should().BeTrue(); var indexes = ListIndexes(async); indexes.Select(index => index["name"].AsString).Should().BeEquivalentTo(new[] { "_id_", "x_1", "y_1" }); }
public void CreateCommand_should_return_expected_result_when_WriteConcern_is_set( [Values(1, 2)] int w, [Values(false, true)] bool isWriteConcernSupported) { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var writeConcern = new WriteConcern(w); var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings) { WriteConcern = writeConcern }; var serverVersion = Feature.CommandsThatWriteAcceptWriteConcern.SupportedOrNotSupportedVersion(isWriteConcernSupported); var result = subject.CreateCommand(serverVersion); var expectedResult = new BsonDocument { { "createIndexes", _collectionNamespace.CollectionName }, { "indexes", new BsonArray { requests[0].CreateIndexDocument(null) } }, { "writeConcern", () => writeConcern.ToBsonDocument(), isWriteConcernSupported } }; result.Should().Be(expectedResult); }
public void Execute_should_throw_when_a_write_concern_error_occurs( [Values(false, true)] bool async) { RequireServer.Check().Supports(Feature.CreateIndexesCommand, Feature.CommandsThatWriteAcceptWriteConcern).ClusterType(ClusterType.ReplicaSet); DropCollection(); var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings) { WriteConcern = new WriteConcern(9) }; var exception = Record.Exception(() => ExecuteOperation(subject, async)); exception.Should().BeOfType<MongoWriteConcernException>(); }
public void Execute_should_work_when_unique_is_true( [Values(false, true)] bool async) { RequireServer.Check().Supports(Feature.CreateIndexesCommand); DropCollection(); var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { Unique = true } }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); ExecuteOperation(subject, async); var indexes = ListIndexes(); var index = indexes.Single(i => i["name"].AsString == "x_1"); index["unique"].ToBoolean().Should().BeTrue(); }
public void Execute_should_work_when_expireAfter_has_value( [Values(false, true)] bool async) { RequireServer.Check().Supports(Feature.CreateIndexesCommand); DropCollection(); var expireAfter = TimeSpan.FromSeconds(1.5); var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { ExpireAfter = expireAfter } }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); ExecuteOperation(subject, async); var indexes = ListIndexes(); var index = indexes.Single(i => i["name"].AsString == "x_1"); index["expireAfterSeconds"].ToDouble().Should().Be(expireAfter.TotalSeconds); }
public void Execute_should_work_when_Collation_has_value( [Values("en_US", "fr_CA")] string locale, [Values(false, true)] bool async) { RequireServer.Check().Supports(Feature.CreateIndexesCommand, Feature.Collation); DropCollection(); var collation = new Collation(locale); var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { Collation = collation } }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); ExecuteOperation(subject, async); var indexes = ListIndexes(); var index = indexes.Single(i => i["name"].AsString == "x_1"); index["collation"]["locale"].AsString.Should().Be(locale); }
public void Execute_should_work_when_partialFilterExpression_has_value( [Values(false, true)] bool async) { RequireServer.Check().Supports(Feature.CreateIndexesCommand, Feature.PartialIndexes); DropCollection(); var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { PartialFilterExpression = new BsonDocument("x", new BsonDocument("$gt", 0)) } }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); ExecuteOperation(subject, async); var indexes = ListIndexes(); var index = indexes.Single(i => i["name"].AsString == "x_1"); index["partialFilterExpression"].AsBsonDocument.Should().Be(requests[0].PartialFilterExpression); }
public void Execute_should_work_when_creating_two_indexes( [Values(false, true)] bool async) { RequireServer.Check().Supports(Feature.CreateIndexesCommand); DropCollection(); var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)), new CreateIndexRequest(new BsonDocument("y", 1)) }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); ExecuteOperation(subject, async); var indexes = ListIndexes(); indexes.Select(index => index["name"].AsString).Should().BeEquivalentTo(new[] { "_id_", "x_1", "y_1" }); }
public void WriteConcern_get_and_set_should_work( [Values(1, 2)] int w) { var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, Enumerable.Empty<CreateIndexRequest>(), _messageEncoderSettings); var value = new WriteConcern(w); subject.WriteConcern = value; var result = subject.WriteConcern; result.Should().BeSameAs(value); }
public void WriteConcern_set_should_throw_when_value_is_null() { var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, Enumerable.Empty<CreateIndexRequest>(), _messageEncoderSettings); var exception = Record.Exception(() => { subject.WriteConcern = null; }); var argumentNullException = exception.Should().BeOfType<ArgumentNullException>().Subject; argumentNullException.ParamName.Should().Be("value"); }
public void Execute_should_work_when_background_is_true( [Values(false, true)] bool async) { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { Background = true } }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); var result = ExecuteOperation(subject, async); result["ok"].ToBoolean().Should().BeTrue(); var indexes = ListIndexes(async); var index = indexes.Single(i => i["name"].AsString == "x_1"); index["background"].ToBoolean().Should().BeTrue(); }
public void Execute_should_work_when_sparse_is_true( [Values(false, true)] bool async) { RequireServer.Where(minimumVersion: "2.7.6"); DropCollection(); var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { Sparse = true } }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); var result = ExecuteOperation(subject, async); result["ok"].ToBoolean().Should().BeTrue(); var indexes = ListIndexes(async); var index = indexes.Single(i => i["name"].AsString == "x_1"); index["sparse"].ToBoolean().Should().BeTrue(); }