Ekapp/swagger/test/unit/plugins/validate-semantic/validate-helper.js

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([])
})
}