openhab-vscode/serverJS/__tests__/integration/Server.test.js

48 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

Local LSP server that improves functionality like item completion (#122) * Initial commit with LSP from MS examples * Code quality fixes * added remote LSP server to run parallel to local LSP server * removed lspEnabled check as its done in extension already * Removed completion from REST * removed comments * Turned Server into a class and extracted validation * Removed log output * WIP: Added items completion in LSP server Items are taken from REST API at start and are getting cached in LSP Server. Their values are updated from SSE (/rest/events). When Items are added or removed the cache is updated. So now we have a very responsive completion list. * Code quality changes * made code more robust * Added parsing of StateChange and uItemUdate events * Fixed wrongly called cb(error) * removed log output * Cleaned up validation to not return anything * Cleaned up and added bit more docs * Fixed capital letter of class in import - worked on win but not in linux * Same as before * Removed unused getter * Code Quality * Moved @types dependencies to root package.json and cleaned up tsconfig files * Test commit for sign off * Added author in docs * Added pure JS impl of server and wrote tests with jest Coverage is not goot yet, ItemCompletionProvider and Item still miss some tests. Other files are good already. * Added more tests, use of preomise instead of callbacks in completionitem * Moved tests to unit folder * Added more tests * Cleaned up and removed TS impl * Fixed compile problems by increasing vscode version * Fallback to empty array if no items map is present * More tests * Improved npm scripts npm run build builds a .vsix npm run publish publishes the extension both commands run tests before to make sure a working version is built/deployed * use bind() instead of anonymous function * improved scripts * Renamed config properties and removed useRestCompletions as its not needed anymre * changed config in remote language client * removed TODO comment * added changelog and fixed description for settings * fixed typo * Removed commented code Signed-off-by: Samuel Brucksch <sasliga@freenet.de> (github: SamuelBrucksch)
2019-01-11 10:01:45 +00:00
/* eslint-env jest */
const Server = require('../../src/Server')
describe('Integration tests for server', () => {
test('Start server, initialize item completion and get completion items', async () => {
const server = new Server()
server.globalSettings = { host: 'demo.openhab.org', port: 8080 }
server.start()
const err = await server.initializeItemCompletionProvider()
expect(err).toBeUndefined()
const completions = server.getCompletion()
expect(completions).toBeDefined()
expect(completions.length).toBeGreaterThan(0)
server.exit()
})
test('Start server, fail initialize item completion and get completion items', async () => {
const server = new Server()
server.globalSettings = { host: 'localhost', port: 8080 }
server.start()
const err = await server.initializeItemCompletionProvider()
expect(err.message).toEqual('connect ECONNREFUSED 127.0.0.1:8080')
const completions = server.getCompletion()
expect(completions).toBeDefined()
expect(completions.length).toEqual(0)
server.exit()
})
test('Start server and validate documents', async () => {
const server = new Server()
server.globalSettings = { host: 'demo.openhab.org', port: 8080 }
server.start()
// as we do not have a client for testing here we mock the sendDiagnostics to check if we get the result
server.connection.sendDiagnostics = jest.fn()
server.validateDocument({ uri: 'testDocument.txt' })
// this test does not make so much sense yet, however when document validation is available we can test everything here
expect(server.connection.sendDiagnostics).toHaveBeenCalledTimes(1)
expect(server.connection.sendDiagnostics).toHaveBeenCalledWith({ diagnostics: [], uri: 'testDocument.txt' })
server.exit()
})
})