Skip to content

Commit 4cce869

Browse files
JoshuaFolkertsManhOptimizely
authored andcommitted
Adding alias as a field options
Adding another method to support passing in an alias for a field. Would like to keep it normal and minimal as possible so passing in another property is better than extension method on a string Adding test for alias
1 parent 46ab118 commit 4cce869

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

APIs/src/EpiServer.ContentGraph/Api/Querying/TypeQueryBuilder.cs

+7
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ public TypeQueryBuilder<T> Field(Expression<Func<T, object>> fieldSelector)
6161
Field(propertyName);
6262
return this;
6363
}
64+
public TypeQueryBuilder<T> Field(Expression<Func<T, object>> fieldSelector, string alias)
65+
{
66+
fieldSelector.ValidateNotNullArgument("fieldSelector");
67+
var propertyName = fieldSelector.GetFieldPath();
68+
Field($"{alias}:{propertyName}");
69+
return this;
70+
}
6471
public TypeQueryBuilder<T> Fields(params Expression<Func<T, object>>[] fieldSelectors)
6572
{
6673
fieldSelectors.ValidateNotNullArgument("fieldSelectors");

APIs/src/Testing/EpiServer.ContentGraph.UnitTests/GenerateQueryTests.cs

+25-5
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,20 @@ namespace EPiServer.ContentGraph.UnitTests
1010
{
1111
public class GenerateQueryTests
1212
{
13-
TypeQueryBuilder<RequestTypeObject> typeQueryBuilder;
13+
private TypeQueryBuilder<RequestTypeObject> typeQueryBuilder;
14+
1415
public GenerateQueryTests()
1516
{
1617
typeQueryBuilder = new TypeQueryBuilder<RequestTypeObject>();
1718
}
19+
1820
[Fact]
1921
public void SelectNoneOfFieldsShouldThrowException()
2022
{
2123
typeQueryBuilder.Limit(100).Skip(0);
2224
Assert.Throws<ArgumentNullException>(() => typeQueryBuilder.ToQuery());
2325
}
26+
2427
[Fact]
2528
public void SelectFields()
2629
{
@@ -33,6 +36,20 @@ public void SelectFields()
3336
Assert.Contains(expectedFields, query.GetQuery().Query);
3437
query = query.BuildQueries();
3538
}
39+
40+
[Fact]
41+
public void SelectFieldWithAlias()
42+
{
43+
string expectedFields = @"{items{property1:Property1 property2:Property2}}";
44+
typeQueryBuilder.Field(x => x.Property1, "property1").Field(x => x.Property2, "property2");
45+
GraphQueryBuilder query = typeQueryBuilder.ToQuery();
46+
47+
Assert.NotNull(query.GetQuery());
48+
//check selected fields
49+
Assert.Contains(expectedFields, query.GetQuery().Query);
50+
query = query.BuildQueries();
51+
}
52+
3653
[Fact]
3754
public void SelectNestedFields()
3855
{
@@ -49,7 +66,7 @@ public void SelectNestedFields()
4966
}
5067

5168
[Theory]
52-
[InlineData(0,100)]
69+
[InlineData(0, 100)]
5370
[InlineData(0, int.MaxValue)]
5471
public void QueryWithPaging(int skip, int limit)
5572
{
@@ -86,6 +103,7 @@ public void FacetsQuery()
86103
Assert.Contains(expectedFields, query.GetQuery().Query);
87104
Assert.Equal($"RequestTypeObject{{{expectedFields} {expectedFacets}}}", query.GetQuery().Query);
88105
}
106+
89107
[Fact]
90108
public void FacetsQueryWithFilter()
91109
{
@@ -129,6 +147,7 @@ public void AutocompleteQuery()
129147
Assert.Contains(expectedAutoComplete, query.GetQuery().Query);
130148
Assert.Equal($"RequestTypeObject{{{expectedFields} {expectedFacets} {expectedAutoComplete}}}", query.GetQuery().Query);
131149
}
150+
132151
[Fact]
133152
public void SubtypeQueryTests()
134153
{
@@ -150,6 +169,7 @@ public void SubtypeQueryTests()
150169
Assert.Contains(expectedFields, query.GetQuery().Query);
151170
Assert.Equal($"RequestTypeObject{{{expectedFields} {expectedFacets}}}", query.GetQuery().Query);
152171
}
172+
153173
[Fact]
154174
public void LinkQueryTests()
155175
{
@@ -158,8 +178,8 @@ public void LinkQueryTests()
158178
string expectedFacets = @"facets{Property3{NestedProperty{name count}}}";
159179
TypeQueryBuilder<SubTypeObject> linkQuery = new TypeQueryBuilder<SubTypeObject>()
160180
.Field(x => x.SubProperty)
161-
.Where(x=>x.SubProperty, new StringFilterOperators().Match("test"))
162-
.Facet(x=>x.Property3);
181+
.Where(x => x.SubProperty, new StringFilterOperators().Match("test"))
182+
.Facet(x => x.Property3);
163183

164184
typeQueryBuilder
165185
.Field(x => x.Property1)
@@ -195,7 +215,7 @@ public void Multiple_types_query()
195215
.ToQuery()
196216
.BuildQueries();
197217
}
198-
218+
199219
var query = graphQueryBuilder.GetQuery();
200220
Assert.Contains(expectedQuery1, query.Query);
201221
Assert.Contains(expectedQuery2, query.Query);

0 commit comments

Comments
 (0)