public void TranslateSelectExpandClauseWithoutExpandRefOptionShouldWork() { string expandClause = "MyDog($expand=MyPeople/$ref)"; var topLeveItem = new ODataQueryOptionParser(HardCodedTestModel.TestModel, HardCodedTestModel.GetPersonType(), HardCodedTestModel.GetPeopleSet(), new Dictionary <string, string> { { "$expand", expandClause }, { "$select", "" } }).ParseSelectAndExpand(); SelectExpandClauseToStringBuilder translater = new SelectExpandClauseToStringBuilder(); string result = translater.TranslateSelectExpandClause(topLeveItem, false); Assert.Equal("$expand=" + expandClause, result); }
public void TranslateSelectExpandClauseWithNestedApplyShouldWork() { string expandClause = "MyFriendsDogs($apply=aggregate(Weight with sum as Total))"; var topLeveItem = new ODataQueryOptionParser(HardCodedTestModel.TestModel, HardCodedTestModel.GetPersonType(), HardCodedTestModel.GetPeopleSet(), new Dictionary <string, string> { { "$expand", expandClause }, { "$select", "" } }).ParseSelectAndExpand(); SelectExpandClauseToStringBuilder translater = new SelectExpandClauseToStringBuilder(); string result = translater.TranslateSelectExpandClause(topLeveItem, false); Assert.Equal("$expand=" + expandClause, result.Replace("%20", " ")); }
public void TranslateSelectExpandClauseWithoutExpandRefOptionShouldWork() { string expandClause = "MyDog($expand=MyPeople/$ref)"; var topLeveItem = new ODataQueryOptionParser(HardCodedTestModel.TestModel, HardCodedTestModel.GetPersonType(), HardCodedTestModel.GetPeopleSet(), new Dictionary<string, string> { { "$expand", expandClause }, { "$select", "" } }).ParseSelectAndExpand(); SelectExpandClauseToStringBuilder translater = new SelectExpandClauseToStringBuilder(); string result = translater.TranslateSelectExpandClause(topLeveItem, false); Assert.Equal("$expand=" + expandClause, result); }
public Uri BuildUri() { NodeToStringBuilder nodeToStringBuilder = new NodeToStringBuilder(); SelectExpandClauseToStringBuilder selectExpandClauseToStringBuilder = new SelectExpandClauseToStringBuilder(); String queryOptions = String.Empty; bool writeQueryPrefix = true; if (this.odataUri.Filter != null) { queryOptions = WriteQueryPrefixOrSeparator(writeQueryPrefix, queryOptions); writeQueryPrefix = false; queryOptions = string.Concat(queryOptions, "$filter", ExpressionConstants.SymbolEqual, Uri.EscapeDataString(nodeToStringBuilder.TranslateFilterClause(this.odataUri.Filter))); } if (this.odataUri.SelectAndExpand != null) { string result = selectExpandClauseToStringBuilder.TranslateSelectExpandClause(this.odataUri.SelectAndExpand, true); if (!string.IsNullOrEmpty(result)) { queryOptions = WriteQueryPrefixOrSeparator(writeQueryPrefix, queryOptions); writeQueryPrefix = false; queryOptions = string.Concat(queryOptions, result); } } if (this.odataUri.OrderBy != null) { queryOptions = WriteQueryPrefixOrSeparator(writeQueryPrefix, queryOptions); writeQueryPrefix = false; queryOptions = string.Concat(queryOptions, "$orderby", ExpressionConstants.SymbolEqual, Uri.EscapeDataString(nodeToStringBuilder.TranslateOrderByClause(this.odataUri.OrderBy))); } if (this.odataUri.Top != null) { queryOptions = WriteQueryPrefixOrSeparator(writeQueryPrefix, queryOptions); writeQueryPrefix = false; queryOptions = string.Concat(queryOptions, "$top", ExpressionConstants.SymbolEqual, Uri.EscapeDataString(this.odataUri.Top.ToString())); } if (this.odataUri.Skip != null) { queryOptions = WriteQueryPrefixOrSeparator(writeQueryPrefix, queryOptions); writeQueryPrefix = false; queryOptions = string.Concat(queryOptions, "$skip", ExpressionConstants.SymbolEqual, Uri.EscapeDataString(this.odataUri.Skip.ToString())); } if (this.odataUri.QueryCount != null) { queryOptions = WriteQueryPrefixOrSeparator(writeQueryPrefix, queryOptions); writeQueryPrefix = false; queryOptions = string.Concat(queryOptions, "$count", ExpressionConstants.SymbolEqual, Uri.EscapeDataString(this.odataUri.QueryCount == true ? ExpressionConstants.KeywordTrue : ExpressionConstants.KeywordFalse)); } if (this.odataUri.Search != null) { queryOptions = WriteQueryPrefixOrSeparator(writeQueryPrefix, queryOptions); writeQueryPrefix = false; queryOptions = string.Concat(queryOptions, "$search", ExpressionConstants.SymbolEqual, Uri.EscapeDataString(nodeToStringBuilder.TranslateSearchClause(this.odataUri.Search))); } if (this.odataUri.ParameterAliasNodes != null && this.odataUri.ParameterAliasNodes.Count > 0) { string aliasNode = nodeToStringBuilder.TranslateParameterAliasNodes(this.odataUri.ParameterAliasNodes); queryOptions = String.IsNullOrEmpty(aliasNode) ? queryOptions : String.Concat(WriteQueryPrefixOrSeparator(writeQueryPrefix, queryOptions), aliasNode); writeQueryPrefix = false; } string res = String.Concat(this.odataUri.Path.ToResourcePathString(urlConventions), queryOptions); return this.odataUri.ServiceRoot == null ? new Uri(res, UriKind.Relative) : new Uri(this.odataUri.ServiceRoot, new Uri(res, UriKind.Relative)); }