mirror of
1
0
Fork 0
ultimate-vim/sources_non_forked/coc.nvim/src/__tests__/handler/workspace.test.ts

100 lines
2.8 KiB
TypeScript

import { Neovim } from '@chemzqm/neovim'
import { Disposable } from 'vscode-languageserver-protocol'
import WorkspaceHandler from '../../handler/workspace'
import { disposeAll } from '../../util'
import workspace from '../../workspace'
import extensions from '../../extensions'
import helper from '../helper'
let nvim: Neovim
let handler: WorkspaceHandler
let disposables: Disposable[] = []
beforeAll(async () => {
await helper.setup()
nvim = helper.nvim
handler = helper.plugin.getHandler().workspace
})
afterAll(async () => {
await helper.shutdown()
})
afterEach(async () => {
disposeAll(disposables)
await helper.reset()
})
describe('Workspace handler', () => {
describe('methods', () => {
it('should open log', async () => {
await handler.openLog()
let bufname = await nvim.call('bufname', ['%']) as string
expect(bufname.endsWith('coc-nvim.log')).toBe(true)
})
it('should get configuration of current document', async () => {
let config = await handler.getConfiguration('suggest')
let wait = config.get<number>('triggerCompletionWait')
expect(wait).toBe(0)
})
it('should get root patterns', async () => {
let doc = await helper.createDocument()
let patterns = handler.getRootPatterns(doc.bufnr)
expect(patterns).toBeDefined()
})
})
describe('doKeymap()', () => {
it('should return default value when key mapping does not exist', async () => {
let res = await handler.doKeymap('not_exists', '', '<C-a')
expect(res).toBe('')
})
it('should support repeat key mapping', async () => {
let called = false
await nvim.command('nmap do <Plug>(coc-test)')
disposables.push(workspace.registerKeymap(['n'], 'test', () => {
called = true
}, { repeat: true, silent: true, sync: false }))
await helper.wait(100)
await nvim.call('feedkeys', ['do', 'i'])
await helper.wait(30)
expect(called).toBe(true)
})
})
describe('snippetCheck()', () => {
it('should return false when coc-snippets not found', async () => {
expect(await handler.snippetCheck(true, false)).toBe(false)
})
it('should check jump', async () => {
expect(await handler.snippetCheck(false, true)).toBe(false)
})
it('should check expand by coc-snippets', async () => {
let has = extensions.has
let getExtensionApi = extensions.getExtensionApi
extensions.has = () => {
return true
}
extensions.getExtensionApi = () => {
return {
expandable: () => {
return true
}
}
}
disposables.push({
dispose: () => {
extensions.has = has
extensions.getExtensionApi = getExtensionApi
}
})
let res = await handler.snippetCheck(true, false)
expect(res).toBe(true)
})
})
})