/
githubmirror
/
atom
Обзор
Документация
Войти
/
githubmirror
/
atom
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
packages/link/spec/link-spec.js
136 строк
5 KB
Rafael Oleza
Reformat all JS files using prettier
31 май 2019, 19:33
31 май 2019, 19:33
7f3f040
Код
Авторство
О чём код?
const { shell } = require('electron'); describe('link package', () => { beforeEach(async () => { await atom.packages.activatePackage('language-gfm'); await atom.packages.activatePackage('language-hyperlink'); const activationPromise = atom.packages.activatePackage('link'); atom.commands.dispatch(atom.views.getView(atom.workspace), 'link:open'); await activationPromise; }); describe('when the cursor is on a link', () => { it("opens the link using the 'open' command", async () => { await atom.workspace.open('sample.md'); const editor = atom.workspace.getActiveTextEditor(); editor.setText('// "http://github.com"'); spyOn(shell, 'openExternal'); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).not.toHaveBeenCalled(); editor.setCursorBufferPosition([0, 4]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).toHaveBeenCalled(); expect(shell.openExternal.argsForCall[0][0]).toBe('http://github.com'); shell.openExternal.reset(); editor.setCursorBufferPosition([0, 8]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).toHaveBeenCalled(); expect(shell.openExternal.argsForCall[0][0]).toBe('http://github.com'); shell.openExternal.reset(); editor.setCursorBufferPosition([0, 21]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).toHaveBeenCalled(); expect(shell.openExternal.argsForCall[0][0]).toBe('http://github.com'); }); // only works in Atom >= 1.33.0 // https://github.com/atom/link/pull/33#issuecomment-419643655 const atomVersion = atom.getVersion().split('.'); console.error('atomVersion', atomVersion); if (+atomVersion[0] > 1 || +atomVersion[1] >= 33) { it("opens an 'atom:' link", async () => { await atom.workspace.open('sample.md'); const editor = atom.workspace.getActiveTextEditor(); editor.setText( '// "atom://core/open/file?filename=sample.js&line=1&column=2"' ); spyOn(shell, 'openExternal'); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).not.toHaveBeenCalled(); editor.setCursorBufferPosition([0, 4]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).toHaveBeenCalled(); expect(shell.openExternal.argsForCall[0][0]).toBe( 'atom://core/open/file?filename=sample.js&line=1&column=2' ); shell.openExternal.reset(); editor.setCursorBufferPosition([0, 8]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).toHaveBeenCalled(); expect(shell.openExternal.argsForCall[0][0]).toBe( 'atom://core/open/file?filename=sample.js&line=1&column=2' ); shell.openExternal.reset(); editor.setCursorBufferPosition([0, 60]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).toHaveBeenCalled(); expect(shell.openExternal.argsForCall[0][0]).toBe( 'atom://core/open/file?filename=sample.js&line=1&column=2' ); }); } describe('when the cursor is on a [name][url-name] style markdown link', () => it('opens the named url', async () => { await atom.workspace.open('README.md'); const editor = atom.workspace.getActiveTextEditor(); editor.setText(`\ you should [click][here] you should not [click][her] [here]: http://github.com\ `); spyOn(shell, 'openExternal'); editor.setCursorBufferPosition([0, 0]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).not.toHaveBeenCalled(); editor.setCursorBufferPosition([0, 20]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).toHaveBeenCalled(); expect(shell.openExternal.argsForCall[0][0]).toBe('http://github.com'); shell.openExternal.reset(); editor.setCursorBufferPosition([1, 24]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).not.toHaveBeenCalled(); })); it('does not open non http/https/atom links', async () => { await atom.workspace.open('sample.md'); const editor = atom.workspace.getActiveTextEditor(); editor.setText('// ftp://github.com\n'); spyOn(shell, 'openExternal'); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).not.toHaveBeenCalled(); editor.setCursorBufferPosition([0, 5]); atom.commands.dispatch(atom.views.getView(editor), 'link:open'); expect(shell.openExternal).not.toHaveBeenCalled(); }); }); });