Add @testing-library/react-hooks devDep
Fix tests for Components that use hooks Remove ReloadButton component Signed-off-by: Erik Engervall <erik.engervall@gmail.com>
This commit is contained in:
@@ -39,12 +39,13 @@
|
||||
"@backstage/dev-utils": "^0.1.13",
|
||||
"@backstage/test-utils": "^0.1.10",
|
||||
"@testing-library/jest-dom": "^5.10.1",
|
||||
"@testing-library/react-hooks": "^5.1.1",
|
||||
"@testing-library/react": "^11.2.5",
|
||||
"@testing-library/user-event": "^12.0.7",
|
||||
"@types/jest": "^26.0.7",
|
||||
"@types/node": "^14.14.32",
|
||||
"msw": "^0.21.2",
|
||||
"cross-fetch": "^3.0.6"
|
||||
"cross-fetch": "^3.0.6",
|
||||
"msw": "^0.21.2"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -42,7 +42,7 @@ import {
|
||||
GetLatestReleaseResult,
|
||||
GetRepositoryResult,
|
||||
} from '../../api/PluginApiClient';
|
||||
import { ResponseStepList2 } from '../../components/ResponseStepList/ResponseStepList2';
|
||||
import { ResponseStepList } from '../../components/ResponseStepList/ResponseStepList';
|
||||
import { LinearProgressWithLabel } from '../../components/LinearProgressWithLabel';
|
||||
|
||||
interface CreateRcProps {
|
||||
@@ -90,7 +90,7 @@ export const CreateRc = ({
|
||||
|
||||
<LinearProgressWithLabel value={progress} />
|
||||
|
||||
<ResponseStepList2 responseSteps={responseSteps} />
|
||||
<ResponseStepList responseSteps={responseSteps} />
|
||||
</Dialog>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
/*
|
||||
* Copyright 2021 Spotify AB
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
mockApiClient,
|
||||
mockCalverProject,
|
||||
mockDefaultBranch,
|
||||
mockNextGitHubInfo,
|
||||
mockReleaseVersionCalver,
|
||||
} from '../../../test-helpers/test-helpers';
|
||||
import { useCreateRc } from './useCreateRc';
|
||||
|
||||
// TODO: Fix tests
|
||||
/* eslint-disable jest/no-disabled-tests */
|
||||
|
||||
describe.skip('useCreateRc', () => {
|
||||
beforeEach(jest.clearAllMocks);
|
||||
|
||||
it('should work', () => {
|
||||
const result = useCreateRc({
|
||||
defaultBranch: mockDefaultBranch,
|
||||
latestRelease: mockReleaseVersionCalver,
|
||||
nextGitHubInfo: mockNextGitHubInfo,
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockCalverProject,
|
||||
});
|
||||
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
Array [
|
||||
Object {
|
||||
"link": "latestCommit.html_url",
|
||||
"message": "Fetched latest commit from \\"mock_defaultBranch\\"",
|
||||
"secondaryMessage": "with message \\"latestCommit.commit.message\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Cut Release Branch",
|
||||
"secondaryMessage": "with ref \\"mock_createRef_ref\\"",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_compareCommits_html_url",
|
||||
"message": "Fetched commit comparison",
|
||||
"secondaryMessage": "rc/1.2.3...rc/1.2.3",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_createRelease_html_url",
|
||||
"message": "Created Release Candidate \\"mock_createRelease_name\\"",
|
||||
"secondaryMessage": "with tag \\"rc-1.2.3\\"",
|
||||
},
|
||||
]
|
||||
`);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright 2021 Spotify AB
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { renderHook, act } from '@testing-library/react-hooks';
|
||||
import { waitFor } from '@testing-library/react';
|
||||
|
||||
import {
|
||||
mockApiClient,
|
||||
mockCalverProject,
|
||||
mockDefaultBranch,
|
||||
mockNextGitHubInfo,
|
||||
mockReleaseVersionCalver,
|
||||
} from '../../../test-helpers/test-helpers';
|
||||
import { useCreateRc } from './useCreateRc';
|
||||
|
||||
describe('useCreateRc', () => {
|
||||
beforeEach(jest.clearAllMocks);
|
||||
|
||||
it('should return the expected responseSteps and progress', async () => {
|
||||
const { result } = renderHook(() =>
|
||||
useCreateRc({
|
||||
defaultBranch: mockDefaultBranch,
|
||||
latestRelease: mockReleaseVersionCalver,
|
||||
nextGitHubInfo: mockNextGitHubInfo,
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockCalverProject,
|
||||
}),
|
||||
);
|
||||
|
||||
await act(async () => {
|
||||
await waitFor(() => result.current.run());
|
||||
});
|
||||
|
||||
expect(result.error).toEqual(undefined);
|
||||
expect(result.current.responseSteps).toHaveLength(4);
|
||||
});
|
||||
|
||||
it('should return the expected responseSteps and progress (with successCb)', async () => {
|
||||
const { result } = renderHook(() =>
|
||||
useCreateRc({
|
||||
defaultBranch: mockDefaultBranch,
|
||||
latestRelease: mockReleaseVersionCalver,
|
||||
nextGitHubInfo: mockNextGitHubInfo,
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockCalverProject,
|
||||
successCb: jest.fn(),
|
||||
}),
|
||||
);
|
||||
|
||||
await act(async () => {
|
||||
await waitFor(() => result.current.run());
|
||||
});
|
||||
|
||||
expect(result.current.responseSteps).toHaveLength(5);
|
||||
expect(result.current).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"progress": 100,
|
||||
"responseSteps": Array [
|
||||
Object {
|
||||
"link": "latestCommit.html_url",
|
||||
"message": "Fetched latest commit from \\"mock_defaultBranch\\"",
|
||||
"secondaryMessage": "with message \\"latestCommit.commit.message\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Cut Release Branch",
|
||||
"secondaryMessage": "with ref \\"mock_createRef_ref\\"",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_compareCommits_html_url",
|
||||
"message": "Fetched commit comparison",
|
||||
"secondaryMessage": "rc/1.2.3...rc/1.2.3",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_createRelease_html_url",
|
||||
"message": "Created Release Candidate \\"mock_createRelease_name\\"",
|
||||
"secondaryMessage": "with tag \\"rc-1.2.3\\"",
|
||||
},
|
||||
Object {
|
||||
"icon": "success",
|
||||
"message": "Success callback successfully called 🚀",
|
||||
},
|
||||
],
|
||||
"run": [Function],
|
||||
}
|
||||
`);
|
||||
});
|
||||
});
|
||||
@@ -34,7 +34,7 @@ jest.mock('../../contexts/ProjectContext', () => ({
|
||||
useProjectContext: jest.fn(() => mockCalverProject),
|
||||
}));
|
||||
jest.mock('./sideEffects/usePatch', () => ({
|
||||
useCreateRc: () => ({
|
||||
usePatch: () => ({
|
||||
run: jest.fn(),
|
||||
responseSteps: [],
|
||||
progress: 0,
|
||||
@@ -44,10 +44,7 @@ jest.mock('./sideEffects/usePatch', () => ({
|
||||
import { PatchBody } from './PatchBody';
|
||||
import { TEST_IDS } from '../../test-helpers/test-ids';
|
||||
|
||||
// TODO: Fix tests
|
||||
/* eslint-disable jest/no-disabled-tests */
|
||||
|
||||
describe.skip('PatchBody', () => {
|
||||
describe('PatchBody', () => {
|
||||
beforeEach(jest.clearAllMocks);
|
||||
|
||||
it('should render error', async () => {
|
||||
|
||||
@@ -51,7 +51,7 @@ import {
|
||||
} from '../../api/PluginApiClient';
|
||||
import { GitHubReleaseManagerError } from '../../errors/GitHubReleaseManagerError';
|
||||
import { LinearProgressWithLabel } from '../../components/LinearProgressWithLabel';
|
||||
import { ResponseStepList2 } from '../../components/ResponseStepList/ResponseStepList2';
|
||||
import { ResponseStepList } from '../../components/ResponseStepList/ResponseStepList';
|
||||
|
||||
interface PatchBodyProps {
|
||||
bumpedTag: string;
|
||||
@@ -109,7 +109,7 @@ export const PatchBody = ({
|
||||
|
||||
<LinearProgressWithLabel value={progress} />
|
||||
|
||||
<ResponseStepList2 responseSteps={responseSteps} />
|
||||
<ResponseStepList responseSteps={responseSteps} />
|
||||
</Dialog>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -14,66 +14,106 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { renderHook, act } from '@testing-library/react-hooks';
|
||||
import { waitFor } from '@testing-library/react';
|
||||
|
||||
import {
|
||||
mockApiClient,
|
||||
mockBumpedTag,
|
||||
mockCalverProject,
|
||||
mockReleaseVersionCalver,
|
||||
mockSelectedPatchCommit,
|
||||
mockTagParts,
|
||||
} from '../../../test-helpers/test-helpers';
|
||||
import { usePatch } from './usePatch';
|
||||
|
||||
// TODO: Fix tests
|
||||
/* eslint-disable jest/no-disabled-tests */
|
||||
|
||||
describe.skip('patch', () => {
|
||||
describe('patch', () => {
|
||||
beforeEach(jest.clearAllMocks);
|
||||
|
||||
it('should work', async () => {
|
||||
const result = await usePatch({
|
||||
bumpedTag: mockBumpedTag,
|
||||
latestRelease: mockReleaseVersionCalver,
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockCalverProject,
|
||||
tagParts: mockTagParts,
|
||||
it('should return the expected responseSteps and progress', async () => {
|
||||
const { result } = renderHook(() =>
|
||||
usePatch({
|
||||
bumpedTag: mockBumpedTag,
|
||||
latestRelease: mockReleaseVersionCalver,
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockCalverProject,
|
||||
tagParts: mockTagParts,
|
||||
}),
|
||||
);
|
||||
|
||||
await act(async () => {
|
||||
await waitFor(() => result.current.run(mockSelectedPatchCommit));
|
||||
});
|
||||
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
Array [
|
||||
Object {
|
||||
"link": "mock_branch_links_html",
|
||||
"message": "Fetched release branch \\"rc/1.2.3\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Created temporary commit",
|
||||
"secondaryMessage": "with message \\"mock_commit_message\\"",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_merge_html_url",
|
||||
"message": "Merged temporary commit into \\"rc/1.2.3\\"",
|
||||
"secondaryMessage": "with message \\"mock_merge_commit_message\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Cherry-picked patch commit to \\"mock_branch_commit_sha\\"",
|
||||
"secondaryMessage": "with message \\"mock_cherrypick_message\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Updated reference \\"mock_reference_ref\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Created new tag object",
|
||||
"secondaryMessage": "with name \\"mock_tag_object_tag\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Created new reference \\"mock_reference_ref\\"",
|
||||
"secondaryMessage": "for tag object \\"mock_tag_object_tag\\"",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_update_release_html_url",
|
||||
"message": "Updated release \\"mock_update_release_name\\"",
|
||||
"secondaryMessage": "with tag mock_update_release_tag_name",
|
||||
},
|
||||
]
|
||||
expect(result.error).toEqual(undefined);
|
||||
expect(result.current.responseSteps).toHaveLength(9);
|
||||
});
|
||||
|
||||
it('should return the expected responseSteps and progress (with successCb)', async () => {
|
||||
const { result } = renderHook(() =>
|
||||
usePatch({
|
||||
bumpedTag: mockBumpedTag,
|
||||
latestRelease: mockReleaseVersionCalver,
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockCalverProject,
|
||||
tagParts: mockTagParts,
|
||||
successCb: jest.fn(),
|
||||
}),
|
||||
);
|
||||
|
||||
await act(async () => {
|
||||
await waitFor(() => result.current.run(mockSelectedPatchCommit));
|
||||
});
|
||||
|
||||
expect(result.error).toEqual(undefined);
|
||||
expect(result.current.responseSteps).toHaveLength(10);
|
||||
expect(result.current).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"progress": 100,
|
||||
"responseSteps": Array [
|
||||
Object {
|
||||
"link": "mock_branch_links_html",
|
||||
"message": "Fetched release branch \\"rc/1.2.3\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Created temporary commit",
|
||||
"secondaryMessage": "with message \\"mock_commit_message\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Forced branch \\"rc/1.2.3\\" to temporary commit \\"mock_commit_sha\\"",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_merge_html_url",
|
||||
"message": "Merged temporary commit into \\"rc/1.2.3\\"",
|
||||
"secondaryMessage": "with message \\"mock_merge_commit_message\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Cherry-picked patch commit to \\"mock_branch_commit_sha\\"",
|
||||
"secondaryMessage": "with message \\"mock_cherrypick_message\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Updated reference \\"mock_reference_ref\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Created new tag object",
|
||||
"secondaryMessage": "with name \\"mock_tag_object_tag\\"",
|
||||
},
|
||||
Object {
|
||||
"message": "Created new reference \\"mock_reference_ref\\"",
|
||||
"secondaryMessage": "for tag object \\"mock_tag_object_tag\\"",
|
||||
},
|
||||
Object {
|
||||
"link": "mock_update_release_html_url",
|
||||
"message": "Updated release \\"mock_update_release_name\\"",
|
||||
"secondaryMessage": "with tag mock_update_release_tag_name",
|
||||
},
|
||||
Object {
|
||||
"icon": "success",
|
||||
"message": "Success callback successfully called 🚀",
|
||||
},
|
||||
],
|
||||
"run": [Function],
|
||||
}
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -25,7 +25,7 @@ import { usePluginApiClientContext } from '../../contexts/PluginApiClientContext
|
||||
import { useProjectContext } from '../../contexts/ProjectContext';
|
||||
import { useStyles } from '../../styles/styles';
|
||||
import { GetLatestReleaseResult } from '../../api/PluginApiClient';
|
||||
import { ResponseStepList2 } from '../../components/ResponseStepList/ResponseStepList2';
|
||||
import { ResponseStepList } from '../../components/ResponseStepList/ResponseStepList';
|
||||
import { LinearProgressWithLabel } from '../../components/LinearProgressWithLabel';
|
||||
|
||||
interface PromoteRcBodyProps {
|
||||
@@ -54,7 +54,7 @@ export const PromoteRcBody = ({ rcRelease, successCb }: PromoteRcBodyProps) => {
|
||||
|
||||
<LinearProgressWithLabel value={progress} />
|
||||
|
||||
<ResponseStepList2 responseSteps={responseSteps} />
|
||||
<ResponseStepList responseSteps={responseSteps} />
|
||||
</Dialog>
|
||||
);
|
||||
}
|
||||
|
||||
+52
-19
@@ -14,6 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { renderHook, act } from '@testing-library/react-hooks';
|
||||
import { waitFor } from '@testing-library/react';
|
||||
|
||||
import {
|
||||
mockApiClient,
|
||||
mockReleaseCandidateCalver,
|
||||
@@ -21,29 +24,59 @@ import {
|
||||
} from '../../../test-helpers/test-helpers';
|
||||
import { usePromoteRc } from './usePromoteRc';
|
||||
|
||||
// TODO: Fix tests
|
||||
/* eslint-disable jest/no-disabled-tests */
|
||||
|
||||
describe.skip('usePromoteRc', () => {
|
||||
describe('usePromoteRc', () => {
|
||||
beforeEach(jest.clearAllMocks);
|
||||
|
||||
it('should work', () => {
|
||||
const result = usePromoteRc({
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockSemverProject,
|
||||
rcRelease: mockReleaseCandidateCalver,
|
||||
releaseVersion: 'version-1.2.3',
|
||||
successCb: jest.fn(),
|
||||
it('should return the expected responseSteps and progress', async () => {
|
||||
const { result } = renderHook(() =>
|
||||
usePromoteRc({
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockSemverProject,
|
||||
rcRelease: mockReleaseCandidateCalver,
|
||||
releaseVersion: 'version-1.2.3',
|
||||
}),
|
||||
);
|
||||
|
||||
await act(async () => {
|
||||
await waitFor(() => result.current.run());
|
||||
});
|
||||
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
Array [
|
||||
Object {
|
||||
"link": "mock_release_html_url",
|
||||
"message": "Promoted \\"mock_release_name\\"",
|
||||
"secondaryMessage": "from \\"rc-2020.01.01_1\\" to \\"mock_release_tag_name\\"",
|
||||
},
|
||||
]
|
||||
expect(result.error).toEqual(undefined);
|
||||
expect(result.current.responseSteps).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('should return the expected responseSteps and progress (with successCb)', async () => {
|
||||
const { result } = renderHook(() =>
|
||||
usePromoteRc({
|
||||
pluginApiClient: mockApiClient,
|
||||
project: mockSemverProject,
|
||||
rcRelease: mockReleaseCandidateCalver,
|
||||
releaseVersion: 'version-1.2.3',
|
||||
successCb: jest.fn(),
|
||||
}),
|
||||
);
|
||||
|
||||
await act(async () => {
|
||||
await waitFor(() => result.current.run());
|
||||
});
|
||||
|
||||
expect(result.current.responseSteps).toHaveLength(2);
|
||||
expect(result.current).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"progress": 100,
|
||||
"responseSteps": Array [
|
||||
Object {
|
||||
"link": "mock_release_html_url",
|
||||
"message": "Promoted \\"mock_release_name\\"",
|
||||
"secondaryMessage": "from \\"rc-2020.01.01_1\\" to \\"mock_release_tag_name\\"",
|
||||
},
|
||||
Object {
|
||||
"icon": "success",
|
||||
"message": "Success callback successfully called 🚀",
|
||||
},
|
||||
],
|
||||
"run": [Function],
|
||||
}
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
/*
|
||||
* Copyright 2021 Spotify AB
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { render } from '@testing-library/react';
|
||||
|
||||
import { TEST_IDS } from '../test-helpers/test-ids';
|
||||
import { ReloadButton } from './ReloadButton';
|
||||
|
||||
describe('ReloadButton', () => {
|
||||
it('render ReloadButton', () => {
|
||||
const { getByTestId } = render(<ReloadButton />);
|
||||
|
||||
expect(getByTestId(TEST_IDS.components.reloadButton)).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* Copyright 2021 Spotify AB
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { Button } from '@material-ui/core';
|
||||
|
||||
import { TEST_IDS } from '../test-helpers/test-ids';
|
||||
|
||||
interface ReloadButtonProps {
|
||||
style?: React.CSSProperties;
|
||||
}
|
||||
|
||||
export const ReloadButton = ({ style }: ReloadButtonProps) => (
|
||||
<Button
|
||||
data-testid={TEST_IDS.components.reloadButton}
|
||||
variant="contained"
|
||||
color="primary"
|
||||
onClick={() => window.location.reload()}
|
||||
style={style}
|
||||
>
|
||||
Reload page to see effects
|
||||
</Button>
|
||||
);
|
||||
+3
-4
@@ -27,7 +27,7 @@ jest.mock('../../contexts/RefetchContext', () => ({
|
||||
describe('ResponseStepList', () => {
|
||||
it('should render loading state when loading', () => {
|
||||
const { getByTestId } = render(
|
||||
<ResponseStepList loading title="mock_responseStepList_title" />,
|
||||
<ResponseStepList loading responseSteps={[]} />,
|
||||
);
|
||||
|
||||
expect(
|
||||
@@ -37,7 +37,7 @@ describe('ResponseStepList', () => {
|
||||
|
||||
it('should render loading state when no responseSteps', () => {
|
||||
const { getByTestId } = render(
|
||||
<ResponseStepList loading={false} title="mock_responseStepList_title" />,
|
||||
<ResponseStepList loading={false} responseSteps={[]} />,
|
||||
);
|
||||
|
||||
expect(
|
||||
@@ -49,8 +49,7 @@ describe('ResponseStepList', () => {
|
||||
const { getByTestId } = render(
|
||||
<ResponseStepList
|
||||
loading={false}
|
||||
title="mock_responseStepList_title"
|
||||
responseSteps={[]}
|
||||
responseSteps={[{ message: 'banana' }]}
|
||||
/>,
|
||||
);
|
||||
|
||||
|
||||
+6
-17
@@ -15,14 +15,7 @@
|
||||
*/
|
||||
|
||||
import React, { PropsWithChildren } from 'react';
|
||||
import {
|
||||
Button,
|
||||
Dialog,
|
||||
DialogActions,
|
||||
DialogContent,
|
||||
DialogTitle,
|
||||
List,
|
||||
} from '@material-ui/core';
|
||||
import { Button, DialogActions, DialogContent, List } from '@material-ui/core';
|
||||
|
||||
import { CenteredCircularProgress } from '../CenteredCircularProgress';
|
||||
import { ResponseStep } from '../../types/types';
|
||||
@@ -31,10 +24,9 @@ import { TEST_IDS } from '../../test-helpers/test-ids';
|
||||
import { useRefetchContext } from '../../contexts/RefetchContext';
|
||||
|
||||
interface ResponseStepListProps {
|
||||
responseSteps?: (ResponseStep | undefined)[];
|
||||
title: string;
|
||||
responseSteps: (ResponseStep | undefined)[];
|
||||
animationDelay?: number;
|
||||
loading: boolean;
|
||||
loading?: boolean;
|
||||
closeable?: boolean;
|
||||
denseList?: boolean;
|
||||
}
|
||||
@@ -44,16 +36,13 @@ export const ResponseStepList = ({
|
||||
animationDelay,
|
||||
loading = false,
|
||||
denseList = false,
|
||||
title,
|
||||
children,
|
||||
}: PropsWithChildren<ResponseStepListProps>) => {
|
||||
const { setRefetchTrigger } = useRefetchContext();
|
||||
|
||||
return (
|
||||
<Dialog open maxWidth="md" fullWidth>
|
||||
<DialogTitle>{title}</DialogTitle>
|
||||
|
||||
{loading || !responseSteps ? (
|
||||
<>
|
||||
{loading || responseSteps.length === 0 ? (
|
||||
<div style={{ margin: 10, textAlign: 'center' }}>
|
||||
<CenteredCircularProgress
|
||||
data-testid={TEST_IDS.components.circularProgress}
|
||||
@@ -95,6 +84,6 @@ export const ResponseStepList = ({
|
||||
</DialogActions>
|
||||
</>
|
||||
)}
|
||||
</Dialog>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
/*
|
||||
* Copyright 2021 Spotify AB
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React, { PropsWithChildren } from 'react';
|
||||
import { Button, DialogActions, DialogContent, List } from '@material-ui/core';
|
||||
|
||||
import { CenteredCircularProgress } from '../CenteredCircularProgress';
|
||||
import { ResponseStep } from '../../types/types';
|
||||
import { ResponseStepListItem } from './ResponseStepListItem';
|
||||
import { TEST_IDS } from '../../test-helpers/test-ids';
|
||||
import { useRefetchContext } from '../../contexts/RefetchContext';
|
||||
|
||||
interface ResponseStepListProps {
|
||||
responseSteps?: (ResponseStep | undefined)[];
|
||||
animationDelay?: number;
|
||||
loading?: boolean;
|
||||
closeable?: boolean;
|
||||
denseList?: boolean;
|
||||
}
|
||||
|
||||
// TODO: Replace `ResponseStepList` with this component
|
||||
|
||||
export const ResponseStepList2 = ({
|
||||
responseSteps,
|
||||
animationDelay,
|
||||
loading = false,
|
||||
denseList = false,
|
||||
children,
|
||||
}: PropsWithChildren<ResponseStepListProps>) => {
|
||||
const { setRefetchTrigger } = useRefetchContext();
|
||||
|
||||
return (
|
||||
<>
|
||||
{loading || !responseSteps ? (
|
||||
<div style={{ margin: 10, textAlign: 'center' }}>
|
||||
<CenteredCircularProgress
|
||||
data-testid={TEST_IDS.components.circularProgress}
|
||||
/>
|
||||
</div>
|
||||
) : (
|
||||
<>
|
||||
<DialogContent
|
||||
data-testid={TEST_IDS.components.responseStepListDialogContent}
|
||||
>
|
||||
<List dense={denseList}>
|
||||
{responseSteps.map((responseStep, index) => {
|
||||
if (!responseStep) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<ResponseStepListItem
|
||||
key={`ResponseStepListItem-${index}`}
|
||||
responseStep={responseStep}
|
||||
index={index}
|
||||
animationDelay={animationDelay}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</List>
|
||||
|
||||
{children}
|
||||
</DialogContent>
|
||||
<DialogActions>
|
||||
<Button
|
||||
onClick={() => setRefetchTrigger(Date.now())}
|
||||
color="primary"
|
||||
variant="contained"
|
||||
size="large"
|
||||
>
|
||||
Ok
|
||||
</Button>
|
||||
</DialogActions>
|
||||
</>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
@@ -48,9 +48,9 @@ describe('useQueryHandler', () => {
|
||||
it('should get parsedQuery and queryParams', () => {
|
||||
const { getByTestId } = render(<MockComponent />);
|
||||
|
||||
const smt = getByTestId(TEST_ID).innerHTML;
|
||||
const result = getByTestId(TEST_ID).innerHTML;
|
||||
|
||||
expect(smt).toMatchInlineSnapshot(`
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
"{
|
||||
\\"parsedQuery\\": {
|
||||
\\"versioningStrategy\\": \\"semver\\",
|
||||
|
||||
@@ -54,7 +54,6 @@ export const TEST_IDS = {
|
||||
},
|
||||
components: {
|
||||
divider: 'grm--divider',
|
||||
reloadButton: 'grm--reload-button',
|
||||
noLatestRelease: 'grm--no-latest-release',
|
||||
noReleaseBranch: 'grm--no-release-branch',
|
||||
circularProgress: 'grm--circular-progress',
|
||||
|
||||
@@ -5550,6 +5550,18 @@
|
||||
"@babel/runtime" "^7.5.4"
|
||||
"@types/testing-library__react-hooks" "^3.4.0"
|
||||
|
||||
"@testing-library/react-hooks@^5.1.1":
|
||||
version "5.1.1"
|
||||
resolved "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-5.1.1.tgz#1fbaae8a4e8a4a7f97b176c23e1e890c41bbbfa5"
|
||||
integrity sha512-52D2XnpelFDefnWpy/V6z2qGNj8JLIvW5DjYtelMvFXdEyWiykSaI7IXHwFy4ICoqXJDmmwHAiFRiFboub/U5g==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@types/react" ">=16.9.0"
|
||||
"@types/react-dom" ">=16.9.0"
|
||||
"@types/react-test-renderer" ">=16.9.0"
|
||||
filter-console "^0.1.1"
|
||||
react-error-boundary "^3.1.0"
|
||||
|
||||
"@testing-library/react@^11.2.5":
|
||||
version "11.2.6"
|
||||
resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.6.tgz#586a23adc63615985d85be0c903f374dab19200b"
|
||||
@@ -6483,6 +6495,13 @@
|
||||
"@types/webpack" "*"
|
||||
"@types/webpack-dev-server" "*"
|
||||
|
||||
"@types/react-dom@>=16.9.0":
|
||||
version "17.0.3"
|
||||
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.3.tgz#7fdf37b8af9d6d40127137865bb3fff8871d7ee1"
|
||||
integrity sha512-4NnJbCeWE+8YBzupn/YrJxZ8VnjcJq5iR1laqQ1vkpQgBiA7bwk0Rp24fxsdNinzJY2U+HHS4dJJDPdoMjdJ7w==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-dom@^16.9.8":
|
||||
version "16.9.8"
|
||||
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423"
|
||||
@@ -6526,6 +6545,13 @@
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-test-renderer@>=16.9.0":
|
||||
version "17.0.1"
|
||||
resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3120f7d1c157fba9df0118dae20cb0297ee0e06b"
|
||||
integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-text-truncate@^0.14.0":
|
||||
version "0.14.0"
|
||||
resolved "https://registry.npmjs.org/@types/react-text-truncate/-/react-text-truncate-0.14.0.tgz#588bbabbc7f2a13815e805f3a48942db73fe65fe"
|
||||
@@ -6562,6 +6588,15 @@
|
||||
dependencies:
|
||||
csstype "^2.2.0"
|
||||
|
||||
"@types/react@>=16.9.0":
|
||||
version "17.0.3"
|
||||
resolved "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz#ba6e215368501ac3826951eef2904574c262cc79"
|
||||
integrity sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==
|
||||
dependencies:
|
||||
"@types/prop-types" "*"
|
||||
"@types/scheduler" "*"
|
||||
csstype "^3.0.2"
|
||||
|
||||
"@types/reactcss@*":
|
||||
version "1.2.3"
|
||||
resolved "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.3.tgz#af28ae11bbb277978b99d04d1eedfd068ca71834"
|
||||
@@ -6643,6 +6678,11 @@
|
||||
"@types/node" "*"
|
||||
rollup "^0.63.4"
|
||||
|
||||
"@types/scheduler@*":
|
||||
version "0.16.1"
|
||||
resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275"
|
||||
integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==
|
||||
|
||||
"@types/semver@^6.0.0":
|
||||
version "6.2.1"
|
||||
resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.1.tgz#a236185670a7860f1597cf73bea2e16d001461ba"
|
||||
@@ -13254,6 +13294,11 @@ fill-range@^7.0.1:
|
||||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
filter-console@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.npmjs.org/filter-console/-/filter-console-0.1.1.tgz#6242be28982bba7415bcc6db74a79f4a294fa67c"
|
||||
integrity sha512-zrXoV1Uaz52DqPs+qEwNJWJFAWZpYJ47UNmpN9q4j+/EYsz85uV0DC9k8tRND5kYmoVzL0W+Y75q4Rg8sRJCdg==
|
||||
|
||||
filter-obj@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
|
||||
@@ -21909,6 +21954,13 @@ react-draggable@^4.0.3:
|
||||
classnames "^2.2.5"
|
||||
prop-types "^15.6.0"
|
||||
|
||||
react-error-boundary@^3.1.0:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.1.tgz#932c5ca5cbab8ec4fe37fd7b415aa5c3a47597e7"
|
||||
integrity sha512-W3xCd9zXnanqrTUeViceufD3mIW8Ut29BUD+S2f0eO2XCOU8b6UrJfY46RDGe5lxCJzfe4j0yvIfh0RbTZhKJw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
|
||||
react-error-overlay@^6.0.7, react-error-overlay@^6.0.9:
|
||||
version "6.0.9"
|
||||
resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
|
||||
|
||||
Reference in New Issue
Block a user