From 38189b977791287f54bbe2c2c14bebe08a6296e1 Mon Sep 17 00:00:00 2001 From: Erik Engervall Date: Fri, 30 Apr 2021 09:16:37 +0200 Subject: [PATCH] Use useUserContext instead of passing props, also, return an object from Api Signed-off-by: Erik Engervall --- .../src/GitReleaseManager.tsx | 9 +++------ .../src/api/GitReleaseApiClient.ts | 12 ++++++++---- .../features/RepoDetailsForm/Owner.test.tsx | 18 +++++++++--------- .../src/features/RepoDetailsForm/Owner.tsx | 10 ++++++---- .../RepoDetailsForm/RepoDetailsForm.tsx | 4 ++-- .../src/test-helpers/test-helpers.ts | 6 ++++-- 6 files changed, 32 insertions(+), 27 deletions(-) diff --git a/plugins/git-release-manager/src/GitReleaseManager.tsx b/plugins/git-release-manager/src/GitReleaseManager.tsx index 2b9cb99212..48a82fccdc 100644 --- a/plugins/git-release-manager/src/GitReleaseManager.tsx +++ b/plugins/git-release-manager/src/GitReleaseManager.tsx @@ -76,14 +76,11 @@ export function GitReleaseManager(props: GitReleaseManagerProps) { return ; } - if (!userResponse.value?.username) { + if (!userResponse.value?.user.username) { return Unable to retrieve username; } - const user = { - username: userResponse.value.username, - email: userResponse.value.email, - }; + const user = userResponse.value.user; return ( @@ -92,7 +89,7 @@ export function GitReleaseManager(props: GitReleaseManagerProps) { - + {isProjectValid(project) && } diff --git a/plugins/git-release-manager/src/api/GitReleaseApiClient.ts b/plugins/git-release-manager/src/api/GitReleaseApiClient.ts index 573010f5f0..0e7a7bc35c 100644 --- a/plugins/git-release-manager/src/api/GitReleaseApiClient.ts +++ b/plugins/git-release-manager/src/api/GitReleaseApiClient.ts @@ -118,8 +118,10 @@ export class GitReleaseApiClient implements GitReleaseApi { const userResponse = await octokit.users.getAuthenticated(); return { - username: userResponse.data.login, - email: userResponse.data.email ?? undefined, + user: { + username: userResponse.data.login, + email: userResponse.data.email ?? undefined, + }, }; }; @@ -523,8 +525,10 @@ export interface GitReleaseApi { getUser: ( args: OwnerRepo, ) => Promise<{ - username: string; - email?: string; + user: { + username: string; + email?: string; + }; }>; getRecentCommits: ( diff --git a/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.test.tsx b/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.test.tsx index aed6fe3496..31121896e9 100644 --- a/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.test.tsx +++ b/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.test.tsx @@ -21,6 +21,7 @@ import { mockApiClient, mockCalverProject, mockSearchCalver, + mockUser, } from '../../test-helpers/test-helpers'; import { TEST_IDS } from '../../test-helpers/test-ids'; import { useProjectContext } from '../../contexts/ProjectContext'; @@ -41,14 +42,17 @@ jest.mock('../../contexts/ProjectContext', () => ({ project: mockCalverProject, })), })); +jest.mock('../../contexts/UserContext', () => ({ + useUserContext: jest.fn(() => ({ + user: mockUser, + })), +})); describe('Owner', () => { beforeEach(jest.clearAllMocks); it('should render select', async () => { - const { getByTestId } = render( - , - ); + const { getByTestId } = render(); expect(getByTestId(TEST_IDS.form.owner.loading)).toBeInTheDocument(); @@ -61,9 +65,7 @@ describe('Owner', () => { project: { ...mockCalverProject, owner: '' }, }); - const { getAllByTestId, getByTestId } = render( - , - ); + const { getAllByTestId, getByTestId } = render(); expect(getByTestId(TEST_IDS.form.owner.loading)).toBeInTheDocument(); @@ -95,9 +97,7 @@ describe('Owner', () => { throw new Error('Kaboom'); }); - const { getByTestId } = render( - , - ); + const { getByTestId } = render(); expect(getByTestId(TEST_IDS.form.owner.loading)).toBeInTheDocument(); await waitFor(() => screen.getByTestId(TEST_IDS.form.owner.error)); diff --git a/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.tsx b/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.tsx index 36d63d2b47..0d8a23efb9 100644 --- a/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.tsx +++ b/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.tsx @@ -32,10 +32,12 @@ import { TEST_IDS } from '../../test-helpers/test-ids'; import { useFormClasses } from './styles'; import { useProjectContext } from '../../contexts/ProjectContext'; import { useQueryHandler } from '../../hooks/useQueryHandler'; +import { useUserContext } from '../../contexts/UserContext'; -export function Owner({ username }: { username: string }) { +export function Owner() { const pluginApiClient = useApi(gitReleaseManagerApiRef); const { project } = useProjectContext(); + const { user } = useUserContext(); const formClasses = useFormClasses(); const navigate = useNavigate(); const { getQueryParamsWithUpdates } = useQueryHandler(); @@ -43,7 +45,7 @@ export function Owner({ username }: { username: string }) { const { loading, error, value } = useAsync(() => pluginApiClient.getOwners()); const owners = value?.owners ?? []; const customOwnerFromUrl = !owners - .concat(['', username]) + .concat(['', user.username]) .includes(project.owner); return ( @@ -80,8 +82,8 @@ export function Owner({ username }: { username: string }) { None - - {username} + + {user.username} {!error && customOwnerFromUrl && ( diff --git a/plugins/git-release-manager/src/features/RepoDetailsForm/RepoDetailsForm.tsx b/plugins/git-release-manager/src/features/RepoDetailsForm/RepoDetailsForm.tsx index f58444c727..e77f73e0f6 100644 --- a/plugins/git-release-manager/src/features/RepoDetailsForm/RepoDetailsForm.tsx +++ b/plugins/git-release-manager/src/features/RepoDetailsForm/RepoDetailsForm.tsx @@ -20,12 +20,12 @@ import { Owner } from './Owner'; import { Repo } from './Repo'; import { VersioningStrategy } from './VersioningStrategy'; -export function RepoDetailsForm({ username }: { username: string }) { +export function RepoDetailsForm() { return ( <> - + diff --git a/plugins/git-release-manager/src/test-helpers/test-helpers.ts b/plugins/git-release-manager/src/test-helpers/test-helpers.ts index b1b5fbb7c9..eebf9b162b 100644 --- a/plugins/git-release-manager/src/test-helpers/test-helpers.ts +++ b/plugins/git-release-manager/src/test-helpers/test-helpers.ts @@ -192,8 +192,10 @@ export const mockApiClient: GitReleaseApi = { })), getUser: jest.fn(async () => ({ - username: mockOwner, - email: mockEmail, + user: { + username: mockOwner, + email: mockEmail, + }, })), getRecentCommits: jest.fn(async () => [