public void Test_Encoding() { var options = new QueryOptions("SELECT * FROM `Default`").Encoding(Encoding.Utf8); var result = options.GetFormValues(); Assert.Equal("UTF-8", result["encoding"]); }
public async Task QueryInterpolatedAsync_OptionsAction_BuildsQuery() { // Arrange QueryOptions options = null; var cluster = CreateMockQueryCapturingCluster <dynamic>(queryOptions => { options = queryOptions; }); // Act var type = "person"; var limit = 10; await cluster.QueryInterpolatedAsync <dynamic>(o => o.Timeout(TimeSpan.FromMinutes(1)), $"SELECT x FROM default WHERE type = {type} LIMIT {limit}"); // Assert Assert.NotNull(options); Assert.False(options.IsAdHoc); Assert.Equal(TimeSpan.FromMinutes(1), options.TimeoutValue); Assert.Equal("SELECT x FROM default WHERE type = $1 LIMIT $2", options.StatementValue); Assert.True(options.GetFormValues().TryGetValue("args", out var args)); var argsArray = Assert.IsType <List <object> >(args); Assert.Equal(2, argsArray.Count); Assert.Equal(type, argsArray[0]); Assert.Equal(limit, argsArray[1]); }
public async Task QueryInterpolatedAsync_IncomingOptions_BuildsQuery() { // Arrange var options = new QueryOptions().ScanConsistency(QueryScanConsistency.RequestPlus); QueryOptions forwardedOptions = null; var cluster = CreateMockQueryCapturingCluster <dynamic>(queryOptions => { forwardedOptions = queryOptions; }); // Act var type = "person"; var limit = 10; await cluster.QueryInterpolatedAsync <dynamic>(options, $"SELECT x FROM default WHERE type = {type} LIMIT {limit}"); // Assert Assert.Same(options, forwardedOptions); Assert.Equal("SELECT x FROM default WHERE type = $1 LIMIT $2", options.StatementValue); Assert.True(options.GetFormValues().TryGetValue("args", out var args)); var argsArray = Assert.IsType <List <object> >(args); Assert.Equal(2, argsArray.Count); Assert.Equal(type, argsArray[0]); Assert.Equal(limit, argsArray[1]); }
public void Test_FlexIndex_When_Default_Sends_Nothing() { var options = new QueryOptions("SELECT * FROM WHAT").FlexIndex(false); var values = options.GetFormValues(); Assert.False(values.Keys.Contains("use_fts")); }
public void Test_FlexIndex_When_True_Sends_Parameter() { var options = new QueryOptions("SELECT * FROM WHAT").FlexIndex(true); var values = options.GetFormValues(); Assert.Equal(true, actual: values["use_fts"]); }
public void Test_QueryContext_Is_NotNull() { var options = new QueryOptions("SELECT * FROM WHAT") { QueryContext = "namespace:bucket:scope:collection" }; var args = options.GetFormValues(); Assert.Equal("namespace:bucket:scope:collection", args["query_context"]); }
public void Test_Query_With_NamedParameters() { var options = new QueryOptions("SELECT * FROM `$bucket` WHERE name=$name"). Parameter("bucket", "default"). Parameter("name", "bill"); var values = options.GetFormValues(); Assert.Equal("default", values["$bucket"]); Assert.Equal("bill", values["$name"]); }
public void Test_Query_With_PositionParameters() { var options = new QueryOptions("SELECT * FROM `$1` WHERE name=$2"). Parameter("default"). Parameter("bill"); var values = options.GetFormValues(); var args = (List <object>)values["args"]; Assert.Equal("default", args[0]); Assert.Equal("bill", args[1]); }
public void Test_CloneIdUsedAlready() { var cts = new CancellationTokenSource(); var mutationState = new MutationState(); mutationState.Add(new MutationResult(0, TimeSpan.FromSeconds(10), new MutationToken("default", 1, 1, 1))); var options = new QueryOptions(). AdHoc(true).AutoExecute(true). CancellationToken(cts.Token). ClientContextId("clientid"). ConsistentWith(mutationState). FlexIndex(true). MaxServerParallelism(1). Metrics(true). Parameter(1). Parameter("name", "value"). PipelineBatch(1). PipelineCap(1). PreserveExpiry(true). Profile(QueryProfile.Off). Raw("foo", "bar"). Readonly(true). ScanCap(1). ScanWait(TimeSpan.FromSeconds(10)). Timeout(TimeSpan.FromMilliseconds(1)). Statement("SELECT 1;"). ScanCap(1); var newOptions = options.CloneIfUsedAlready(); var newValues = newOptions.GetFormValues(); var oldValues = options.GetFormValues(); Assert.Equal(newValues.Count, oldValues.Count); Assert.Equal(newValues["max_parallelism"], oldValues["max_parallelism"]); Assert.Equal(newValues["statement"], oldValues["statement"]); Assert.Equal(newValues["timeout"], oldValues["timeout"]); Assert.Equal(newValues["readonly"], oldValues["readonly"]); Assert.Equal(newValues["metrics"], oldValues["metrics"]); Assert.Equal(newValues["$name"], oldValues["$name"]); Assert.Equal(newValues["args"], oldValues["args"]); Assert.Equal(newValues["scan_consistency"], oldValues["scan_consistency"]); Assert.Equal(newValues["scan_vectors"], oldValues["scan_vectors"]); Assert.Equal(newValues["scan_wait"], oldValues["scan_wait"]); Assert.Equal(newValues["scan_cap"], oldValues["scan_cap"]); Assert.Equal(newValues["pipeline_batch"], oldValues["pipeline_batch"]); Assert.Equal(newValues["pipeline_cap"], oldValues["pipeline_cap"]); Assert.Equal(newValues["preserve_expiry"], oldValues["preserve_expiry"]); Assert.Equal(newValues["foo"], oldValues["foo"]); Assert.Equal(newValues["auto_execute"], oldValues["auto_execute"]); Assert.Equal(newValues["client_context_id"], oldValues["client_context_id"]); Assert.Equal(newValues["use_fts"], oldValues["use_fts"]); }
public async System.Threading.Tasks.Task Test_Collections_QueryOps() { var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false); var collectionManager = (CollectionManager)bucket.Collections; var scopeName = "query_test_scope2"; var collectionName = "query_test_collection2"; var docId = "mydoc2"; var collectionSpec = new CollectionSpec(scopeName, collectionName); await DropScopeAndCollectionIfExists(scopeName, collectionSpec, collectionManager); try { await collectionManager.CreateScopeAsync(scopeName).ConfigureAwait(false); await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false); var scope = await bucket.ScopeAsync(scopeName); var collection = await scope.CollectionAsync(collectionName); var task = await collection.InsertAsync(docId, new { }).ConfigureAwait(false); var options = new QueryOptions("select * from `" + collectionName + "` where meta().id=\"" + docId + "\"") { QueryContext = "namespace:bucket:scope:collection" }; var args = options.GetFormValues(); Assert.Equal("namespace:bucket:scope:collection", args["query_context"]); options = new QueryOptions("SELECT * FROM `$bucket` WHERE collectionName=$name") .Parameter("bucket", "default").Parameter("collectionName", "query_test_collection2"); var values = options.GetFormValues(); Assert.Equal("default", values["$bucket"]); Assert.Equal("query_test_collection2", values["$collectionName"]); } catch (CouchbaseException e) { } finally { await DropScopeAndCollectionIfExists(scopeName, collectionSpec, collectionManager); } }
public async System.Threading.Tasks.Task Test_Collections_QueryOptionsAsync() { var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false); var collectionManager = (CollectionManager)bucket.Collections; var scopeName = "query_test_scope1"; var collectionName = "query_test_collection1"; var docId = "mydoc1"; var collectionSpec = new CollectionSpec(scopeName, collectionName); await DropScopeAndCollectionIfExists(scopeName, collectionSpec, collectionManager); try { await collectionManager.CreateScopeAsync(scopeName).ConfigureAwait(false); await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false); var collectionExistsResult = await collectionManager.CollectionExistsAsync(collectionSpec).ConfigureAwait(false); Assert.True(collectionExistsResult); var scope = await bucket.ScopeAsync(scopeName); var collection = await scope.CollectionAsync(collectionName); var task = await collection.InsertAsync(docId, new { }).ConfigureAwait(false); var options = new QueryOptions("select * from `" + collectionName + "` where meta().id=\"" + docId + "\"") { QueryContext = "namespace:bucket:scope:collection" }; var args = options.GetFormValues(); Assert.Equal("namespace:bucket:scope:collection", args["query_context"]); } finally { await DropScopeIfExists(scopeName, collectionManager); } }
public void GetFormValues_ScanVector_CorrectValues() { // Arrange var token1 = new MutationToken("WHAT", 105, 105, 945678); var token2 = new MutationToken("WHAT", 105, 105, 955555); var token3 = new MutationToken("WHAT", 210, 210, 12345); var state = new MutationState() .Add( // ReSharper disable PossibleUnintendedReferenceComparison Mock.Of <IMutationResult>(m => m.MutationToken == token1), Mock.Of <IMutationResult>(m => m.MutationToken == token2), Mock.Of <IMutationResult>(m => m.MutationToken == token3)); // ReSharper restore PossibleUnintendedReferenceComparison var options = new QueryOptions("SELECT * FROM WHAT") .ConsistentWith(state); // Assert var values = options.GetFormValues(); var vectors = (Dictionary <string, Dictionary <string, ScanVectorComponent> >)values["scan_vectors"] !; var bucketVectors = vectors["WHAT"]; var vBucketComponent1 = bucketVectors["105"]; Assert.Equal(955555L, vBucketComponent1.SequenceNumber); Assert.Equal(105, vBucketComponent1.VBucketUuid); var vBucketComponent2 = bucketVectors["210"]; Assert.Equal(12345L, vBucketComponent2.SequenceNumber); Assert.Equal(210, vBucketComponent2.VBucketUuid); }