Skip to content

Commit b24805a

Browse files
committed
Serializes format in RangeFilter
Also deserialize format and time_zone Closes #2208
1 parent ea5e741 commit b24805a

File tree

3 files changed

+94
-1
lines changed

3 files changed

+94
-1
lines changed

src/Nest/Resolvers/Converters/Filters/RangeFilterJsonConverter.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s
4646
SerializeProperty(writer, serializer, "gt", f.GreaterThan);
4747
SerializeProperty(writer, serializer, "gte", f.GreaterThanOrEqualTo);
4848
SerializeProperty(writer, serializer, "time_zone", f.TimeZone);
49+
SerializeProperty(writer, serializer, "format", f.Format);
4950
}
5051
writer.WriteEndObject();
5152

@@ -102,7 +103,15 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
102103
var lt = jv.Value["lt"];
103104
if (lt != null)
104105
filter.LowerThan = ToString(lt);
105-
106+
107+
var format = jv.Value["format"];
108+
if (format != null)
109+
filter.Format = ToString(format);
110+
111+
var timezone = jv.Value["time_zone"];
112+
if (timezone != null)
113+
filter.TimeZone = ToString(timezone);
114+
106115
break;
107116
}
108117
}

src/Tests/Nest.Tests.Unit/Nest.Tests.Unit.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,7 @@
431431
<Compile Include="Reproduce\Reproduce1528Tests.cs" />
432432
<Compile Include="Reproduce\Reproduce1464Tests.cs" />
433433
<Compile Include="Reproduce\Reproduce1427Tests.cs" />
434+
<Compile Include="Reproduce\Reproduce2208Tests.cs" />
434435
<Compile Include="Reproduce\Reproduce629Tests.cs" />
435436
<Compile Include="Reproduce\Reproduce1187Tests.cs" />
436437
<Compile Include="Reproduce\Reproduce901Tests.cs" />
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
using System;
2+
using System.IO;
3+
using System.Linq;
4+
using System.Text;
5+
using Elasticsearch.Net.Serialization;
6+
using NUnit.Framework;
7+
8+
namespace Nest.Tests.Unit.Reproduce
9+
{
10+
[TestFixture]
11+
public class Reproduce2208Tests : BaseJsonTests
12+
{
13+
[Test]
14+
public void SerializesFormat()
15+
{
16+
var weight = 1;
17+
var earliestDate = new DateTime(2016,1,1);
18+
var farthestDate = new DateTime(2016,8,1);
19+
20+
var function = new FunctionScoreFunction<GroupListSearchDataContract>()
21+
.Weight(weight)
22+
.Filter(fi => fi
23+
.Bool(b => b
24+
.Should(s => s
25+
.Range(r => r
26+
.OnField(f => f.RoleCriteria.TargetMoveIn)
27+
.GreaterOrEquals(earliestDate)
28+
.LowerOrEquals(farthestDate)
29+
.Format("yyyy-MM-dd'T'HH:mm:ss.SSS")
30+
)
31+
)
32+
)
33+
);
34+
35+
var bytes = _client.Serializer.Serialize(function);
36+
var json = Encoding.UTF8.GetString(bytes);
37+
Assert.IsTrue(json.Contains("\"format\""));
38+
}
39+
40+
[Test]
41+
public void DeserializesFormatAndTimezone()
42+
{
43+
var json = @"{
44+
""filter"": {
45+
""bool"": {
46+
""should"": [
47+
{
48+
""range"": {
49+
""roleCriteria.targetMoveIn"": {
50+
""lte"": ""2016-08-01T00:00:00.000"",
51+
""gte"": ""2016-01-01T00:00:00.000"",
52+
""format"": ""yyyy-MM-dd'T'HH:mm:ss.SSS"",
53+
""time_zone"": ""+10:00""
54+
}
55+
}
56+
}
57+
]
58+
}
59+
},
60+
""weight"": 1.0
61+
}";
62+
63+
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
64+
{
65+
var deserializedFunction = _client.Serializer.Deserialize<IFunctionScoreFunction>(stream);
66+
var rangeFilter = ((IFilterContainer)deserializedFunction.Filter).Bool.Should.First().Range;
67+
68+
Assert.IsNotNullOrEmpty(rangeFilter.Format);
69+
Assert.IsNotNullOrEmpty(rangeFilter.TimeZone);
70+
}
71+
}
72+
73+
public class GroupListSearchDataContract
74+
{
75+
public RoleCriteria RoleCriteria { get; set; }
76+
}
77+
78+
public class RoleCriteria
79+
{
80+
public DateTime TargetMoveIn { get; set; }
81+
}
82+
}
83+
}

0 commit comments

Comments
 (0)