yishentu--claudian
65 行
1.6 KiB
TypeScript
65 行
1.6 KiB
TypeScript
import { registerFileLinkHandler } from '@/utils/fileLink';
|
|
|
|
describe('registerFileLinkHandler', () => {
|
|
it('opens data-href target when present', () => {
|
|
const app = {
|
|
workspace: {
|
|
openLinkText: jest.fn(),
|
|
},
|
|
};
|
|
|
|
const link: any = {
|
|
dataset: { href: 'note#section' },
|
|
getAttribute: jest.fn().mockReturnValue('note'),
|
|
closest: jest.fn(),
|
|
};
|
|
link.closest.mockReturnValue(link);
|
|
|
|
const event = {
|
|
target: link,
|
|
preventDefault: jest.fn(),
|
|
} as any;
|
|
|
|
const component = {
|
|
registerDomEvent: (_el: HTMLElement, _event: string, cb: (event: MouseEvent) => void) => {
|
|
cb(event);
|
|
},
|
|
};
|
|
|
|
registerFileLinkHandler(app as any, {} as HTMLElement, component as any);
|
|
|
|
expect(event.preventDefault).toHaveBeenCalled();
|
|
expect(app.workspace.openLinkText).toHaveBeenCalledWith('note#section', '', 'tab');
|
|
});
|
|
|
|
it('falls back to href when data-href is missing', () => {
|
|
const app = {
|
|
workspace: {
|
|
openLinkText: jest.fn(),
|
|
},
|
|
};
|
|
|
|
const link: any = {
|
|
dataset: {},
|
|
getAttribute: jest.fn().mockReturnValue('note^block'),
|
|
closest: jest.fn(),
|
|
};
|
|
link.closest.mockReturnValue(link);
|
|
|
|
const event = {
|
|
target: link,
|
|
preventDefault: jest.fn(),
|
|
} as any;
|
|
|
|
const component = {
|
|
registerDomEvent: (_el: HTMLElement, _event: string, cb: (event: MouseEvent) => void) => {
|
|
cb(event);
|
|
},
|
|
};
|
|
|
|
registerFileLinkHandler(app as any, {} as HTMLElement, component as any);
|
|
|
|
expect(app.workspace.openLinkText).toHaveBeenCalledWith('note^block', '', 'tab');
|
|
});
|
|
});
|