public void constructor_should_initialize_instance() { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); subject.CollectionNamespace.Should().BeSameAs(_collectionNamespace); subject.Near.Should().BeSameAs(_near); subject.ResultSerializer.Should().BeSameAs(_resultSerializer); subject.MessageEncoderSettings.Should().BeSameAs(_messageEncoderSettings); subject.Collation.Should().BeNull(); subject.DistanceMultiplier.Should().NotHaveValue(); subject.Filter.Should().BeNull(); subject.IncludeLocs.Should().NotHaveValue(); subject.Limit.Should().NotHaveValue(); subject.MaxDistance.Should().NotHaveValue(); subject.MaxTime.Should().NotHaveValue(); subject.ReadConcern.Should().BeSameAs(ReadConcern.Default); subject.Spherical.Should().NotHaveValue(); subject.UniqueDocs.Should().NotHaveValue(); }
public void CreateCommand_should_return_expected_result_when_ReadConcern_is_set( [Values(null, ReadConcernLevel.Linearizable, ReadConcernLevel.Local)] ReadConcernLevel? level) { var readConcern = new ReadConcern(level); var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings) { ReadConcern = readConcern }; var result = subject.CreateCommand(Feature.ReadConcern.FirstSupportedVersion); var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", new BsonArray { 1, 2 } }, { "readConcern", () => readConcern.ToBsonDocument(), !readConcern.IsServerDefault } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_MaxTime_is_set( [Values(null, 1, 2)] int? seconds) { var maxTime = seconds.HasValue ? TimeSpan.FromSeconds(seconds.Value) : (TimeSpan?)null; var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings) { MaxTime = maxTime }; var result = subject.CreateCommand(Feature.Collation.FirstSupportedVersion); var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", new BsonArray { 1, 2 } }, { "maxTimeMS", () => seconds.Value * 1000, seconds.HasValue } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_MaxDistance_is_set( [Values(null, 1.0, 2.0)] double? maxDistance) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings) { MaxDistance = maxDistance }; var result = subject.CreateCommand(Feature.Collation.FirstSupportedVersion); var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", new BsonArray { 1, 2 } }, { "maxDistance", () => maxDistance.Value, maxDistance.HasValue } }; result.Should().Be(expectedResult); }
public void Limit_get_and_set_should_work( [Values(null, 1, 2)] int? value) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); subject.Limit = value; var result = subject.Limit; result.Should().Be(value); }
public void Execute_should_return_expected_result( [Values(false, true)] bool async) { var subject = new GeoNearOperation<BsonDocument>( _collectionNamespace, new BsonArray { 1, 2 }, BsonDocumentSerializer.Instance, _messageEncoderSettings); var result = ExecuteOperation(subject, async); result["results"].Should().NotBeNull(); }
public void Execute_should_return_expected_result_when_Collation_is_set( [Values(false, true)] bool caseSensitive, [Values(false, true)] bool async) { RequireServer.Check().Supports(Feature.Collation); EnsureTestData(); var collation = new Collation("en_US", caseLevel: caseSensitive, strength: CollationStrength.Primary); var filter = BsonDocument.Parse("{ x : 'x' }"); var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings) { Collation = collation, Filter = filter }; var result = ExecuteOperation(subject, async); result["results"].AsBsonArray.Count.Should().Be(caseSensitive ? 2 : 5); result["results"].AsBsonArray.Select(i => i["dis"].ToDouble()).Should().BeInAscendingOrder(); }
public void CreateCommand_should_throw_when_ReadConcern_is_set_but_not_supported() { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings) { ReadConcern = new ReadConcern(ReadConcernLevel.Local) }; var exception = Record.Exception(() => subject.CreateCommand(Feature.ReadConcern.LastNotSupportedVersion)); exception.Should().BeOfType<MongoClientException>(); }
public void CreateCommand_should_return_expected_result() { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); var result = subject.CreateCommand(null); var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", new BsonArray { 1, 2 } } }; result.Should().Be(expectedResult); }
public void UniqueDocs_get_and_set_should_work( [Values(null, false, true)] bool? value) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); subject.UniqueDocs = value; var result = subject.UniqueDocs; result.Should().Be(value); }
public void ReadConcern_set_should_throw_when_value_is_null() { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); var exception = Record.Exception(() => subject.ReadConcern = null); var argumentNulException = exception.Should().BeOfType<ArgumentNullException>().Subject; argumentNulException.ParamName.Should().Be("value"); }
public void ReadConcern_get_and_set_should_work( [Values(ReadConcernLevel.Linearizable, ReadConcernLevel.Local)] ReadConcernLevel level) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); var value = new ReadConcern(level); subject.ReadConcern = value; var result = subject.ReadConcern; result.Should().Be(value); }
public void MaxTime_get_and_set_should_work( [Values(null, 1, 2)] int? seconds) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); var value = seconds.HasValue ? TimeSpan.FromSeconds(seconds.Value) : (TimeSpan?)null; subject.MaxTime = value; var result = subject.MaxTime; result.Should().Be(value); }
public void MaxDistance_get_and_set_should_work( [Values(null, 1.0, 2.0)] double? value) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); subject.MaxDistance = value; var result = subject.MaxDistance; result.Should().Be(value); }
public void CreateCommand_should_return_expected_result_when_UniqueDocs_is_set( [Values(null, false, true)] bool? uniqueDocs) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings) { UniqueDocs = uniqueDocs }; var result = subject.CreateCommand(Feature.Collation.FirstSupportedVersion); var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", new BsonArray { 1, 2 } }, { "uniqueDocs", () => uniqueDocs.Value, uniqueDocs.HasValue } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_throw_when_Collation_is_set_but_not_supported() { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _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_when_Collation_is_set( [Values(null, "en_US", "fr_CA")] string locale) { var collation = locale == null ? null : new Collation(locale); var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings) { Collation = collation }; var result = subject.CreateCommand(Feature.Collation.FirstSupportedVersion); var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", new BsonArray { 1, 2 } }, { "collation", () => collation.ToBsonDocument(), collation != null } }; result.Should().Be(expectedResult); }
public void Execute_should_return_expected_result( [Values(false, true)] bool async) { RequireServer.Check(); EnsureTestData(); var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); var result = ExecuteOperation(subject, async); result["results"].AsBsonArray.Count.Should().Be(5); result["results"].AsBsonArray.Select(i => i["dis"].ToDouble()).Should().BeInAscendingOrder(); }
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 GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings) { Filter = filter }; var result = subject.CreateCommand(Feature.Collation.FirstSupportedVersion); var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", new BsonArray { 1, 2 } }, { "query", () => filter, filter != null } }; result.Should().Be(expectedResult); }
public void Collation_get_and_set_should_work( [Values(null, "en_US", "fr_CA")] string locale) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); var value = locale == null ? null : new Collation(locale); subject.Collation = value; var result = subject.Collation; result.Should().BeSameAs(value); }
public void CreateCommand_should_return_expected_result_when_Limit_is_set( [Values(null, 1, 2)] int? limit) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings) { Limit = limit }; var result = subject.CreateCommand(Feature.Collation.FirstSupportedVersion); var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", new BsonArray { 1, 2 } }, { "limit", () => limit.Value, limit.HasValue } }; 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 distanceMultiplier = 40; var filter = new BsonDocument("x", 1); var includeLocs = true; var limit = 10; var maxDistance = 30; var maxTime = TimeSpan.FromMilliseconds(50); var near = new BsonArray { 10, 20 }; var spherical = true; var uniqueDocs = true; var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, near, BsonDocumentSerializer.Instance, _messageEncoderSettings) { DistanceMultiplier = distanceMultiplier, Filter = filter, IncludeLocs = includeLocs, Limit = limit, MaxDistance = maxDistance, MaxTime = maxTime, ReadConcern = new ReadConcern(readConcernLevel), Spherical = spherical, UniqueDocs = uniqueDocs }; var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", near }, { "limit", limit }, { "maxDistance", maxDistance }, { "query", filter }, { "spherical", spherical }, { "distanceMultiplier", distanceMultiplier }, { "includeLocs", includeLocs }, { "uniqueDocs", uniqueDocs }, { "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 Filter_get_and_set_should_work( [Values(null, "{ x : 1 }", "{ x : 2 }")] string valueString) { var subject = new GeoNearOperation<BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); var value = valueString == null ? null : BsonDocument.Parse(valueString); subject.Filter = value; var result = subject.Filter; result.Should().BeSameAs(value); }