public void CreateCommand_should_create_the_correct_command() { var filter = new BsonDocument("x", 1); var hint = "funny"; var limit = 10; var skip = 30; var maxTime = TimeSpan.FromSeconds(20); var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Filter = filter, Hint = hint, Limit = limit, MaxTime = maxTime, Skip = skip }; var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "query", filter }, { "limit", limit }, { "skip", skip }, { "hint", hint }, { "maxTimeMS", maxTime.TotalMilliseconds } }; var result = subject.CreateCommand(); result.Should().Be(expectedResult); }
public void CreateCommand_should_return_the_expected_result_when_using_causal_consistency( [Values(null, ReadConcernLevel.Linearizable, ReadConcernLevel.Local)] ReadConcernLevel?level) { var readConcern = level == null ? ReadConcern.Default : new ReadConcern(level); var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { ReadConcern = readConcern }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(Feature.ReadConcern.FirstSupportedVersion, supportsSessions: true); var session = OperationTestHelper.CreateSession(true, new BsonTimestamp(100)); var result = subject.CreateCommand(connectionDescription, session); var expectedReadConcernDocument = readConcern.ToBsonDocument(); expectedReadConcernDocument["afterClusterTime"] = new BsonTimestamp(100); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "readConcern", expectedReadConcernDocument } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_create_the_correct_command( [Values("3.0.0", "3.2.0")] string serverVersion, [Values(null, ReadConcernLevel.Local, ReadConcernLevel.Majority)] ReadConcernLevel?readConcernLevel) { var semanticServerVersion = SemanticVersion.Parse(serverVersion); var filter = new BsonDocument("x", 1); var hint = "funny"; var limit = 10; var skip = 30; var maxTime = TimeSpan.FromSeconds(20); var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Filter = filter, Hint = hint, Limit = limit, MaxTime = maxTime, ReadConcern = new ReadConcern(readConcernLevel), Skip = skip }; var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "query", filter }, { "limit", limit }, { "skip", skip }, { "hint", hint }, { "maxTimeMS", maxTime.TotalMilliseconds } }; if (!subject.ReadConcern.IsServerDefault) { expectedResult["readConcern"] = subject.ReadConcern.ToBsonDocument(); } if (!subject.ReadConcern.IsSupported(semanticServerVersion)) { Action act = () => subject.CreateCommand(semanticServerVersion); act.ShouldThrow <MongoClientException>(); } else { var result = subject.CreateCommand(semanticServerVersion); result.Should().Be(expectedResult); } }
public void CreateCommand_should_throw_when_ReadConcern_is_set_but_not_supported() { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { ReadConcern = new ReadConcern(ReadConcernLevel.Linearizable) }; var exception = Record.Exception(() => subject.CreateCommand(Feature.ReadConcern.LastNotSupportedVersion)); exception.Should().BeOfType <MongoClientException>(); }
public void CreateCommand_should_throw_when_Collation_is_set_but_not_supported() { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Collation = new Collation("en_US") }; var exception = Record.Exception(() => subject.CreateCommand(Feature.Collation.LastNotSupportedVersion)); exception.Should().BeOfType <NotSupportedException>(); }
public void CreateCommand_should_return_expected_result() { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings); var result = subject.CreateCommand(null); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_create_the_correct_command() { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Criteria = new BsonDocument("x", 1), Hint = "funny", Limit = 10, MaxTime = TimeSpan.FromSeconds(20), Skip = 30 }; var cmd = subject.CreateCommand(); cmd.Should().Be("{ count: \"bar\", query: {x: 1}, limit: 10, skip: 30, hint: \"funny\", maxTimeMS: 20000 }"); }
public void CreateCommand_should_return_expected_result() { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var session = OperationTestHelper.CreateSession(); var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_Skip_is_set( [Values(null, 1L, 2L)] long?skip) { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Skip = skip }; var result = subject.CreateCommand(null); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "skip", () => skip.Value, skip != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_Limit_is_set( [Values(null, 1L, 2L)] long?limit) { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Limit = limit }; var result = subject.CreateCommand(null); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "limit", () => limit.Value, limit != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_Collation_is_set( [Values(null, "en_US", "fr_CA")] string locale) { var collation = locale == null ? null : new Collation(locale); var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Collation = collation }; var result = subject.CreateCommand(Feature.Collation.FirstSupportedVersion); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "collation", () => collation.ToBsonDocument(), collation != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_MaxTime_is_set(long maxTimeTicks, int expectedMaxTimeMS) { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { MaxTime = TimeSpan.FromTicks(maxTimeTicks) }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var session = OperationTestHelper.CreateSession(); var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "maxTimeMS", expectedMaxTimeMS } }; result.Should().Be(expectedResult); result["maxTimeMS"].BsonType.Should().Be(BsonType.Int32); }
public void CreateCommand_should_return_expected_result_when_ReadConcern_is_set( [Values(null, ReadConcernLevel.Linearizable, ReadConcernLevel.Local)] ReadConcernLevel?level) { var readConcern = level == null ? ReadConcern.Default : new ReadConcern(level); var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { ReadConcern = readConcern }; var result = subject.CreateCommand(Feature.ReadConcern.FirstSupportedVersion); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "readConcern", () => readConcern.ToBsonDocument(), !readConcern.IsServerDefault } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_MaxTime_is_set( [Values(null, 1L, 2L)] long?milliseconds) { var maxTime = milliseconds == null ? (TimeSpan?)null : TimeSpan.FromMilliseconds(milliseconds.Value); var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { MaxTime = maxTime }; var result = subject.CreateCommand(null); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "maxTimeMS", () => maxTime.Value.TotalMilliseconds, maxTime != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_Hint_is_set( [Values(null, "{ hint : \"x_1\" }", "{ hint : { x : 1 } }")] string hintString) { var hint = hintString == null ? null : BsonDocument.Parse(hintString)["hint"]; var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Hint = hint }; var result = subject.CreateCommand(null); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "hint", hint, hint != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_Filter_is_set( [Values(null, "{ x : 1 }", "{ x : 2 }")] string filterString) { var filter = filterString == null ? null : BsonDocument.Parse(filterString); var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Filter = filter }; var result = subject.CreateCommand(null); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "query", filter, filter != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_Comment_is_set( [Values(null, "comment")] string comment) { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Comment = comment }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var session = OperationTestHelper.CreateSession(); var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "comment", comment, comment != null } }; result.Should().Be(expectedResult); }