Define node requirements, ts cleanup (#1008)

* Define node requirements, ts cleanup

* Update snapshot

* fix tests
This commit is contained in:
Jakub Majorek 2021-03-19 13:06:17 +01:00 committed by GitHub
parent 429e7b9d83
commit 7bc4bc6696
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 13257 additions and 43696 deletions

View file

@ -1,4 +1,4 @@
FROM node:10 as builder FROM node:14 as builder
WORKDIR /app WORKDIR /app
COPY package*.json ./ COPY package*.json ./
RUN npm install RUN npm install

View file

@ -1,5 +1,4 @@
FROM node:10 FROM node:14
WORKDIR /app WORKDIR /app
COPY package*.json ./ COPY package*.json ./
RUN npm install RUN npm install

View file

@ -18,7 +18,7 @@ These instructions will get you a copy of the project up and running on your loc
### Prerequisites ### Prerequisites
- Node.js 10.0+ - Node.js v14+
- A running instance of [Saleor](https://github.com/mirumee/saleor/). - A running instance of [Saleor](https://github.com/mirumee/saleor/).
### Installing ### Installing

45016
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -11,10 +11,10 @@
"bugs": { "bugs": {
"url": "https://github.com/mirumee/saleor-dashboard/issues" "url": "https://github.com/mirumee/saleor-dashboard/issues"
}, },
"homepage": "http://getsaleor.com/", "homepage": "https://saleor.io/",
"engines": { "engines": {
"node": ">=12.12.0", "node": ">=14 <15",
"npm": ">=6.11.0" "npm": ">=6.11.0 <7"
}, },
"dependencies": { "dependencies": {
"@editorjs/editorjs": "^2.19.1", "@editorjs/editorjs": "^2.19.1",
@ -22,9 +22,9 @@
"@editorjs/image": "^2.6.0", "@editorjs/image": "^2.6.0",
"@editorjs/list": "^1.6.1", "@editorjs/list": "^1.6.1",
"@editorjs/quote": "^2.4.0", "@editorjs/quote": "^2.4.0",
"@material-ui/core": "^4.5.1", "@material-ui/core": "^4.11.3",
"@material-ui/icons": "^4.5.1", "@material-ui/icons": "^4.11.2",
"@material-ui/styles": "^4.5.2", "@material-ui/styles": "^4.11.3",
"@saleor/macaw-ui": "^0.1.1-9", "@saleor/macaw-ui": "^0.1.1-9",
"@sentry/react": "^6.0.0", "@sentry/react": "^6.0.0",
"@types/faker": "^5.1.6", "@types/faker": "^5.1.6",
@ -115,7 +115,7 @@
"@types/react-router-dom": "^4.3.4", "@types/react-router-dom": "^4.3.4",
"@types/react-sortable-hoc": "^0.7.1", "@types/react-sortable-hoc": "^0.7.1",
"@types/react-sortable-tree": "^0.3.6", "@types/react-sortable-tree": "^0.3.6",
"@types/react-test-renderer": "^16.8.2", "@types/react-test-renderer": "^16.9.5",
"@types/semver-compare": "^1.0.1", "@types/semver-compare": "^1.0.1",
"@types/setup-polly-jest": "^0.5.0", "@types/setup-polly-jest": "^0.5.0",
"@types/storybook__addon-storyshots": "^3.4.9", "@types/storybook__addon-storyshots": "^3.4.9",

View file

@ -47,7 +47,7 @@ const AppInstall: React.FC<RouteComponentProps> = props => {
return <AppInstallView params={params} {...props} />; return <AppInstallView params={params} {...props} />;
}; };
interface CustomAppDetailsProps extends RouteComponentProps<{ id: string }> { interface CustomAppDetailsProps extends RouteComponentProps<{ id?: string }> {
token: string; token: string;
onTokenClose: () => void; onTokenClose: () => void;
} }
@ -59,6 +59,11 @@ const CustomAppDetails: React.FC<CustomAppDetailsProps> = ({
}) => { }) => {
const qs = parseQs(location.search.substr(1)); const qs = parseQs(location.search.substr(1));
const params: CustomAppUrlQueryParams = qs; const params: CustomAppUrlQueryParams = qs;
const id = match.params.id;
if (!id) {
throw new Error("No ID provided");
}
return ( return (
<CustomAppDetailsView <CustomAppDetailsView

View file

@ -40,9 +40,12 @@ describe("User", () => {
it("will be logged in if has valid credentials", async done => { it("will be logged in if has valid credentials", async done => {
const hook = renderAuthProvider(apolloClient); const hook = renderAuthProvider(apolloClient);
await act(() => await act(async () => {
hook.current.login(adminCredentials.email, adminCredentials.password) await hook.current.login(
); adminCredentials.email,
adminCredentials.password
);
});
expect(hook.current.user.email).toBe(adminCredentials.email); expect(hook.current.user.email).toBe(adminCredentials.email);
adminCredentials.token = getTokens().auth; adminCredentials.token = getTokens().auth;
@ -52,9 +55,9 @@ describe("User", () => {
it("will not be logged in if doesn't have valid credentials", async done => { it("will not be logged in if doesn't have valid credentials", async done => {
const hook = renderAuthProvider(apolloClient); const hook = renderAuthProvider(apolloClient);
await act(() => await act(async () => {
hook.current.login(adminCredentials.email, "NotAValidPassword123!") await hook.current.login(adminCredentials.email, "NotAValidPassword123!");
); });
expect(hook.current.user).toBe(null); expect(hook.current.user).toBe(null);
done(); done();
@ -63,12 +66,12 @@ describe("User", () => {
it("will not be logged in if is non-staff", async done => { it("will not be logged in if is non-staff", async done => {
const hook = renderAuthProvider(apolloClient); const hook = renderAuthProvider(apolloClient);
await act(() => await act(async () => {
hook.current.login( await hook.current.login(
nonStaffUserCredentials.email, nonStaffUserCredentials.email,
nonStaffUserCredentials.password nonStaffUserCredentials.password
) );
); });
expect(hook.current.user).toBe(undefined); expect(hook.current.user).toBe(undefined);
done(); done();

View file

@ -1,5 +1,5 @@
import React from "react"; import React from "react";
import renderer from "react-test-renderer"; import renderer, { ReactTestRendererJSON } from "react-test-renderer";
import { TimezoneProvider } from "../Timezone"; import { TimezoneProvider } from "../Timezone";
import Date from "./Date"; import Date from "./Date";
@ -31,7 +31,9 @@ test("Render humanized date with timezone GMT-11", () => {
<Date date={testDate} /> <Date date={testDate} />
</TimezoneProvider> </TimezoneProvider>
); );
expect(date.toJSON().props.dateTime).toEqual(testDate); expect((date.toJSON() as ReactTestRendererJSON).props.dateTime).toEqual(
testDate
);
}); });
test("Render humanized date with timezone GMT+13", () => { test("Render humanized date with timezone GMT+13", () => {
@ -40,5 +42,7 @@ test("Render humanized date with timezone GMT+13", () => {
<Date date={testDate} /> <Date date={testDate} />
</TimezoneProvider> </TimezoneProvider>
); );
expect(date.toJSON().props.dateTime).toEqual(testDate); expect((date.toJSON() as ReactTestRendererJSON).props.dateTime).toEqual(
testDate
);
}); });

View file

@ -249,4 +249,5 @@ const SingleAutocompleteSelectField: React.FC<SingleAutocompleteSelectFieldProps
/> />
); );
}; };
export default SingleAutocompleteSelectField; export default SingleAutocompleteSelectField;

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,3 @@
import Card from "@material-ui/core/Card";
import Checkbox from "@material-ui/core/Checkbox";
import { createMuiTheme, Theme } from "@material-ui/core/styles"; import { createMuiTheme, Theme } from "@material-ui/core/styles";
import { darken, fade } from "@material-ui/core/styles/colorManipulator"; import { darken, fade } from "@material-ui/core/styles/colorManipulator";
import { ThemeOptions } from "@material-ui/core/styles/createMuiTheme"; import { ThemeOptions } from "@material-ui/core/styles/createMuiTheme";
@ -8,8 +6,6 @@ import {
PaletteOptions PaletteOptions
} from "@material-ui/core/styles/createPalette"; } from "@material-ui/core/styles/createPalette";
import { Overrides } from "@material-ui/core/styles/overrides"; import { Overrides } from "@material-ui/core/styles/overrides";
import TextField from "@material-ui/core/TextField";
import Typography from "@material-ui/core/Typography";
import { createElement } from "react"; import { createElement } from "react";
import { IThemeColors } from "./components/Theme/themes"; import { IThemeColors } from "./components/Theme/themes";
@ -551,6 +547,21 @@ const createTheme = (colors: IThemeColors): ITheme =>
props: { props: {
MuiFormControl: { MuiFormControl: {
variant: "filled" variant: "filled"
},
MuiTextField: {
variant: "outlined"
},
MuiCard: {
elevation: 0
},
MuiTypography: {
component: "div"
},
MuiCheckbox: {
checkedIcon: createElement(CheckboxCheckedIcon),
color: "primary",
icon: createElement(CheckboxIcon),
indeterminateIcon: createElement(CheckboxIndeterminateIcon)
} }
}, },
shadows: [ shadows: [
@ -597,25 +608,4 @@ const createTheme = (colors: IThemeColors): ITheme =>
} }
} as IThemeOptions); } as IThemeOptions);
TextField.defaultProps = {
...TextField.defaultProps,
variant: "outlined"
};
Card.defaultProps = {
...Card.defaultProps,
elevation: 0
};
Typography.defaultProps = {
component: "div"
};
Checkbox.defaultProps = {
checkedIcon: createElement(CheckboxCheckedIcon),
color: "primary",
icon: createElement(CheckboxIcon),
indeterminateIcon: createElement(CheckboxIndeterminateIcon)
};
export default createTheme; export default createTheme;