Skip to content

Commit 699c871

Browse files
author
Wanasit Tanakitrungruang
committedSep 25, 2021
Fix: ForwardRefiner to activate on the same weekday
1 parent a6631ed commit 699c871

File tree

2 files changed

+50
-26
lines changed

2 files changed

+50
-26
lines changed
 

Diff for: ‎src/common/refiners/ForwardDateRefiner.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default class ForwardDateRefiner implements Refiner {
3434
}
3535

3636
if (result.start.isOnlyWeekdayComponent() && refMoment.isAfter(result.start.dayjs())) {
37-
if (refMoment.day() > result.start.get("weekday")) {
37+
if (refMoment.day() >= result.start.get("weekday")) {
3838
refMoment = refMoment.day(result.start.get("weekday") + 7);
3939
} else {
4040
refMoment = refMoment.day(<number>result.start.get("weekday"));

Diff for: ‎test/en/en_weekday.test.ts

+49-25
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,6 @@ test("Test - Single Expression", function () {
2020
expect(result.start).toBeDate(new Date(2012, 7, 6, 12));
2121
});
2222

23-
testSingleCase(
24-
chrono.casual,
25-
"Monday (forward dates only)",
26-
new Date(2012, 7, 9),
27-
{ forwardDate: true },
28-
(result) => {
29-
expect(result.index).toBe(0);
30-
expect(result.text).toBe("Monday");
31-
32-
expect(result.start).not.toBeNull();
33-
expect(result.start.get("year")).toBe(2012);
34-
expect(result.start.get("month")).toBe(8);
35-
expect(result.start.get("day")).toBe(13);
36-
expect(result.start.get("weekday")).toBe(1);
37-
38-
expect(result.start.isCertain("day")).toBe(false);
39-
expect(result.start.isCertain("month")).toBe(false);
40-
expect(result.start.isCertain("year")).toBe(false);
41-
expect(result.start.isCertain("weekday")).toBe(true);
42-
43-
expect(result.start).toBeDate(new Date(2012, 7, 13, 12));
44-
}
45-
);
46-
4723
testSingleCase(chrono.casual, "Thursday", new Date(2012, 7, 9), (result) => {
4824
expect(result.index).toBe(0);
4925
expect(result.text).toBe("Thursday");
@@ -182,7 +158,31 @@ test("Test - Weekday Overlap", function () {
182158
});
183159
});
184160

185-
test("Test - forward dates only option", function () {
161+
test("Test - forward dates only option", () => {
162+
testSingleCase(
163+
chrono.casual,
164+
"Monday (forward dates only)",
165+
new Date(2012, 7, 9),
166+
{ forwardDate: true },
167+
(result) => {
168+
expect(result.index).toBe(0);
169+
expect(result.text).toBe("Monday");
170+
171+
expect(result.start).not.toBeNull();
172+
expect(result.start.get("year")).toBe(2012);
173+
expect(result.start.get("month")).toBe(8);
174+
expect(result.start.get("day")).toBe(13);
175+
expect(result.start.get("weekday")).toBe(1);
176+
177+
expect(result.start.isCertain("day")).toBe(false);
178+
expect(result.start.isCertain("month")).toBe(false);
179+
expect(result.start.isCertain("year")).toBe(false);
180+
expect(result.start.isCertain("weekday")).toBe(true);
181+
182+
expect(result.start).toBeDate(new Date(2012, 7, 13, 12));
183+
}
184+
);
185+
186186
testSingleCase(
187187
chrono.casual,
188188
"this Friday to this Monday",
@@ -219,4 +219,28 @@ test("Test - forward dates only option", function () {
219219
expect(result.end).toBeDate(new Date(2016, 8 - 1, 8, 12));
220220
}
221221
);
222+
223+
testSingleCase(
224+
chrono.casual,
225+
"sunday morning",
226+
new Date("August 15, 2021, 20:00"),
227+
{ forwardDate: true },
228+
(result) => {
229+
expect(result.index).toBe(0);
230+
expect(result.text).toBe("sunday morning");
231+
232+
expect(result.start).not.toBeNull();
233+
expect(result.start.get("year")).toBe(2021);
234+
expect(result.start.get("month")).toBe(8);
235+
expect(result.start.get("day")).toBe(22);
236+
expect(result.start.get("weekday")).toBe(0);
237+
238+
expect(result.start.isCertain("day")).toBe(false);
239+
expect(result.start.isCertain("month")).toBe(false);
240+
expect(result.start.isCertain("year")).toBe(false);
241+
expect(result.start.isCertain("weekday")).toBe(true);
242+
243+
expect(result.start).toBeDate(new Date(2021, 8 - 1, 22, 6));
244+
}
245+
);
222246
});

0 commit comments

Comments
 (0)
Please sign in to comment.