Added Swagger
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
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])
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user