62 lines
2.1 KiB
TypeScript
62 lines
2.1 KiB
TypeScript
/**
|
|
* @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)
|
|
})
|
|
})
|
|
})
|