Files
vim-lsp-mirror/test/lsp/omni.vimspec
Prabir Shrestha 90d61f1114 fix snippet (#1051)
* fix snippet
* add snippet test
2021-01-16 12:09:01 -08:00

187 lines
5.6 KiB
Plaintext

Describe lsp#omni
let g:lsp_get_vim_completion_item_set_kind = 1
Before each
call lsp#omni#_clear_managed_user_data_map()
End
Describe lsp#omni#get_vim_completion_items
It should return item with proper kind
let item = {
\ 'label': 'my-label',
\ 'documentation': 'my documentation.',
\ 'detail': 'my-detail',
\ 'kind': '3'
\}
let options = {
\ 'server': { 'name': 'dummy-server' },
\ 'position': lsp#get_position(),
\ 'response': { 'result': [item] },
\}
let want = {
\ 'items': [{
\ 'word': 'my-label',
\ 'abbr': 'my-label',
\ 'icase': 1,
\ 'dup': 1,
\ 'empty': 1,
\ 'kind': 'function',
\ 'user_data': '{"vim-lsp/key":"0"}',
\ }],
\ 'incomplete': 0,
\}
Assert Equals(lsp#omni#get_vim_completion_items(options), want)
End
It should get user_data by the item
if !has('patch-8.0.1493')
Skip This test requires 'patch-8.0.1493'
endif
let item = {
\ 'label': 'my-label',
\ 'documentation': 'my documentation.',
\ 'detail': 'my-detail',
\ 'kind': '3',
\ 'textEdit': {
\ 'range': {
\ 'start': {'line': 5, 'character': 0},
\ 'end': {'line': 5, 'character': 5}
\ },
\ 'newText': 'yyy'
\ }
\}
let options = {
\ 'server': { 'name': 'dummy-server' },
\ 'position': { 'line': 1, 'character': 1 },
\ 'response': { 'result': [item] },
\}
let want = {
\ 'items': [{
\ 'word': 'my-label',
\ 'abbr': 'my-label',
\ 'icase': 1,
\ 'dup': 1,
\ 'empty': 1,
\ 'kind': 'function',
\ 'user_data': '{"vim-lsp/key":"0"}',
\ }],
\ 'incomplete': 0,
\}
let got = lsp#omni#get_vim_completion_items(options)
Assert Equals(got, want)
Assert Equals(lsp#omni#get_managed_user_data_from_completed_item(got['items'][0]), {
\ 'server_name': 'dummy-server',
\ 'completion_item': item,
\ 'complete_position': { 'line': 1, 'character': 1 }
\ })
End
It should not raise errors
let item = {
\ 'label': 'my-label',
\ 'textEdit': v:null,
\}
let options = {
\ 'server': { 'name': 'dummy-server' },
\ 'position': lsp#get_position(),
\ 'response': { 'result': [item] },
\}
let want = {
\ 'items': [{
\ 'word': 'my-label',
\ 'abbr': 'my-label',
\ 'icase': 1,
\ 'dup': 1,
\ 'empty': 1,
\ 'kind': '',
\ 'user_data': '{"vim-lsp/key":"0"}',
\ }],
\ 'incomplete': 0,
\}
let got = lsp#omni#get_vim_completion_items(options)
Assert Equals(got, want)
let item = {
\ 'label': 'my-label',
\ 'textEdit': v:null,
\ 'insertText': v:null,
\}
let options = {
\ 'server': { 'name': 'dummy-server' },
\ 'position': lsp#get_position(),
\ 'response': { 'result': [item] },
\}
let want = {
\ 'items': [{
\ 'word': 'my-label',
\ 'abbr': 'my-label',
\ 'icase': 1,
\ 'dup': 1,
\ 'empty': 1,
\ 'kind': '',
\ 'user_data': '{"vim-lsp/key":"1"}',
\ }],
\ 'incomplete': 0,
\}
let got = lsp#omni#get_vim_completion_items(options)
Assert Equals(got, want)
End
It should return correct items for snippets
if !has('patch-8.0.1493')
Skip This test requires 'patch-8.0.1493'
endif
let item = {
\ "label": "sysout",
\ "insertText": "System.out.println(${0});",
\ "kind": 15,
\ "insertTextFormat": 2,
\ "documentation": "System.out.println();",
\ "detail": "print to standard out"
\ }
let options = {
\ 'server': { 'name': 'dummy-server' },
\ 'position': { 'line': 1, 'character': 1 },
\ 'response': { 'result': [item] },
\}
let want = {
\ 'items': [{
\ 'word': 'System.out.println',
\ 'abbr': 'sysout~',
\ 'icase': 1,
\ 'dup': 1,
\ 'empty': 1,
\ 'kind': 'snippet',
\ 'user_data': '{"vim-lsp/key":"0"}',
\ }],
\ 'incomplete': 0,
\}
let got = lsp#omni#get_vim_completion_items(options)
Assert Equals(got, want)
Assert Equals(lsp#omni#get_managed_user_data_from_completed_item(got['items'][0]), {
\ 'server_name': 'dummy-server',
\ 'completion_item': item,
\ 'complete_position': { 'line': 1, 'character': 1 }
\ })
End
End
End