code-server/test/unit/browser/vscode.test.ts

62 lines
2.1 KiB
TypeScript
Raw Normal View History

/**
* @jest-environment jsdom
*/
import { JSDOM } from "jsdom"
import { getNlsConfiguration, nlsConfigElementId } from "../../../src/browser/pages/vscode"
describe("vscode", () => {
describe("getNlsConfiguration", () => {
beforeEach(() => {
const { window } = new JSDOM()
global.document = window.document
})
it("should throw an error if Document is undefined", () => {
const errorMsgPrefix = "[vscode]"
const errorMessage = `${errorMsgPrefix} Could not parse NLS configuration. document is undefined.`
expect(() => {
getNlsConfiguration(undefined as any as Document)
}).toThrowError(errorMessage)
})
it("should throw an error if no nlsConfigElement", () => {
const errorMsgPrefix = "[vscode]"
const errorMessage = `${errorMsgPrefix} Could not parse NLS configuration. Could not find nlsConfigElement with id: ${nlsConfigElementId}`
expect(() => {
getNlsConfiguration(document)
}).toThrowError(errorMessage)
})
it("should throw an error if no nlsConfig", () => {
const mockElement = document.createElement("div")
mockElement.setAttribute("id", nlsConfigElementId)
document.body.appendChild(mockElement)
const errorMsgPrefix = "[vscode]"
const errorMessage = `${errorMsgPrefix} Could not parse NLS configuration. Found nlsConfigElement but missing data-settings attribute.`
expect(() => {
getNlsConfiguration(document)
}).toThrowError(errorMessage)
document.body.removeChild(mockElement)
})
it("should return the correct configuration", () => {
const mockElement = document.createElement("div")
const dataSettings = {
first: "Jane",
last: "Doe",
}
mockElement.setAttribute("id", nlsConfigElementId)
mockElement.setAttribute("data-settings", JSON.stringify(dataSettings))
document.body.appendChild(mockElement)
const actual = getNlsConfiguration(global.document)
expect(actual).toStrictEqual(dataSettings)
document.body.removeChild(mockElement)
})
})
})