Skip to content

Commit e3e1aee

Browse files
authored
test(interaction): 新增重复事件注册的测试 (#1176)
1 parent 2352dbe commit e3e1aee

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

packages/s2-core/__tests__/spreadsheet/interaction-brush-selection-scroll-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ const options: S2Options = {
6969
},
7070
};
7171

72-
describe('Bursh selection scroll spec', () => {
72+
describe('Brush selection scroll spec', () => {
7373
test('Should scroll when mouse outside canvas', async () => {
7474
const s2 = new TableSheet(getContainer(), dataCfg, options);
7575
s2.render();

packages/s2-core/__tests__/unit/interaction/event-controller-spec.ts

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ describe('Interaction Event Controller Tests', () => {
374374

375375
test.each([
376376
{ type: OriginEventType.KEY_DOWN, event: S2Event.GLOBAL_KEYBOARD_DOWN },
377-
{ type: OriginEventType.KEY_UP, event: S2Event.GLOBAL_KEYBOARD_DOWN },
377+
{ type: OriginEventType.KEY_UP, event: S2Event.GLOBAL_KEYBOARD_UP },
378378
])(
379379
'should not trigger sheet %o if outside the canvas container',
380380
({ type, event }) => {
@@ -586,4 +586,43 @@ describe('Interaction Event Controller Tests', () => {
586586
spreadsheet.container.emit(OriginEventType.MOUSE_OUT);
587587
expect(spreadsheet.interaction.reset).not.toHaveBeenCalled();
588588
});
589+
590+
// https://github.com/antvis/S2/issues/1172
591+
test.each([
592+
{ type: OriginEventType.KEY_DOWN, event: S2Event.GLOBAL_KEYBOARD_DOWN },
593+
{ type: OriginEventType.KEY_UP, event: S2Event.GLOBAL_KEYBOARD_UP },
594+
{ type: OriginEventType.MOUSE_UP, event: S2Event.GLOBAL_MOUSE_UP },
595+
{ type: OriginEventType.MOUSE_MOVE, event: S2Event.GLOBAL_MOUSE_MOVE },
596+
])(
597+
'should not prevent default original event if controller emitted global event %o',
598+
({ type, event }) => {
599+
jest
600+
.spyOn(HTMLElement.prototype, 'contains')
601+
.mockImplementation(() => true);
602+
603+
const handler = jest.fn();
604+
const originalEventHandler = jest.fn();
605+
const preventDefault = jest.fn();
606+
607+
spreadsheet.on(event, handler);
608+
609+
// 外部额外注册一个相同的事件
610+
window.addEventListener(type, originalEventHandler);
611+
612+
window.dispatchEvent(
613+
new MouseEvent('click', { preventDefault } as EventInit),
614+
);
615+
window.dispatchEvent(new Event(type, { preventDefault } as EventInit));
616+
617+
// 都应该触发
618+
expect(handler).toHaveBeenCalled();
619+
expect(originalEventHandler).toHaveBeenCalled();
620+
621+
// 不应该阻止默认事件
622+
expect(preventDefault).not.toHaveBeenCalled();
623+
624+
spreadsheet.off(event, handler);
625+
window.removeEventListener(type, originalEventHandler);
626+
},
627+
);
589628
});

0 commit comments

Comments
 (0)