Adding plugin validation unit tests.

This commit is contained in:
mike12345567 2023-04-18 16:36:03 +01:00
parent 22dbb8d379
commit 3b03766f9e
2 changed files with 84 additions and 1 deletions

View File

@ -0,0 +1,83 @@
import { validate } from "../utils"
import fetch from "node-fetch"
import { PluginType } from "@budibase/types"
const repoUrl =
"https://raw.githubusercontent.com/Budibase/budibase-skeleton/master"
const automationLink = `${repoUrl}/automation/schema.json.hbs`
const componentLink = `${repoUrl}/component/schema.json.hbs`
const datasourceLink = `${repoUrl}/datasource/schema.json.hbs`
async function getSchema(link: string) {
const response = await fetch(link)
if (response.status > 300) {
return
}
const text = await response.text()
return JSON.parse(text)
}
async function runTest(opts: { link?: string; schema?: any }) {
let error
try {
let schema = opts.schema
if (opts.link) {
schema = await getSchema(opts.link)
}
validate(schema)
} catch (err) {
error = err
}
return error
}
describe("it should be able to validate an automation schema", () => {
it("should return automation skeleton schema is valid", async () => {
const error = await runTest({ link: automationLink })
expect(error).toBeUndefined()
})
it("should fail given invalid automation schema", async () => {
const error = await runTest({
schema: {
type: PluginType.AUTOMATION,
schema: {},
},
})
expect(error).toBeDefined()
})
})
describe("it should be able to validate a component schema", () => {
it("should return component skeleton schema is valid", async () => {
const error = await runTest({ link: componentLink })
expect(error).toBeUndefined()
})
it("should fail given invalid component schema", async () => {
const error = await runTest({
schema: {
type: PluginType.COMPONENT,
schema: {},
},
})
expect(error).toBeDefined()
})
})
describe("it should be able to validate a datasource schema", () => {
it("should return datasource skeleton schema is valid", async () => {
const error = await runTest({ link: datasourceLink })
expect(error).toBeUndefined()
})
it("should fail given invalid datasource schema", async () => {
const error = await runTest({
schema: {
type: PluginType.DATASOURCE,
schema: {},
},
})
expect(error).toBeDefined()
})
})

View File

@ -1,7 +1,7 @@
const mockFetch = jest.fn((url: any, opts: any) => {
const fetch = jest.requireActual("node-fetch")
const env = jest.requireActual("../../../../src/environment").default
if (url.includes(env.COUCH_DB_URL)) {
if (url.includes(env.COUCH_DB_URL) || url.includes("raw.github")) {
return fetch(url, opts)
}
return undefined