devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
91 lines (90 loc) • 3.38 kB
JavaScript
/**
* DevExtreme (esm/__internal/scheduler/recurrence/validate_rule.test.js)
* Version: 25.2.5
* Build date: Fri Feb 20 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
describe,
expect,
it
} from "@jest/globals";
import {
parseRecurrenceRule
} from "./base";
import {
validateRRule,
validateRRuleObject
} from "./validate_rule";
describe("validateRRule", (() => {
it("should return true for valid rule", (() => {
const isValid = validateRRule("FREQ=MONTHLY");
expect(isValid).toBe(true)
}));
it("should return false for undefined rule", (() => {
const isValid = validateRRule(void 0);
expect(isValid).toBe(false)
}));
it("should return false for incorrect freq", (() => {
const isValid = validateRRule("FREQ=WRONG");
expect(isValid).toBe(false)
}));
it("should return false for wrong rule name", (() => {
const isValid = validateRRule("FRE=DAILY");
expect(isValid).toBe(false)
}));
it("should return true and correct parsed rule for wrong count", (() => {
const rule = "FREQ=DAILY;COUNT=wrong";
const parsed = parseRecurrenceRule(rule);
const isValid = validateRRuleObject(parsed, rule);
expect(parsed).toEqual({
freq: "DAILY",
interval: 1
});
expect(isValid).toBe(true)
}));
it("should return true and correct parsed rule for wrong interval", (() => {
const rule = "FREQ=DAILY;INTERVAL=wrong";
const parsed = parseRecurrenceRule(rule);
const isValid = validateRRuleObject(parsed, rule);
expect(parsed).toEqual({
freq: "DAILY",
interval: 1
});
expect(isValid).toBe(true)
}));
it("should return false for wrong byDay", (() => {
const isValid = validateRRule("FREQ=DAILY;BYDAY=wrong");
expect(isValid).toBe(false)
}));
it("should return false for empty byDay", (() => {
const isValid = validateRRule("FREQ=DAILY;BYDAY=");
expect(isValid).toBe(false)
}));
it("should return false for wrong byDay, several value", (() => {
const isValid = validateRRule("FREQ=DAILY;BYDAY=MO,wrong");
expect(isValid).toBe(false)
}));
it("should return false for wrong byMonthDay", (() => {
const isValid = validateRRule("FREQ=MONTHLY;BYMONTHDAY=wrong");
expect(isValid).toBe(false)
}));
it("should return false for wrong byMonth", (() => {
const isValid = validateRRule("FREQ=YEARLY;BYMONTH=wrong;BYMONTHDAY=12");
expect(isValid).toBe(false)
}));
it("should return false for wrong until date", (() => {
const isValid = validateRRule("FREQ=DAILY;UNTIL=wrong");
expect(isValid).toBe(false)
}));
it("should return true if byDay has frequence for day", (() => {
const isValid = validateRRule("FREQ=MONTHLY;BYDAY=1TU");
expect(isValid).toBe(true)
}));
it("should return true if byDay has frequence for day", (() => {
const isValid = validateRRule("FREQ=MONTHLY;BYDAY=1TU,3FR");
expect(isValid).toBe(true)
}))
}));