getInternalModifiers.test.ts
4.34 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
import { addDays } from 'date-fns';
import { DayPickerContextValue } from 'contexts/DayPicker';
import { getDefaultContextValues } from 'contexts/DayPicker/defaultContextValues';
import { SelectRangeContextValue } from 'contexts/SelectRange';
import { InternalModifier, InternalModifiers } from 'types/Modifiers';
import { getInternalModifiers } from './getInternalModifiers';
const defaultDayPickerContext: DayPickerContextValue =
getDefaultContextValues();
const defaultSelectMultipleContext = {
selected: undefined,
modifiers: { disabled: [] }
};
const defaultSelectRangeContext = {
selected: undefined,
modifiers: {
disabled: [],
range_start: [],
range_end: [],
range_middle: []
}
};
const { Selected, Disabled, Hidden, Today, RangeEnd, RangeMiddle, RangeStart } =
InternalModifier;
const internalModifiers = [Selected, Disabled, Hidden, Today];
test.each(internalModifiers)(
'should transform to array the modifiers from the "%s" prop',
(propName) => {
const value = new Date();
const modifiers = getInternalModifiers(
{ ...defaultDayPickerContext, [propName]: value },
defaultSelectMultipleContext,
defaultSelectRangeContext
);
expect(modifiers[propName]).toStrictEqual([value]);
}
);
describe('when navigation is limited by "fromDate"', () => {
const fromDate = new Date();
const dayPickerContext: DayPickerContextValue = {
...defaultDayPickerContext,
fromDate
};
test('should add a "before" matcher to the "disabled" modifiers', () => {
const modifiers = getInternalModifiers(
dayPickerContext,
defaultSelectMultipleContext,
defaultSelectRangeContext
);
expect(modifiers.disabled).toStrictEqual([{ before: fromDate }]);
});
});
describe('when navigation is limited by "toDate"', () => {
const toDate = new Date();
const dayPickerContext: DayPickerContextValue = {
...defaultDayPickerContext,
toDate
};
test('should add an "after" matcher to the "disabled" modifiers', () => {
const modifiers = getInternalModifiers(
dayPickerContext,
defaultSelectMultipleContext,
defaultSelectRangeContext
);
expect(modifiers.disabled).toStrictEqual([{ after: toDate }]);
});
});
describe('when in multiple select mode', () => {
const disabledDate = new Date();
const dayPickerContext: DayPickerContextValue = {
...defaultDayPickerContext,
mode: 'multiple'
};
const selectMultipleContext = {
...defaultSelectMultipleContext,
modifiers: {
[Disabled]: [disabledDate]
}
};
test('should add the disabled modifier from the select multiple context', () => {
const modifiers = getInternalModifiers(
dayPickerContext,
selectMultipleContext,
defaultSelectRangeContext
);
expect(modifiers.disabled).toStrictEqual([disabledDate]);
});
});
describe('when in range select mode', () => {
const disabled = [new Date()];
const rangeStart = new Date();
const rangeMiddle = [addDays(rangeStart, 1), addDays(rangeStart, 2)];
const rangeEnd = [addDays(rangeStart, 3)];
const dayPickerContext: DayPickerContextValue = {
...defaultDayPickerContext,
mode: 'range'
};
const selectRangeContext: SelectRangeContextValue = {
...defaultSelectRangeContext,
modifiers: {
[Disabled]: [disabled],
[RangeStart]: [rangeStart],
[RangeEnd]: rangeEnd,
[RangeMiddle]: rangeMiddle
}
};
let internalModifiers: InternalModifiers;
beforeEach(() => {
internalModifiers = getInternalModifiers(
dayPickerContext,
defaultSelectMultipleContext,
selectRangeContext
);
});
test('should add the Disabled modifier from the SelectRange context', () => {
expect(internalModifiers[Disabled]).toStrictEqual(
selectRangeContext.modifiers[Disabled]
);
});
test('should add the RangeStart modifier from the SelectRange context', () => {
expect(internalModifiers[RangeStart]).toStrictEqual(
selectRangeContext.modifiers[RangeStart]
);
});
test('should add the RangeEnd modifier from the SelectRange context', () => {
expect(internalModifiers[RangeEnd]).toStrictEqual(
selectRangeContext.modifiers[RangeEnd]
);
});
test('should add the RangeMiddle modifier from the SelectRange context', () => {
expect(internalModifiers[RangeMiddle]).toStrictEqual(
selectRangeContext.modifiers[RangeMiddle]
);
});
});