73 lines
1.8 KiB
JavaScript
73 lines
1.8 KiB
JavaScript
import expect from "expect"
|
|
import SwaggerUi from "swagger-ui"
|
|
import debounce from "lodash/debounce"
|
|
|
|
import ValidateBasePlugin from "plugins/validate-base"
|
|
import ValidateSemanticPlugin from "plugins/validate-semantic"
|
|
import ASTPlugin from "plugins/ast"
|
|
|
|
const envDelay = process.env.ASYNC_TEST_DELAY
|
|
|
|
const DELAY_MS = (typeof envDelay === "string" ? parseInt(envDelay) : envDelay) || 50
|
|
|
|
export default function validateHelper(spec) {
|
|
return new Promise((resolve) => {
|
|
const system = SwaggerUi({
|
|
spec,
|
|
domNode: null,
|
|
presets: [
|
|
SwaggerUi.plugins.SpecIndex,
|
|
SwaggerUi.plugins.ErrIndex,
|
|
SwaggerUi.plugins.DownloadUrl,
|
|
SwaggerUi.plugins.SwaggerJsIndex,
|
|
SwaggerUi.plugins.Oas3Index
|
|
],
|
|
initialState: {
|
|
layout: undefined
|
|
},
|
|
plugins: [
|
|
ASTPlugin,
|
|
ValidateBasePlugin,
|
|
ValidateSemanticPlugin,
|
|
() => ({
|
|
statePlugins: {
|
|
configs: {
|
|
actions: {
|
|
loaded: () => {
|
|
return {
|
|
type: "noop"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
]
|
|
})
|
|
|
|
system.validateActions.all()
|
|
|
|
const registerActivity = debounce(() => resolve(system), DELAY_MS)
|
|
|
|
system.getStore().subscribe(registerActivity)
|
|
})
|
|
|
|
}
|
|
|
|
export function expectNoErrorsOrWarnings(spec) {
|
|
return validateHelper(spec)
|
|
.then( system => {
|
|
const allErrors = system.errSelectors.allErrors().toJS()
|
|
expect(allErrors).toEqual([])
|
|
})
|
|
}
|
|
|
|
export function expectNoErrors(spec) {
|
|
return validateHelper(spec)
|
|
.then(system => {
|
|
let allErrors = system.errSelectors.allErrors().toJS()
|
|
allErrors = allErrors.filter(a => a.level === "error") // ignore warnings
|
|
expect(allErrors).toEqual([])
|
|
})
|
|
}
|