public void ThenItShouldPrefixCountQueryWithSelectCount() { var query = new CosmosQuery(CosmosCombinationOperator.And) .AddCondition("Name", DataOperator.Equals, "some-thing"); Assert.AreEqual(CosmosQueryTestConstants.CountQueryPrefix, query.ToString(true).Substring(0, CosmosQueryTestConstants.CountQueryPrefix.Length)); }
public void ThenItShouldAppendEqualsConditionsToQuery(string type) { var query = new CosmosQuery(CosmosCombinationOperator.And); query.AddTypeCondition(type); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE re.type = '{type.ToLower()}'", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
internal static string QueryWhereClause(CosmosQuery query) { var queryText = QueryWithoutOrderByOrSkip(query); var whereIndex = queryText.IndexOf("WHERE", StringComparison.InvariantCultureIgnoreCase); return(queryText.Substring(whereIndex + 5).Trim()); }
public void ThenItShouldAppendEqualsConditionsToQuery(string field, string value) { var query = new CosmosQuery(CosmosCombinationOperator.And); query.AddCondition(field, DataOperator.Equals, value); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE ARRAY_CONTAINS(re.{field}, '{value}T00:00:00')", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldAppendLessThanOrEqualToConditionsToQuery(string field, string value) { var query = new CosmosQuery(CosmosCombinationOperator.And); query.AddCondition(field, DataOperator.LessThanOrEqualTo, value); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE EXISTS (SELECT VALUE v FROM v IN re.{field} WHERE v <= '{value}T00:00:00')", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldAppendIsNotNullConditionsToQuery(string field) { var query = new CosmosQuery(CosmosCombinationOperator.And); query.AddCondition(field, DataOperator.IsNotNull, null); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE ARRAY_LENGTH(re.{field}) > 0", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldNotOrderByForCountQuery() { var query = new CosmosQuery(CosmosCombinationOperator.And) .AddCondition("Name", DataOperator.Equals, "some-thing"); var orderByIndex = query.ToString(true).IndexOf(CosmosQueryTestConstants.OrderBy, StringComparison.InvariantCultureIgnoreCase); Assert.AreEqual(-1, orderByIndex); }
public void ThenItShouldHaveAConsistentOrder() { var query = new CosmosQuery(CosmosCombinationOperator.And) .AddCondition("Name", DataOperator.Equals, "some-thing"); var queryOrderBy = query.ToString().Substring(query.ToString().Length - CosmosQueryTestConstants.OrderBy.Length); Assert.AreEqual(CosmosQueryTestConstants.OrderBy, queryOrderBy); }
public void ThenItShouldAppendContainsConditionsToQuery(string field, string value) { var query = new CosmosQuery(CosmosCombinationOperator.And); query.AddCondition(field, DataOperator.Contains, value); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE EXISTS (SELECT VALUE v FROM v IN re.{field} WHERE CONTAINS(v, '{value}'))", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldAppendEqualsConditionsToQuery(string sourceSystemName, string sourceSystemId) { var query = new CosmosQuery(CosmosCombinationOperator.And); query.AddSourceSystemIdCondition(sourceSystemName, sourceSystemId); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE ARRAY_CONTAINS(re.searchableSourceSystemIdentifiers, '{sourceSystemName.ToLower()}:{sourceSystemId.ToLower()}')", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldAppendBetweenConditionsToQuery(string field, string lowerBound, string upperBound) { var query = new CosmosQuery(CosmosCombinationOperator.And); query.AddCondition(field, DataOperator.Between, $"{lowerBound} to {upperBound}"); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE EXISTS (SELECT VALUE v FROM v IN re.{field} WHERE v >= '{lowerBound}T00:00:00' AND v <= '{upperBound}T00:00:00')", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldCombineMultipleConditions(CosmosCombinationOperator @operator, string expectedStringOperator) { var query = new CosmosQuery(@operator) .AddCondition("Name", DataOperator.Equals, "some-thing") .AddCondition("Status", DataOperator.Equals, "Open"); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE ARRAY_CONTAINS(re.searchableName, 'some-thing') {expectedStringOperator} ARRAY_CONTAINS(re.searchableStatus, 'open')", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldNotOffsetLimitForCountQuery() { var query = new CosmosQuery(CosmosCombinationOperator.And) .AddCondition("Name", DataOperator.Equals, "some-thing") .TakeResultsBetween(10, 50); var offsetLimitIndex = query.ToString(true).IndexOf("OFFSET 10 LIMIT 50", StringComparison.InvariantCultureIgnoreCase); Assert.AreEqual(-1, offsetLimitIndex); }
public void ThenItShouldAddOffsetAndLimitToQuery() { var query = new CosmosQuery(CosmosCombinationOperator.And) .AddCondition("Name", DataOperator.Equals, "some-thing") .TakeResultsBetween(10, 50); var expectedOffsetLimit = $"OFFSET 10 LIMIT 50"; Assert.AreEqual(expectedOffsetLimit, query.ToString().Substring(query.ToString().Length - expectedOffsetLimit.Length)); }
public void ThenItShouldAddGroupConditionsInParentheses() { var group = new CosmosQuery(CosmosCombinationOperator.And) .AddCondition("Name", DataOperator.Equals, "some-thing") .AddCondition("Status", DataOperator.Equals, "Open"); var query = new CosmosQuery(CosmosCombinationOperator.And) .AddGroup(group); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE ({CosmosQueryTestConstants.QueryWhereClause(group)})", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldAppendEqualsConditionsToQuery() { var pointInTime = DateTime.SpecifyKind(new DateTime(2020, 8, 21), DateTimeKind.Utc); var query = new CosmosQuery(CosmosCombinationOperator.And) .AddPointInTimeCondition(pointInTime); var expectedPointInTime = "2020-08-21T00:00:00Z"; Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE (re.validFrom <= '{expectedPointInTime}' AND (ISNULL(re.validTo) OR re.validTo >= '{expectedPointInTime}'))", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldMapEntityPropertyNamesToSearchableNames(string field, string searchableField, string value, bool expectValueQuoted, bool expectValueLowercased) { var query = new CosmosQuery(CosmosCombinationOperator.And) .AddCondition(field, DataOperator.Equals, value); var expectedValue = expectValueQuoted ? (expectValueLowercased ? $"'{value.ToLower()}'" : $"'{value}'") : value; Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE ARRAY_CONTAINS(re.{searchableField}, {expectedValue})", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
internal static string QueryWithoutOrderByOrSkip(CosmosQuery query) { var queryText = query.ToString(); var orderByIndex = queryText.IndexOf(OrderBy, StringComparison.InvariantCultureIgnoreCase); if (orderByIndex > -1) { queryText = queryText.Substring(0, orderByIndex).Trim(); } return(queryText); }
public void ThenItShouldCombineMultipleGroups(CosmosCombinationOperator @operator, string expectedStringOperator) { var group1 = new CosmosQuery(CosmosCombinationOperator.Or) .AddCondition("Name", DataOperator.Equals, "some-thing") .AddCondition("Status", DataOperator.Equals, "Open"); var group2 = new CosmosQuery(CosmosCombinationOperator.And) .AddCondition("Name", DataOperator.Equals, "another-thing") .AddCondition("Status", DataOperator.Equals, "Closed"); var query = new CosmosQuery(@operator) .AddGroup(group1) .AddGroup(group2); Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE ({CosmosQueryTestConstants.QueryWhereClause(group1)}) {expectedStringOperator} ({CosmosQueryTestConstants.QueryWhereClause(group2)})", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
public void ThenItShouldAppendInConditionsToQuery(string field, params string[] values) { var query = new CosmosQuery(CosmosCombinationOperator.And); query.AddCondition(field, DataOperator.In, values.Select(v => v.ToString()).Aggregate((x, y) => $"{x}, {y}")); var expectedGroupConditions = new StringBuilder(); foreach (var value in values) { if (expectedGroupConditions.Length > 0) { expectedGroupConditions.Append(" OR "); } expectedGroupConditions.Append($"ARRAY_CONTAINS(re.{field}, '{value}')"); } Assert.AreEqual($"{CosmosQueryTestConstants.QueryPrefix} WHERE ({expectedGroupConditions})", CosmosQueryTestConstants.QueryWithoutOrderByOrSkip(query)); }
static LargeDataController() { _cached = new CosmosQuery <MyItem>(); var items = new List <MyItem>(); for (int i = 0; i < 4600; i++) { items.Add(new MyItem { id = CreateRandomString(7, 8), Name = CreateRandomString(7, 8), FullName = CreateRandomString(18, 8), PrefVendorRef = new Ref { FullName = CreateRandomString(7, 8), ListID = CreateRandomString(3, 2) }, }); } _cached.Documents = items; }