Newer
Older

Konrad Mohrfeldt
committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { beforeEach, describe, expect, test } from 'vitest'
import { useRRuleLabel } from '@/stores/rrules'
import { useI18n } from '@/i18n'
describe('rrules', () => {
describe('useRRuleLabel', () => {
beforeEach(() => {
const { locale } = useI18n()
locale.value = 'en'
})
test('Returns the rrule string as title attribute', () => {
const { attrs } = useRRuleLabel({ freq: 1, interval: 1, byWeekdays: [2] })
expect(attrs.value?.title).toBe('RRULE:FREQ=MONTHLY;BYDAY=WE;INTERVAL=1')
})
test('Returns a natural language representation as the label', () => {
expect(useRRuleLabel({ freq: 0, count: 1 }).label.value).toBe('once')
expect(useRRuleLabel({ freq: 3, interval: 1 }).label.value).toBe('every day')
expect(useRRuleLabel({ freq: 2, interval: 1, byWeekdays: [0, 1, 2, 3, 4] }).label.value).toBe(
'every week on business days',
)
expect(useRRuleLabel({ freq: 2, interval: 1, byWeekdays: [0] }).label.value).toBe(
'every week on Monday',
)
expect(useRRuleLabel({ freq: 2, interval: 2, byWeekdays: [0] }).label.value).toBe(
'every 2 weeks on Monday',
)
expect(useRRuleLabel({ freq: 2, interval: 4, byWeekdays: [0] }).label.value).toBe(
'every 4 weeks on Monday',
)
expect(
useRRuleLabel({ freq: 1, interval: 1, bySetPos: 1, byWeekdays: [0] }).label.value,
).toBe('every month on the first Monday')
expect(
useRRuleLabel({ freq: 1, interval: 1, bySetPos: 2, byWeekdays: [0] }).label.value,
).toBe('every month on the second Monday')
expect(
useRRuleLabel({ freq: 1, interval: 1, bySetPos: 3, byWeekdays: [0] }).label.value,
).toBe('every month on the third Monday')
expect(
useRRuleLabel({ freq: 1, interval: 1, bySetPos: 4, byWeekdays: [0] }).label.value,
).toBe('every month on the fourth Monday')
expect(
useRRuleLabel({ freq: 1, interval: 1, bySetPos: 5, byWeekdays: [0] }).label.value,
).toBe('every month on the fifth Monday')
expect(
useRRuleLabel({ freq: 1, interval: 1, bySetPos: -1, byWeekdays: [0] }).label.value,
).toBe('every month on the last Monday')
expect(
useRRuleLabel({ freq: 1, interval: 2, bySetPos: 5, byWeekdays: [0] }).label.value,
).toBe('every 2 months on the fifth Monday')
expect(
useRRuleLabel({ freq: 1, interval: 2, bySetPos: 5, byWeekdays: [0, 1, 2, 3, 4] }).label
.value,
).toBe('every 2 months on the fifth business day')
expect(
useRRuleLabel({ freq: 1, interval: 2, bySetPos: 5, byWeekdays: [3, 4] }).label.value,
).toBe('every 2 months on the fifth Thursday')
expect(
useRRuleLabel({ freq: 1, interval: 2, bySetPos: -1, byWeekdays: [3, 4] }).label.value,
).toBe('every 2 months on the last Friday')
expect(useRRuleLabel({ freq: 2, interval: 1, byWeekdays: [0, 1, 2, 3, 4] }).label.value).toBe(
'every week on business days',
)
expect(useRRuleLabel({ freq: 2, interval: 1, byWeekdays: [5, 6] }).label.value).toBe(
'every week on Saturday, and Sunday',
)
})
})
})