Skip to content

Commit a11892a

Browse files
committed
test: add tests for new cron v4 bindings
Test nextDate, isActive, and validateCronExpression.
1 parent 033f4fe commit a11892a

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

__tests__/CronJob_tests.res

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,50 @@ describe("changing CronJobs", () => {
175175

176176
expect(LuxonDateTime.toMillis(nextTick))->toEqual(LuxonDateTime.toMillis(nextAssumedTick))
177177
})
178+
179+
test("nextDate returns the next single date", () => {
180+
let onTick = _ => ()
181+
182+
RescriptJestDateMock.advanceTo(Date.fromString("2010-01-01T12:00:00.000Z"))
183+
184+
let job = RescriptCron.CronJob.make(#JsDate(Date.fromString(futureDate)), onTick, ())
185+
let time = RescriptCron.CronTime.make(#CronString("0 0 12 20 jan *"), ())
186+
187+
let nextAssumedTick =
188+
LuxonDateTime.fromISO("2010-01-01T12:00:00.000Z")->LuxonDateTime.set({day: 20, hour: 12})
189+
190+
RescriptCron.setTime(job, time)
191+
192+
let nextTick = RescriptCron.nextDate(job)
193+
194+
expect(LuxonDateTime.toMillis(nextTick))->toEqual(LuxonDateTime.toMillis(nextAssumedTick))
195+
})
196+
197+
test("isActive reflects job start and stop state", () => {
198+
let onTick = _ => ()
199+
200+
RescriptJestDateMock.advanceTo(Date.fromString(pastDate))
201+
202+
let job = RescriptCron.CronJob.make(#JsDate(Date.fromString(futureDate)), onTick, ())
203+
204+
expect(RescriptCron.isActive(job))->toEqual(false)->ignore
205+
206+
RescriptCron.start(job)
207+
expect(RescriptCron.isActive(job))->toEqual(true)->ignore
208+
209+
RescriptCron.stop(job)
210+
expect(RescriptCron.isActive(job))->toEqual(false)
211+
})
212+
})
213+
214+
describe("validateCronExpression", () => {
215+
test("returns valid for a correct cron expression", () => {
216+
let result = RescriptCron.validateCronExpression("0 0 * * *")
217+
expect(result.valid)->toEqual(true)
218+
})
219+
220+
test("returns invalid for a malformed cron expression", () => {
221+
let result = RescriptCron.validateCronExpression("not-a-cron")
222+
expect(result.valid)->toEqual(false)
223+
})
178224
})

0 commit comments

Comments
 (0)