From c865a349e4b7e5a74cd34847890fa9b4535a4898 Mon Sep 17 00:00:00 2001 From: Erik Engervall Date: Fri, 23 Apr 2021 00:51:23 +0200 Subject: [PATCH] Move usePluginApiClientContext & useProjectContext into hooks where applicable Signed-off-by: Erik Engervall --- .../src/features/CreateRc/CreateRc.test.tsx | 6 ------ .../src/features/CreateRc/CreateRc.tsx | 3 --- .../CreateRc/hooks/useCreateRc.test.tsx | 8 ++++++-- .../src/features/CreateRc/hooks/useCreateRc.ts | 6 +++--- .../src/features/Patch/PatchBody.tsx | 1 - .../src/features/Patch/hooks/usePatch.test.ts | 8 ++++++-- .../src/features/Patch/hooks/usePatch.ts | 5 ++--- .../features/PromoteRc/PromoteRcBody.test.tsx | 16 +--------------- .../src/features/PromoteRc/PromoteRcBody.tsx | 6 ------ .../PromoteRc/hooks/usePromoteRc.test.ts | 17 ++++++++++++----- .../features/PromoteRc/hooks/usePromoteRc.ts | 14 +++++--------- 11 files changed, 35 insertions(+), 55 deletions(-) diff --git a/plugins/github-release-manager/src/features/CreateRc/CreateRc.test.tsx b/plugins/github-release-manager/src/features/CreateRc/CreateRc.test.tsx index 98bf4903ac..3c4a324b25 100644 --- a/plugins/github-release-manager/src/features/CreateRc/CreateRc.test.tsx +++ b/plugins/github-release-manager/src/features/CreateRc/CreateRc.test.tsx @@ -18,7 +18,6 @@ import React from 'react'; import { render } from '@testing-library/react'; import { - mockApiClient, mockCalverProject, mockNextGitHubInfoSemver, mockReleaseBranch, @@ -29,11 +28,6 @@ import { import { TEST_IDS } from '../../test-helpers/test-ids'; import { useCreateRc } from './hooks/useCreateRc'; -jest.mock('../../contexts/PluginApiClientContext', () => ({ - usePluginApiClientContext: () => ({ - pluginApiClient: mockApiClient, - }), -})); jest.mock('../../contexts/ProjectContext', () => ({ useProjectContext: jest.fn(() => ({ project: mockCalverProject, diff --git a/plugins/github-release-manager/src/features/CreateRc/CreateRc.tsx b/plugins/github-release-manager/src/features/CreateRc/CreateRc.tsx index a3c3d33a26..ec3faeea83 100644 --- a/plugins/github-release-manager/src/features/CreateRc/CreateRc.tsx +++ b/plugins/github-release-manager/src/features/CreateRc/CreateRc.tsx @@ -38,7 +38,6 @@ import { ResponseStepDialog } from '../../components/ResponseStepDialog/Response import { SEMVER_PARTS } from '../../constants/constants'; import { TEST_IDS } from '../../test-helpers/test-ids'; import { useCreateRc } from './hooks/useCreateRc'; -import { usePluginApiClientContext } from '../../contexts/PluginApiClientContext'; import { useProjectContext } from '../../contexts/ProjectContext'; import { useStyles } from '../../styles/styles'; @@ -67,7 +66,6 @@ export const CreateRc = ({ releaseBranch, successCb, }: CreateRcProps) => { - const { pluginApiClient } = usePluginApiClientContext(); const { project } = useProjectContext(); const classes = useStyles(); @@ -88,7 +86,6 @@ export const CreateRc = ({ defaultBranch, latestRelease, nextGitHubInfo, - pluginApiClient, project, successCb, }); diff --git a/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.test.tsx b/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.test.tsx index 8da92a4f0e..cf4fa0f5ed 100644 --- a/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.test.tsx +++ b/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.test.tsx @@ -26,6 +26,12 @@ import { } from '../../../test-helpers/test-helpers'; import { useCreateRc } from './useCreateRc'; +jest.mock('../../../contexts/PluginApiClientContext', () => ({ + usePluginApiClientContext: () => ({ + pluginApiClient: mockApiClient, + }), +})); + describe('useCreateRc', () => { beforeEach(jest.clearAllMocks); @@ -35,7 +41,6 @@ describe('useCreateRc', () => { defaultBranch: mockDefaultBranch, latestRelease: mockReleaseVersionCalver, nextGitHubInfo: mockNextGitHubInfoCalver, - pluginApiClient: mockApiClient, project: mockCalverProject, }), ); @@ -54,7 +59,6 @@ describe('useCreateRc', () => { defaultBranch: mockDefaultBranch, latestRelease: mockReleaseVersionCalver, nextGitHubInfo: mockNextGitHubInfoCalver, - pluginApiClient: mockApiClient, project: mockCalverProject, successCb: jest.fn(), }), diff --git a/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.ts b/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.ts index 2b1b0b688c..30d5a8894f 100644 --- a/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.ts +++ b/plugins/github-release-manager/src/features/CreateRc/hooks/useCreateRc.ts @@ -20,19 +20,18 @@ import { useAsync, useAsyncFn } from 'react-use'; import { GetLatestReleaseResult, GetRepositoryResult, - IPluginApiClient, } from '../../../api/PluginApiClient'; import { CardHook, ComponentConfigCreateRc } from '../../../types/types'; import { getRcGitHubInfo } from '../../../helpers/getRcGitHubInfo'; import { GitHubReleaseManagerError } from '../../../errors/GitHubReleaseManagerError'; import { Project } from '../../../contexts/ProjectContext'; import { useResponseSteps } from '../../../hooks/useResponseSteps'; +import { usePluginApiClientContext } from '../../../contexts/PluginApiClientContext'; interface CreateRC { defaultBranch: GetRepositoryResult['defaultBranch']; latestRelease: GetLatestReleaseResult; nextGitHubInfo: ReturnType; - pluginApiClient: IPluginApiClient; project: Project; successCb?: ComponentConfigCreateRc['successCb']; } @@ -41,10 +40,11 @@ export function useCreateRc({ defaultBranch, latestRelease, nextGitHubInfo, - pluginApiClient, project, successCb, }: CreateRC): CardHook { + const { pluginApiClient } = usePluginApiClientContext(); + if (nextGitHubInfo.error) { throw new GitHubReleaseManagerError( `Unexpected error: ${ diff --git a/plugins/github-release-manager/src/features/Patch/PatchBody.tsx b/plugins/github-release-manager/src/features/Patch/PatchBody.tsx index ec7b6ab1f3..7c99e66f9e 100644 --- a/plugins/github-release-manager/src/features/Patch/PatchBody.tsx +++ b/plugins/github-release-manager/src/features/Patch/PatchBody.tsx @@ -94,7 +94,6 @@ export const PatchBody = ({ const { progress, responseSteps, run, runInvoked } = usePatch({ bumpedTag, latestRelease, - pluginApiClient, project, tagParts, successCb, diff --git a/plugins/github-release-manager/src/features/Patch/hooks/usePatch.test.ts b/plugins/github-release-manager/src/features/Patch/hooks/usePatch.test.ts index 240d39292c..be25b84809 100644 --- a/plugins/github-release-manager/src/features/Patch/hooks/usePatch.test.ts +++ b/plugins/github-release-manager/src/features/Patch/hooks/usePatch.test.ts @@ -27,6 +27,12 @@ import { } from '../../../test-helpers/test-helpers'; import { usePatch } from './usePatch'; +jest.mock('../../../contexts/PluginApiClientContext', () => ({ + usePluginApiClientContext: () => ({ + pluginApiClient: mockApiClient, + }), +})); + describe('patch', () => { beforeEach(jest.clearAllMocks); @@ -35,7 +41,6 @@ describe('patch', () => { usePatch({ bumpedTag: mockBumpedTag, latestRelease: mockReleaseVersionCalver, - pluginApiClient: mockApiClient, project: mockCalverProject, tagParts: mockTagParts, }), @@ -54,7 +59,6 @@ describe('patch', () => { usePatch({ bumpedTag: mockBumpedTag, latestRelease: mockReleaseVersionCalver, - pluginApiClient: mockApiClient, project: mockCalverProject, tagParts: mockTagParts, successCb: jest.fn(), diff --git a/plugins/github-release-manager/src/features/Patch/hooks/usePatch.ts b/plugins/github-release-manager/src/features/Patch/hooks/usePatch.ts index af7e890ca9..06001f1771 100644 --- a/plugins/github-release-manager/src/features/Patch/hooks/usePatch.ts +++ b/plugins/github-release-manager/src/features/Patch/hooks/usePatch.ts @@ -20,18 +20,17 @@ import { useAsync, useAsyncFn } from 'react-use'; import { GetLatestReleaseResult, GetRecentCommitsResultSingle, - IPluginApiClient, } from '../../../api/PluginApiClient'; import { CalverTagParts } from '../../../helpers/tagParts/getCalverTagParts'; import { ComponentConfigPatch, CardHook } from '../../../types/types'; import { Project } from '../../../contexts/ProjectContext'; import { SemverTagParts } from '../../../helpers/tagParts/getSemverTagParts'; +import { usePluginApiClientContext } from '../../../contexts/PluginApiClientContext'; import { useResponseSteps } from '../../../hooks/useResponseSteps'; interface Patch { bumpedTag: string; latestRelease: NonNullable; - pluginApiClient: IPluginApiClient; project: Project; tagParts: NonNullable; successCb?: ComponentConfigPatch['successCb']; @@ -41,11 +40,11 @@ interface Patch { export function usePatch({ bumpedTag, latestRelease, - pluginApiClient, project, tagParts, successCb, }: Patch): CardHook { + const { pluginApiClient } = usePluginApiClientContext(); const { responseSteps, addStepToResponseSteps, diff --git a/plugins/github-release-manager/src/features/PromoteRc/PromoteRcBody.test.tsx b/plugins/github-release-manager/src/features/PromoteRc/PromoteRcBody.test.tsx index 51724a1e22..2d67832587 100644 --- a/plugins/github-release-manager/src/features/PromoteRc/PromoteRcBody.test.tsx +++ b/plugins/github-release-manager/src/features/PromoteRc/PromoteRcBody.test.tsx @@ -17,23 +17,9 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { - mockApiClient, - mockCalverProject, - mockReleaseCandidateCalver, -} from '../../test-helpers/test-helpers'; +import { mockReleaseCandidateCalver } from '../../test-helpers/test-helpers'; import { TEST_IDS } from '../../test-helpers/test-ids'; -jest.mock('../../contexts/PluginApiClientContext', () => ({ - usePluginApiClientContext: () => ({ - pluginApiClient: mockApiClient, - }), -})); -jest.mock('../../contexts/ProjectContext', () => ({ - useProjectContext: () => ({ - project: mockCalverProject, - }), -})); jest.mock('./hooks/usePromoteRc', () => ({ usePromoteRc: () => ({ run: jest.fn(), diff --git a/plugins/github-release-manager/src/features/PromoteRc/PromoteRcBody.tsx b/plugins/github-release-manager/src/features/PromoteRc/PromoteRcBody.tsx index bfdfd1a976..5dfe4b13aa 100644 --- a/plugins/github-release-manager/src/features/PromoteRc/PromoteRcBody.tsx +++ b/plugins/github-release-manager/src/features/PromoteRc/PromoteRcBody.tsx @@ -22,8 +22,6 @@ import { Differ } from '../../components/Differ'; import { GetLatestReleaseResult } from '../../api/PluginApiClient'; import { ResponseStepDialog } from '../../components/ResponseStepDialog/ResponseStepDialog'; import { TEST_IDS } from '../../test-helpers/test-ids'; -import { usePluginApiClientContext } from '../../contexts/PluginApiClientContext'; -import { useProjectContext } from '../../contexts/ProjectContext'; import { usePromoteRc } from './hooks/usePromoteRc'; import { useStyles } from '../../styles/styles'; @@ -33,14 +31,10 @@ interface PromoteRcBodyProps { } export const PromoteRcBody = ({ rcRelease, successCb }: PromoteRcBodyProps) => { - const { pluginApiClient } = usePluginApiClientContext(); - const { project } = useProjectContext(); const classes = useStyles(); const releaseVersion = rcRelease.tagName.replace('rc-', 'version-'); const { progress, responseSteps, run, runInvoked } = usePromoteRc({ - pluginApiClient, - project, rcRelease, releaseVersion, successCb, diff --git a/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.test.ts b/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.test.ts index 4803f2a551..4b7149ba7b 100644 --- a/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.test.ts +++ b/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.test.ts @@ -19,19 +19,28 @@ import { waitFor } from '@testing-library/react'; import { mockApiClient, + mockCalverProject, mockReleaseCandidateCalver, - mockSemverProject, } from '../../../test-helpers/test-helpers'; import { usePromoteRc } from './usePromoteRc'; +jest.mock('../../../contexts/PluginApiClientContext', () => ({ + usePluginApiClientContext: () => ({ + pluginApiClient: mockApiClient, + }), +})); +jest.mock('../../../contexts/ProjectContext', () => ({ + useProjectContext: () => ({ + project: mockCalverProject, + }), +})); + describe('usePromoteRc', () => { beforeEach(jest.clearAllMocks); it('should return the expected responseSteps and progress', async () => { const { result } = renderHook(() => usePromoteRc({ - pluginApiClient: mockApiClient, - project: mockSemverProject, rcRelease: mockReleaseCandidateCalver, releaseVersion: 'version-1.2.3', }), @@ -48,8 +57,6 @@ describe('usePromoteRc', () => { 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(), diff --git a/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.ts b/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.ts index abcab2f480..4d1a9e4037 100644 --- a/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.ts +++ b/plugins/github-release-manager/src/features/PromoteRc/hooks/usePromoteRc.ts @@ -17,29 +17,25 @@ import { useState, useEffect } from 'react'; import { useAsync, useAsyncFn } from 'react-use'; -import { - GetLatestReleaseResult, - IPluginApiClient, -} from '../../../api/PluginApiClient'; +import { GetLatestReleaseResult } from '../../../api/PluginApiClient'; import { CardHook, ComponentConfigPromoteRc } from '../../../types/types'; -import { Project } from '../../../contexts/ProjectContext'; +import { useProjectContext } from '../../../contexts/ProjectContext'; +import { usePluginApiClientContext } from '../../../contexts/PluginApiClientContext'; import { useResponseSteps } from '../../../hooks/useResponseSteps'; interface PromoteRc { - pluginApiClient: IPluginApiClient; - project: Project; rcRelease: NonNullable; releaseVersion: string; successCb?: ComponentConfigPromoteRc['successCb']; } export function usePromoteRc({ - pluginApiClient, - project, rcRelease, releaseVersion, successCb, }: PromoteRc): CardHook { + const { pluginApiClient } = usePluginApiClientContext(); + const { project } = useProjectContext(); const { responseSteps, addStepToResponseSteps,