From 06e78acbf61d8d6cd02312124e8d3626dd4c8147 Mon Sep 17 00:00:00 2001 From: Gabriel L Martinez Date: Tue, 7 Apr 2020 09:29:31 -0400 Subject: [PATCH] Adding storyshot for password too short error --- .../NewPasswordPage.stories.tsx | 16 ++- .../NewPasswordPage/NewPasswordPage.tsx | 10 +- src/auth/views/NewPassword.tsx | 24 ++-- .../__snapshots__/Stories.test.ts.snap | 127 ++++++++++++++++++ 4 files changed, 158 insertions(+), 19 deletions(-) diff --git a/src/auth/components/NewPasswordPage/NewPasswordPage.stories.tsx b/src/auth/components/NewPasswordPage/NewPasswordPage.stories.tsx index b5578abc1..36e2e3cf4 100644 --- a/src/auth/components/NewPasswordPage/NewPasswordPage.stories.tsx +++ b/src/auth/components/NewPasswordPage/NewPasswordPage.stories.tsx @@ -3,14 +3,26 @@ import React from "react"; import CardDecorator from "@saleor/storybook//CardDecorator"; import Decorator from "@saleor/storybook//Decorator"; +import { AccountErrorCode } from "@saleor/types/globalTypes"; import NewPasswordPage from "./NewPasswordPage"; storiesOf("Views / Authentication / Set up a new password", module) .addDecorator(CardDecorator) .addDecorator(Decorator) .add("default", () => ( - undefined} /> + undefined} /> )) .add("loading", () => ( - undefined} /> + undefined} /> + )) + .add("too short error", () => ( + ({ + __typename: "AccountError", + code: AccountErrorCode.PASSWORD_TOO_SHORT, + field + }))} + disabled={false} + onSubmit={() => undefined} + /> )); diff --git a/src/auth/components/NewPasswordPage/NewPasswordPage.tsx b/src/auth/components/NewPasswordPage/NewPasswordPage.tsx index 119dce750..2dfd65389 100644 --- a/src/auth/components/NewPasswordPage/NewPasswordPage.tsx +++ b/src/auth/components/NewPasswordPage/NewPasswordPage.tsx @@ -7,6 +7,8 @@ import { FormattedMessage, useIntl } from "react-intl"; import Form from "@saleor/components/Form"; import FormSpacer from "@saleor/components/FormSpacer"; +import { SetPassword_setPassword_errors } from "@saleor/auth/types/SetPassword"; +import getAccountErrorMessage from "@saleor/utils/errors/account"; const useStyles = makeStyles( theme => ({ @@ -34,7 +36,7 @@ export interface NewPasswordPageFormData { } export interface NewPasswordPageProps { disabled: boolean; - error: string; + errors: SetPassword_setPassword_errors[]; onSubmit: (data: NewPasswordPageFormData) => void; } @@ -44,10 +46,14 @@ const initialForm: NewPasswordPageFormData = { }; const NewPasswordPage: React.FC = props => { - const { disabled, error, onSubmit } = props; + const { disabled, errors, onSubmit } = props; const classes = useStyles(props); const intl = useIntl(); + const error = getAccountErrorMessage( + errors.find(err => err.field === "password"), + intl + ); return (
diff --git a/src/auth/views/NewPassword.tsx b/src/auth/views/NewPassword.tsx index ddd5cf9da..c5ce7b52b 100644 --- a/src/auth/views/NewPassword.tsx +++ b/src/auth/views/NewPassword.tsx @@ -4,21 +4,22 @@ import { RouteComponentProps } from "react-router"; import useNavigator from "@saleor/hooks/useNavigator"; import useUser from "@saleor/hooks/useUser"; -import { useIntl } from "react-intl"; -import { commonMessages } from "@saleor/intl"; -import getAccountErrorMessage from "@saleor/utils/errors/account"; import NewPasswordPage, { NewPasswordPageFormData } from "../components/NewPasswordPage"; import { SetPasswordMutation } from "../mutations"; -import { SetPassword } from "../types/SetPassword"; +import { + SetPassword, + SetPassword_setPassword_errors +} from "../types/SetPassword"; import { NewPasswordUrlQueryParams } from "../urls"; const NewPassword: React.FC = ({ location }) => { const navigate = useNavigator(); const { loginByToken } = useUser(); - const [error, setError] = React.useState(); - const intl = useIntl(); + const [errors, setErrors] = React.useState< + SetPassword_setPassword_errors[] + >(); const params: NewPasswordUrlQueryParams = parseQs(location.search.substr(1)); @@ -27,14 +28,7 @@ const NewPassword: React.FC = ({ location }) => { loginByToken(data.setPassword.token, data.setPassword.user); navigate("/", true); } else { - const error = data.setPassword.errors.find( - err => err.field === "password" - ); - if (error) { - setError(getAccountErrorMessage(error, intl)); - } else { - setError(intl.formatMessage(commonMessages.somethingWentWrong)); - } + setErrors(data.setPassword.errors); } }; @@ -52,7 +46,7 @@ const NewPassword: React.FC = ({ location }) => { return ( diff --git a/src/storybook/__snapshots__/Stories.test.ts.snap b/src/storybook/__snapshots__/Stories.test.ts.snap index 0b8918365..ec5bc21de 100644 --- a/src/storybook/__snapshots__/Stories.test.ts.snap +++ b/src/storybook/__snapshots__/Stories.test.ts.snap @@ -15166,6 +15166,133 @@ exports[`Storyshots Views / Authentication / Set up a new password loading 1`] = `; +exports[`Storyshots Views / Authentication / Set up a new password too short error 1`] = ` +
+
+
+ +
+
+ This password is too short +
+
+
+ Please set up a new password. +
+
+
+ +
+ + +
+
+
+
+ +
+ + +
+
+
+ + +
+
+
+`; + exports[`Storyshots Views / Authentication / Verifying remembered user default 1`] = `