Ekapp/swagger/test/unit/plugins/editor-metadata/index.js

164 lines
3.7 KiB
JavaScript
Raw Normal View History

2020-06-10 06:25:21 +00:00
import expect from "expect"
import SwaggerUi from "swagger-ui"
import EditorMetadataPlugin from "plugins/editor-metadata"
function getSystem(spec) {
return new Promise((resolve) => {
const system = SwaggerUi({
spec,
domNode: null,
presets: [
SwaggerUi.plugins.SpecIndex,
SwaggerUi.plugins.ErrIndex,
SwaggerUi.plugins.DownloadUrl,
SwaggerUi.plugins.SwaggerJsIndex,
],
initialState: {
layout: undefined
},
plugins: [
EditorMetadataPlugin,
() => ({
statePlugins: {
configs: {
actions: {
loaded: () => {
return {
type: "noop"
}
}
}
}
}
})
]
})
resolve(system)
})
}
describe("editor metadata plugin", function() {
this.timeout(10 * 1000)
it("should provide a `getEditorMetadata` method", async () => {
const spec = {}
const system = await getSystem(spec)
expect(system.getEditorMetadata).toBeA(Function)
})
it("should return JS object spec content from the `getEditorMetadata` method", async () => {
const spec = {
swagger: "2.0",
paths: {
"/": {
get: {
description: "hello there!",
responses: {
"200": {
description: "ok"
}
}
}
}
}
}
const system = await getSystem(spec)
expect(system.getEditorMetadata().contentString).toEqual(`{"swagger":"2.0","paths":{"/":{"get":{"description":"hello there!","responses":{"200":{"description":"ok"}}}}}}`)
expect(system.getEditorMetadata().contentObject).toEqual(spec)
})
it("should return YAML string spec content from the `getEditorMetadata` method", async () => {
const spec = `---
swagger: '2.0'
paths:
"/":
get:
description: hello there!
responses:
'200':
description: ok`
const system = await getSystem()
system.specActions.updateSpec(spec)
expect(system.getEditorMetadata().contentString).toEqual(spec)
expect(system.getEditorMetadata().contentObject).toEqual({
swagger: "2.0",
paths: {
"/": {
get: {
description: "hello there!",
responses: {
"200": {
description: "ok"
}
}
}
}
}
})
})
it("should return isValid for a valid spec", async () => {
const spec = {
swagger: "2.0",
paths: {
"/": {
get: {
description: "hello there!",
responses: {
"200": {
description: "ok"
}
}
}
}
}
}
const system = await getSystem(spec)
expect(system.getEditorMetadata().isValid).toBeA("boolean")
expect(system.getEditorMetadata().isValid).toBe(true)
})
it("should return isValid for an invalid spec", async () => {
const spec = {
swagger: "2.0",
paths: {
"/": {
get: {
description: "hello there!",
responses: {
"200": {
description: "ok"
}
}
}
}
}
}
const err = {
type: "spec",
message: "it's broken!"
}
const system = await getSystem(spec)
system.errActions.newSpecErr(err)
expect(system.getEditorMetadata().isValid).toBeA("boolean")
expect(system.getEditorMetadata().isValid).toBe(false)
expect(system.getEditorMetadata().errors).toEqual([err])
})
})