Skip to content

Commit ae8a585

Browse files
committed
Update validation error unpacking
1 parent 318e979 commit ae8a585

File tree

5 files changed

+10
-9
lines changed

5 files changed

+10
-9
lines changed

site/src/api/errors.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ describe("mapApiErrorToFieldErrors", () => {
2929
expect(
3030
mapApiErrorToFieldErrors({
3131
message: "Invalid entry",
32-
errors: [{ detail: "Username is already in use", field: "username" }],
32+
validations: [{ detail: "Username is already in use", field: "username" }],
3333
}),
3434
).toEqual({
3535
username: "Username is already in use",

site/src/api/errors.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ export type FieldErrors = Record<FieldError["field"], FieldError["detail"]>
1515

1616
export interface ApiErrorResponse {
1717
message: string
18-
errors?: FieldError[]
18+
detail?: string
19+
validations?: FieldError[]
1920
}
2021

2122
export type ApiError = AxiosError<ApiErrorResponse> & { response: AxiosResponse<ApiErrorResponse> }
@@ -39,13 +40,13 @@ export const isApiError = (err: any): err is ApiError => {
3940
* @param error ApiError
4041
* @returns true if the ApiError contains error messages for specific form fields.
4142
*/
42-
export const hasApiFieldErrors = (error: ApiError): boolean => Array.isArray(error.response.data.errors)
43+
export const hasApiFieldErrors = (error: ApiError): boolean => Array.isArray(error.response.data.validations)
4344

4445
export const mapApiErrorToFieldErrors = (apiErrorResponse: ApiErrorResponse): FieldErrors => {
4546
const result: FieldErrors = {}
4647

47-
if (apiErrorResponse.errors) {
48-
for (const error of apiErrorResponse.errors) {
48+
if (apiErrorResponse.validations) {
49+
for (const error of apiErrorResponse.validations) {
4950
result[error.field] = error.detail || Language.errorsByCode.defaultErrorCode
5051
}
5152
}

site/src/pages/UserSettingsPage/AccountPage/AccountPage.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ describe("AccountPage", () => {
5454
jest.spyOn(API, "updateProfile").mockRejectedValueOnce({
5555
isAxiosError: true,
5656
response: {
57-
data: { message: "Invalid profile", errors: [{ detail: "Username is already in use", field: "username" }] },
57+
data: { message: "Invalid profile", validations: [{ detail: "Username is already in use", field: "username" }] },
5858
},
5959
})
6060

site/src/pages/UserSettingsPage/SecurityPage/SecurityPage.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ describe("SecurityPage", () => {
4949
jest.spyOn(API, "updateUserPassword").mockRejectedValueOnce({
5050
isAxiosError: true,
5151
response: {
52-
data: { message: "Incorrect password.", errors: [{ detail: "Incorrect password.", field: "old_password" }] },
52+
data: { message: "Incorrect password.", validations: [{ detail: "Incorrect password.", field: "old_password" }] },
5353
},
5454
})
5555

@@ -68,7 +68,7 @@ describe("SecurityPage", () => {
6868
jest.spyOn(API, "updateUserPassword").mockRejectedValueOnce({
6969
isAxiosError: true,
7070
response: {
71-
data: { message: "Invalid password.", errors: [{ detail: "Invalid password.", field: "password" }] },
71+
data: { message: "Invalid password.", validations: [{ detail: "Invalid password.", field: "password" }] },
7272
},
7373
})
7474

site/src/pages/UsersPage/CreateUserPage/CreateUserPage.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ describe("Create User Page", () => {
5858
ctx.status(400),
5959
ctx.json({
6060
message: "invalid field",
61-
errors: [
61+
validations: [
6262
{
6363
detail: fieldErrorMessage,
6464
field: "username",

0 commit comments

Comments
 (0)