Skip to content

Commit 5ea8a28

Browse files
authored
Fix weekly schedule deserialisation (#5743)
1 parent 73b318a commit 5ea8a28

File tree

5 files changed

+100
-14
lines changed

5 files changed

+100
-14
lines changed

src/Nest/XPack/Watcher/Schedule/Day.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,25 @@ namespace Nest
1111
[StringEnum]
1212
public enum Day
1313
{
14-
[EnumMember(Value = "sunday")]
14+
[EnumMember(Value = "SUN")]
1515
Sunday,
1616

17-
[EnumMember(Value = "monday")]
17+
[EnumMember(Value = "MON")]
1818
Monday,
1919

20-
[EnumMember(Value = "tuesday")]
20+
[EnumMember(Value = "TUE")]
2121
Tuesday,
2222

23-
[EnumMember(Value = "wednesday")]
23+
[EnumMember(Value = "WED")]
2424
Wednesday,
2525

26-
[EnumMember(Value = "thursday")]
26+
[EnumMember(Value = "THU")]
2727
Thursday,
2828

29-
[EnumMember(Value = "friday")]
29+
[EnumMember(Value = "FRI")]
3030
Friday,
3131

32-
[EnumMember(Value = "saturday")]
32+
[EnumMember(Value = "SAT")]
3333
Saturday
3434
}
3535
}

src/Nest/XPack/Watcher/Watch.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
namespace Nest
1111
{
1212
[InterfaceDataContract]
13-
[ReadAsAttribute(typeof(Watch))]
13+
[ReadAs(typeof(Watch))]
1414
public interface IWatch
1515
{
1616
[DataMember(Name ="actions")]
@@ -101,6 +101,5 @@ public WatchDescriptor Transform(Func<TransformDescriptor, TransformContainer> s
101101
/// <inheritdoc cref="IWatch.Trigger" />
102102
public WatchDescriptor Trigger(Func<TriggerDescriptor, TriggerContainer> selector) =>
103103
Assign(selector, (a, v) => a.Trigger = v.InvokeOrDefault(new TriggerDescriptor()));
104-
105104
}
106105
}

tests/Tests/XPack/Watcher/PutWatch/PutWatchApiTests.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ public PutWatchApiTests(WatcherCluster cluster, EndpointUsage usage) : base(clus
193193
{
194194
weekly = new[]
195195
{
196-
new { on = new[] { "monday" }, at = new[] { "noon" } },
197-
new { on = new[] { "friday" }, at = new[] { "17:00" } }
196+
new { on = new[] { "MON" }, at = new[] { "noon" } },
197+
new { on = new[] { "FRI" }, at = new[] { "17:00" } }
198198
}
199199
}
200200
},
@@ -897,8 +897,8 @@ public PutWatchApiWithMultipleExpandWildcardsTests(WatcherCluster cluster, Endpo
897897
{
898898
weekly = new[]
899899
{
900-
new { on = new[] { "monday" }, at = new[] { "noon" } },
901-
new { on = new[] { "friday" }, at = new[] { "17:00" } }
900+
new { on = new[] { "MON" }, at = new[] { "noon" } },
901+
new { on = new[] { "FRI" }, at = new[] { "17:00" } }
902902
}
903903
}
904904
},

tests/Tests/XPack/Watcher/WatcherCluster.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
namespace Tests.XPack.Watcher
88
{
9+
/// <summary>
10+
/// Used to isolate watcher tests within their own cluster.
11+
/// </summary>
912
public class WatcherCluster : XPackCluster
1013
{
11-
1214
}
1315
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
// Licensed to Elasticsearch B.V under one or more agreements.
2+
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3+
// See the LICENSE file in the project root for more information
4+
5+
using System.Threading.Tasks;
6+
using Elastic.Elasticsearch.Xunit.XunitPlumbing;
7+
using Nest;
8+
using Tests.Framework.EndpointTests;
9+
using Tests.Framework.EndpointTests.TestState;
10+
using FluentAssertions;
11+
using Tests.Core.Extensions;
12+
13+
namespace Tests.XPack.Watcher
14+
{
15+
public class WatcherWeeklyScheduleoCoordinatedTests : CoordinatedIntegrationTestBase<WatcherCluster>
16+
{
17+
private const string CreateWeeklyScheduleWatcher = nameof(CreateWeeklyScheduleWatcher);
18+
private const string GetWeeklyScheduleWatcher = nameof(GetWeeklyScheduleWatcher);
19+
private const string DeleteWeeklyScheduleWatcher = nameof(DeleteWeeklyScheduleWatcher);
20+
21+
public WatcherWeeklyScheduleoCoordinatedTests(WatcherCluster cluster, EndpointUsage usage) : base(new CoordinatedUsage(cluster, usage)
22+
{
23+
{CreateWeeklyScheduleWatcher, u =>
24+
u.Calls<PutWatchDescriptor, PutWatchRequest, IPutWatchRequest, PutWatchResponse>(
25+
v => new PutWatchRequest(v){
26+
Trigger = new ScheduleContainer
27+
{
28+
Weekly = new WeeklySchedule
29+
{
30+
new TimeOfWeek(Day.Monday, "17:00"),
31+
new TimeOfWeek(Day.Tuesday, "17:00"),
32+
new TimeOfWeek(Day.Wednesday, "17:00"),
33+
new TimeOfWeek(Day.Thursday, "17:00"),
34+
new TimeOfWeek(Day.Friday, "17:00"),
35+
new TimeOfWeek(Day.Saturday, "17:00"),
36+
new TimeOfWeek(Day.Sunday, "17:00"),
37+
}
38+
}},
39+
(v, d) => d.Trigger(t => t.Schedule(s => s.Weekly(w => w
40+
.Add(tow => tow.On(Day.Monday).At("17:00"))
41+
.Add(tow => tow.On(Day.Tuesday).At("17:00"))
42+
.Add(tow => tow.On(Day.Wednesday).At("17:00"))
43+
.Add(tow => tow.On(Day.Thursday).At("17:00"))
44+
.Add(tow => tow.On(Day.Friday).At("17:00"))
45+
.Add(tow => tow.On(Day.Saturday).At("17:00"))
46+
.Add(tow => tow.On(Day.Sunday).At("17:00"))
47+
))),
48+
(v, c, f) => c.Watcher.Put(v, f),
49+
(v, c, f) => c.Watcher.PutAsync(v, f),
50+
(v, c, r) => c.Watcher.Put(r),
51+
(v, c, r) => c.Watcher.PutAsync(r)
52+
)
53+
},
54+
{GetWeeklyScheduleWatcher, u =>
55+
u.Calls<GetWatchDescriptor, GetWatchRequest, IGetWatchRequest, GetWatchResponse>(
56+
v => new GetWatchRequest(v),
57+
(v, d) => d,
58+
(v, c, f) => c.Watcher.Get(v, f),
59+
(v, c, f) => c.Watcher.GetAsync(v, f),
60+
(v, c, r) => c.Watcher.Get(r),
61+
(v, c, r) => c.Watcher.GetAsync(r)
62+
)
63+
},
64+
{DeleteWeeklyScheduleWatcher, u =>
65+
u.Calls<DeleteWatchDescriptor, DeleteWatchRequest, IDeleteWatchRequest, DeleteWatchResponse>(
66+
v => new DeleteWatchRequest(v),
67+
(v, d) => d,
68+
(v, c, f) => c.Watcher.Delete(v, f),
69+
(v, c, f) => c.Watcher.DeleteAsync(v, f),
70+
(v, c, r) => c.Watcher.Delete(r),
71+
(v, c, r) => c.Watcher.DeleteAsync(r)
72+
)
73+
}
74+
})
75+
{ }
76+
77+
[I] public async Task GetWeeklyScheduleWatcherResponse() => await Assert<GetWatchResponse>(GetWeeklyScheduleWatcher, (v, r) =>
78+
{
79+
r.ShouldBeValid();
80+
r.Id.Should().Be(v);
81+
r.Found.Should().BeTrue();
82+
r.Watch.Trigger.Should().BeAssignableTo<ITriggerContainer>().Subject.Schedule.Weekly.Should().NotBeNullOrEmpty().And.HaveCount(7);
83+
});
84+
}
85+
}

0 commit comments

Comments
 (0)