Skip to content

Commit

Permalink
fix(spec): validation errors formatting (#9687)
Browse files Browse the repository at this point in the history
Co-authored-by: Enrico Bottacin <enrico.bottacin@gmail.com>
Co-authored-by: Vladimír Gorej <vladimir.gorej@gmail.com>
  • Loading branch information
3 people authored Mar 13, 2024
1 parent 8784145 commit 99bf8fc
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 4 deletions.
7 changes: 4 additions & 3 deletions src/core/plugins/spec/selectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -496,11 +496,12 @@ export const validationErrors = (state, pathMethod) => {

paramValues.forEach( (p) => {
let errors = p.get("errors")
if ( errors && errors.count() ) {
errors.forEach( e => result.push(e))
if (errors && errors.count()) {
errors
.map((e) => (Map.isMap(e) ? `${e.get("propKey")}: ${e.get("error")}` : e))
.forEach((e) => result.push(e))
}
})

return result
}

Expand Down
55 changes: 54 additions & 1 deletion test/unit/core/plugins/spec/selectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ import {
parameterInclusionSettingFor,
consumesOptionsFor,
taggedOperations,
isMediaTypeSchemaPropertiesEqual
isMediaTypeSchemaPropertiesEqual,
validationErrors
} from "core/plugins/spec/selectors"

import Petstore from "./assets/petstore.json"
Expand Down Expand Up @@ -1380,3 +1381,55 @@ describe("isMediaTypeSchemaPropertiesEqual", () => {
})
})
})
describe("validationErrors", function() {
const state = fromJS({
meta: {
paths: {
"/": {
get: {
parameters: {
id: {
errors: [
"Value must be an integer"
]
}
}
},
post: {
parameters: {
body: {
errors: [
{
error: "Value must be an integer",
propKey: "id"
},
{
error: "Value must be a string",
propKey: "name"
}
]
}
}
}
}
}
}
})

it("should return validation errors without formatting them", function () {
const result = validationErrors(state, ["/", "get"])

expect(result).toEqual([
"Value must be an integer"
])
})

it("should return formatted validation errors", function () {
const result = validationErrors(state, ["/", "post"])

expect(result).toEqual([
"id: Value must be an integer",
"name: Value must be a string"
])
})
})

0 comments on commit 99bf8fc

Please sign in to comment.