Skip to content

Commit

Permalink
fix(gatsby-recipes): Raise an error when an unknown resource is used (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
johno authored Apr 23, 2020
1 parent e42e8e0 commit 61d8192
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`validate module validates recipes with resource declarations validates File declarations 1`] = `
Array [
Object {
"resource": "File",
"resourceDeclaration": Object {
"contentz": "yo",
"path": "super-duper.md",
},
"step": 2,
"validationError": [ValidationError: "contentz" is not allowed],
},
]
`;

exports[`validate module validates recipes with resource declarations validates File declarations 2`] = `[ValidationError: "contentz" is not allowed]`;

exports[`validate module validates recipes with resource declarations validates NPMPackage declarations 1`] = `
Array [
Object {
"resource": "NPMPackage",
"resourceDeclaration": Object {
"namez": "wee-package",
},
"step": 1,
"validationError": [ValidationError: child "name" fails because ["name" is required]. "namez" is not allowed],
},
]
`;
9 changes: 9 additions & 0 deletions packages/gatsby-recipes/src/validate-recipe.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ module.exports = plan => {
plan.map((step, i) =>
Object.keys(step).map(key =>
step[key].map(resourceDeclaration => {
if (!resources[key]) {
return {
step: i,
resource: key,
resourceDeclaration,
validationError: `Unknown resource ${key}`,
}
}

if (resources[key] && !resources[key].validate) {
console.log(`${key} is missing an exported validate function`)
return undefined
Expand Down
22 changes: 15 additions & 7 deletions packages/gatsby-recipes/src/validate-recipe.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,23 @@ describe(`validate module validates recipes with resource declarations`, () => {
]
const validationResponse = validateRecipe(recipe)
expect(validationResponse[0].validationError).toBeTruthy()
//expect(validationResponse).toMatchSnapshot()
//expect(validationResponse[0].validationError).toMatchSnapshot()
expect(validationResponse).toMatchSnapshot()
expect(validationResponse[0].validationError).toMatchSnapshot()
})

// it(`validates NPMPackage declarations`, () => {
// const recipe = [{}, { NPMPackage: [{ namez: `wee-package` }] }]
// const validationResponse = validateRecipe(recipe)
// expect(validationResponse).toMatchSnapshot()
// })
it(`validates NPMPackage declarations`, () => {
const recipe = [{}, { NPMPackage: [{ namez: `wee-package` }] }]
const validationResponse = validateRecipe(recipe)
expect(validationResponse).toMatchSnapshot()
})

it(`returns errors for unknown resources`, () => {
const recipe = [{ Fake: [{}] }]

const result = validateRecipe(recipe)[0]

expect(result.validationError).toMatch(`Unknown resource Fake`)
})

it(`returns empty array if there's no errors`, () => {
const recipe = [
Expand Down

0 comments on commit 61d8192

Please sign in to comment.