Skip to content

Commit 5b96391

Browse files
committed
test: Update test coverage
1 parent c3e82b7 commit 5b96391

File tree

5 files changed

+35
-50
lines changed

5 files changed

+35
-50
lines changed

src/generate/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ export interface GenerateConfig<DateType> {
1616
setYear: (value: DateType, year: number) => DateType;
1717
setMonth: (value: DateType, month: number) => DateType;
1818
setDate: (value: DateType, date: number) => DateType;
19-
setWeekDay: (value: DateType, day: number) => DateType;
2019
setHour: (value: DateType, hour: number) => DateType;
2120
setMinute: (value: DateType, minute: number) => DateType;
2221
setSecond: (value: DateType, second: number) => DateType;

src/generate/moment.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,6 @@ const generateConfig: GenerateConfig<Moment> = {
3939
clone.month(month);
4040
return clone;
4141
},
42-
setWeekDay: (date, day) => {
43-
const clone = date.clone();
44-
clone.locale('en_US');
45-
clone.weekday(day);
46-
return clone;
47-
},
4842
setDate: (date, num) => {
4943
const clone = date.clone();
5044
clone.date(num);

src/hooks/useWeekDisabled.ts

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,6 @@ export default function useWeekDisabled<DateType>({
1414
const disabledCache = React.useMemo(() => new Map<string, boolean>(), [
1515
disabledDate,
1616
]);
17-
const firstDay = React.useMemo(
18-
() => generateConfig.locale.getWeekFirstDay(locale.locale),
19-
[locale.locale],
20-
);
21-
2217
function disabledWeekDate(date: DateType): boolean {
2318
const weekStr = generateConfig.locale.format(
2419
locale.locale,
@@ -27,28 +22,28 @@ export default function useWeekDisabled<DateType>({
2722
);
2823

2924
if (!disabledCache.has(weekStr)) {
30-
const weekDay = generateConfig.getWeekDay(date);
31-
let weekStartDate: DateType;
32-
33-
// Set start week date
34-
if (weekDay < firstDay) {
35-
weekStartDate = generateConfig.setWeekDay(
36-
generateConfig.addDate(date, -7),
37-
firstDay,
38-
);
39-
} else {
40-
weekStartDate = generateConfig.setWeekDay(date, firstDay);
41-
}
42-
43-
// Loop to find disabled status
4425
let disabled = false;
45-
for (let i = 0; i < 7; i += 1) {
46-
const currentDate = generateConfig.setWeekDay(weekStartDate, i);
47-
if (disabledDate(currentDate)) {
48-
disabled = true;
49-
break;
26+
const checkDisabled = (offset: 1 | -1) => {
27+
for (let i = 0; i < 7; i += 1) {
28+
const currentDate = generateConfig.addDate(date, i * offset);
29+
const currentWeekStr = generateConfig.locale.format(
30+
locale.locale,
31+
currentDate,
32+
'YYYY-WW',
33+
);
34+
35+
if (currentWeekStr !== weekStr) {
36+
break;
37+
}
38+
39+
if (disabledDate(currentDate)) {
40+
disabled = true;
41+
break;
42+
}
5043
}
51-
}
44+
};
45+
checkDisabled(1);
46+
checkDisabled(-1);
5247

5348
disabledCache.set(weekStr, disabled);
5449
}

src/utils/dateUtil.ts

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { noteOnce } from 'rc-util/lib/warning';
22
import { GenerateConfig } from '../generate';
3-
import { NullableDateType, PickerMode, Locale } from '../interface';
3+
import { NullableDateType, PickerMode } from '../interface';
44

55
export const WEEK_DAY_COUNT = 7;
66

@@ -109,23 +109,6 @@ export function isSameWeek<DateType>(
109109
);
110110
}
111111

112-
export function isSameWeekDay<DateType>(
113-
generateConfig: GenerateConfig<DateType>,
114-
week1: NullableDateType<DateType>,
115-
week2: NullableDateType<DateType>,
116-
locale: Locale,
117-
) {
118-
const equal = isNullEqual(week1, week2);
119-
if (typeof equal === 'boolean') {
120-
return equal;
121-
}
122-
123-
return (
124-
generateConfig.locale.format(locale.locale, week1!, 'YYYY-WW') ===
125-
generateConfig.locale.format(locale.locale, week2!, 'YYYY-WW')
126-
);
127-
}
128-
129112
export function isEqual<DateType>(
130113
generateConfig: GenerateConfig<DateType>,
131114
value1: NullableDateType<DateType>,

tests/range.spec.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
MomentRangePicker,
1212
Wrapper,
1313
} from './util/commonUtil';
14+
import zhCN from '../src/locale/zh_CN';
1415

1516
describe('Picker.Range', () => {
1617
function matchValues(wrapper: Wrapper, value1: string, value2: string) {
@@ -166,6 +167,19 @@ describe('Picker.Range', () => {
166167
expect(onChange).not.toHaveBeenCalled();
167168
});
168169

170+
it('week picker can not click before start week', () => {
171+
const wrapper = mount(<MomentRangePicker picker="week" locale={zhCN} />);
172+
wrapper.openPicker();
173+
wrapper.selectCell(11);
174+
175+
expect(
176+
wrapper.findCell(4).hasClass('rc-picker-cell-disabled'),
177+
).toBeTruthy();
178+
expect(
179+
wrapper.findCell(11).hasClass('rc-picker-cell-disabled'),
180+
).toBeFalsy();
181+
});
182+
169183
it('Reset when startDate is after endDate', () => {
170184
const onChange = jest.fn();
171185
const wrapper = mount(<MomentRangePicker onChange={onChange} />);

0 commit comments

Comments
 (0)