Skip to content

Commit

Permalink
Add tests for syntax toggles
Browse files Browse the repository at this point in the history
This add tests for the `mdx/toggleDelete`, `mdx/toggleEmphasis`,
`mdx/toggleInlineCode`, and `mdx/toggleStrong` requests.
  • Loading branch information
remcohaszing committed May 7, 2024
1 parent 8cbb48b commit 6f3b325
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 0 deletions.
109 changes: 109 additions & 0 deletions packages/language-server/test/syntax-toggle.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/**
* @typedef {import('@volar/test-utils').LanguageServerHandle} LanguageServerHandle
* @typedef {import('@mdx-js/language-service').SyntaxToggleParams} SyntaxToggleParams
*/
import assert from 'node:assert/strict'
import {afterEach, beforeEach, test} from 'node:test'
import {createServer, fixtureUri, tsdk} from './utils.js'

/** @type {LanguageServerHandle} */
let serverHandle

beforeEach(async () => {
serverHandle = createServer()
await serverHandle.initialize(fixtureUri('node16'), {
typescript: {enabled: false, tsdk}
})
})

afterEach(() => {
serverHandle.connection.dispose()
})

test('delete', async () => {
await serverHandle.openInMemoryDocument('memory://1', 'mdx', 'Hello\n')
const result = await serverHandle.connection.sendRequest(
'mdx/toggleDelete',
/** @satisfies {SyntaxToggleParams} */ ({
uri: 'memory://1',
range: {end: {character: 3, line: 0}, start: {character: 3, line: 0}}
})
)

assert.deepEqual(result, [
{
newText: '~',
range: {end: {character: 0, line: 0}, start: {character: 0, line: 0}}
},
{
newText: '~',
range: {end: {character: 5, line: 0}, start: {character: 5, line: 0}}
}
])
})

test('emphasis', async () => {
await serverHandle.openInMemoryDocument('memory://1', 'mdx', 'Hello\n')
const result = await serverHandle.connection.sendRequest(
'mdx/toggleEmphasis',
/** @satisfies {SyntaxToggleParams} */ ({
uri: 'memory://1',
range: {end: {character: 3, line: 0}, start: {character: 3, line: 0}}
})
)

assert.deepEqual(result, [
{
newText: '_',
range: {end: {character: 0, line: 0}, start: {character: 0, line: 0}}
},
{
newText: '_',
range: {end: {character: 5, line: 0}, start: {character: 5, line: 0}}
}
])
})

test('inlineCode', async () => {
await serverHandle.openInMemoryDocument('memory://1', 'mdx', 'Hello\n')
const result = await serverHandle.connection.sendRequest(
'mdx/toggleInlineCode',
/** @satisfies {SyntaxToggleParams} */ ({
uri: 'memory://1',
range: {end: {character: 3, line: 0}, start: {character: 3, line: 0}}
})
)

assert.deepEqual(result, [
{
newText: '`',
range: {end: {character: 0, line: 0}, start: {character: 0, line: 0}}
},
{
newText: '`',
range: {end: {character: 5, line: 0}, start: {character: 5, line: 0}}
}
])
})

test('strong', async () => {
await serverHandle.openInMemoryDocument('memory://1', 'mdx', 'Hello\n')
const result = await serverHandle.connection.sendRequest(
'mdx/toggleStrong',
/** @satisfies {SyntaxToggleParams} */ ({
uri: 'memory://1',
range: {end: {character: 3, line: 0}, start: {character: 3, line: 0}}
})
)

assert.deepEqual(result, [
{
newText: '**',
range: {end: {character: 0, line: 0}, start: {character: 0, line: 0}}
},
{
newText: '**',
range: {end: {character: 5, line: 0}, start: {character: 5, line: 0}}
}
])
})
1 change: 1 addition & 0 deletions packages/language-service/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/**
* @typedef {import('./lib/commands.js').SyntaxToggleParams} SyntaxToggleParams
* @typedef {import('./lib/service-plugin.js').Commands} Commands
*/

Expand Down

0 comments on commit 6f3b325

Please sign in to comment.