Skip to content

Commit d0ac1c8

Browse files
committed
Fix failing tests as a result of refactoring FieldSelection
1 parent 06027eb commit d0ac1c8

File tree

4 files changed

+39
-16
lines changed

4 files changed

+39
-16
lines changed

src/Nest/CommonAbstractions/SerializationBehavior/StatefulDeserialization/ConcreteTypeConverter.cs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -113,21 +113,16 @@ internal static object GetUsingConcreteTypeConverter<T>(
113113
where T : class
114114
{
115115
var jObject = CreateIntermediateJObject(reader);
116-
object fieldSelection;
117-
var concreteType = GetConcreteTypeUsingSelector(serializer, realConcreteConverter, jObject, out fieldSelection);
116+
var concreteType = GetConcreteTypeUsingSelector(serializer, realConcreteConverter, jObject);
118117
var hit = GetHitTypeInstance(concreteType);
119118
PopulateHit(serializer, jObject.CreateReader(), hit);
120119

121120
Action<object, object> cachedLookup;
122121
if (ConcreteTypeConverter.FieldDelegates.TryGetValue(concreteType, out cachedLookup))
123-
{
124-
cachedLookup(hit, fieldSelection);
125122
return hit;
126-
}
127123

128124
var generic = ConcreteTypeConverter.MakeDelegateMethodInfo.MakeGenericMethod(concreteType);
129125
cachedLookup = (h, f) => generic.Invoke(null, new[] { h, f });
130-
cachedLookup(hit, fieldSelection);
131126
ConcreteTypeConverter.FieldDelegates.TryAdd(concreteType, cachedLookup);
132127
return hit;
133128
}
@@ -149,7 +144,7 @@ private static object GetHitTypeInstance(Type concreteType)
149144
internal static Type GetConcreteTypeUsingSelector<T>(
150145
JsonSerializer serializer,
151146
ConcreteTypeConverter<T> realConcreteConverter,
152-
JObject jObject, out object selection)
147+
JObject jObject)
153148
where T: class
154149
{
155150
var settings = serializer.GetConnectionSettings();
@@ -175,14 +170,6 @@ internal static Type GetConcreteTypeUsingSelector<T>(
175170
hitDynamic.Explanation = d._explanation is Explanation ? d._explanation : null;
176171
object o = d._source ?? DynamicResponse.Create(fieldsDictionary) ?? new object {};
177172
var concreteType = selector(o, hitDynamic);
178-
179-
Type fieldSelectionType;
180-
if (!ConcreteTypeConverter.TypeToFieldTypes.TryGetValue(concreteType, out fieldSelectionType))
181-
{
182-
fieldSelectionType = typeof(FieldValues).MakeGenericType(concreteType);
183-
ConcreteTypeConverter.TypeToFieldTypes.TryAdd(concreteType, fieldSelectionType);
184-
}
185-
selection = fieldSelectionType.CreateInstance(settings, fieldsDictionary);
186173
return concreteType;
187174
}
188175
}

src/Tests/Document/Single/Get/GetApiTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public class GetApiFieldsTests : GetApiTests
4646
{
4747
public GetApiFieldsTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
4848

49+
protected override string UrlPath => $"/project/project/{this.ProjectId}?fields=name%2CnumberOfCommits";
50+
4951
protected override Func<GetDescriptor<Project>, IGetRequest> Fluent => g => g
5052
.Fields(
5153
p => p.Name,
@@ -63,5 +65,7 @@ protected override void ExpectResponse(IGetResponse<Project> response)
6365
response.Fields.ValueOf<Project, string>(p => p.Name).Should().Be(ProjectId);
6466
response.Fields.ValueOf<Project, int>(p => p.NumberOfCommits).Should().BeGreaterThan(0);
6567
}
68+
69+
protected override GetDescriptor<Project> NewDescriptor() => new GetDescriptor<Project>(ProjectId);
6670
}
6771
}

src/Tests/Framework/ApiTestBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ protected virtual void AssertUrl(Uri u)
9999
var expectedUri = new UriBuilder("http", "localhost", Port, path, "?" + query).Uri;
100100

101101
u.AbsolutePath.Should().Be(expectedUri.AbsolutePath);
102-
u = new UriBuilder(u.Scheme, u.Host, u.Port, u.AbsolutePath, u.Query.Replace("pretty=true", "")).Uri;
102+
u = new UriBuilder(u.Scheme, u.Host, u.Port, u.AbsolutePath, u.Query.Replace("pretty=true&", "").Replace("pretty=true", "")).Uri;
103103

104104
var queries = new[] { u.Query, expectedUri.Query };
105105
if (queries.All(string.IsNullOrWhiteSpace)) return;

src/Tests/Search/Search/SearchApiTests.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,38 @@ public class SearchApiFieldsTests : SearchApiTests
105105
{
106106
public SearchApiFieldsTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
107107

108+
protected override object ExpectJson => new
109+
{
110+
from = 10,
111+
size = 20,
112+
query = new
113+
{
114+
match_all = new { }
115+
},
116+
aggs = new
117+
{
118+
startDates = new
119+
{
120+
terms = new
121+
{
122+
field = "startedOn"
123+
}
124+
}
125+
},
126+
post_filter = new
127+
{
128+
term = new
129+
{
130+
state = new
131+
{
132+
value = "Stable"
133+
}
134+
135+
}
136+
},
137+
fields = new[] { "name", "numberOfCommits" }
138+
};
139+
108140
protected override Func<SearchDescriptor<Project>, ISearchRequest> Fluent => s => s
109141
.From(10)
110142
.Size(20)

0 commit comments

Comments
 (0)