Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1d93804
fix : removed multiple user/self fetch
Shah-Arsalan Jun 2, 2023
3b11018
refactor : removed useContext
Shah-Arsalan Jun 4, 2023
1cd5aca
refactor : userData derivation from rtk store
Shah-Arsalan Jun 4, 2023
b85a6ef
refactor : abstracted authorizarion login
Shah-Arsalan Jun 5, 2023
4d1db8c
fix : two tests fixed and one test added for hook
Shah-Arsalan Jun 7, 2023
31663b7
fix : fixed tests and added one for hook
Shah-Arsalan Jun 7, 2023
fd3ef88
fix : minor fix to set data
Shah-Arsalan Jun 7, 2023
56bed89
Merge branch 'develop' into refactor/removing-multiple-user-fetch
Shah-Arsalan Jun 8, 2023
a21c3ec
refactor : removed imports,fix in useAuthenticated
Shah-Arsalan Jun 8, 2023
4df5b79
Merge branch 'refactor/removing-multiple-user-fetch' of https://githu…
Shah-Arsalan Jun 8, 2023
a69a2de
refactor : added types files
Shah-Arsalan Jun 9, 2023
a773969
refactor : move types useAuthenticated in one file
Shah-Arsalan Jun 9, 2023
8223f59
fix : useUserData test
Shah-Arsalan Jun 16, 2023
72205ed
Merge branch 'develop' into refactor/removing-multiple-user-fetch
Shah-Arsalan Jun 16, 2023
ad1e5a4
refactor : function name changes
Shah-Arsalan Jul 1, 2023
1382280
Merge branch 'refactor/removing-multiple-user-fetch' of https://githu…
Shah-Arsalan Jul 1, 2023
5dfd1e7
Merge branch 'develop' into refactor/removing-multiple-user-fetch
Shah-Arsalan Jul 1, 2023
4328dc8
Merge branch 'develop' into refactor/removing-multiple-user-fetch
Shah-Arsalan Jul 2, 2023
d5c0f15
fix : remove redundant imort
Shah-Arsalan Jul 2, 2023
31337bf
fix : remove comments
Shah-Arsalan Jul 2, 2023
51a12b3
Merge branch 'develop' into refactor/removing-multiple-user-fetch
Shah-Arsalan Jul 4, 2023
6f6bd0e
fix : prettier issue
Shah-Arsalan Jul 4, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions __tests__/Unit/Components/Tasks/Card.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ import { act } from '@testing-library/react-hooks';
import Card from '@/components/tasks/card/index';
import { store } from '@/app/store';
import { Provider } from 'react-redux';
import { isUserAuthorizedContext } from '@/context/isUserAuthorized';
import { RouterContext } from 'next/dist/shared/lib/router-context';
import {
createMockRouter,
renderWithRouter,
} from '@/test_utils/createMockRouter';
import { NextRouter } from 'next/router';
import { TASK_STATUS } from '@/interfaces/task-status';
import useUserData from '@/hooks/useUserData';

const DEFAULT_PROPS = {
content: {
Expand Down Expand Up @@ -41,6 +41,19 @@ const DEFAULT_PROPS = {
onContentChange: jest.fn(),
};

jest.mock('@/hooks/useUserData', () => {
return () => ({
data: {
roles: {
admin: true,
super_user: false,
},
},
isUserAuthorized: true,
isSuccess: true,
});
});

const getFirestoreDateNDaysBefore = (n = 1) => {
const d = new Date();
d.setDate(d.getDate() - n);
Expand Down Expand Up @@ -114,9 +127,7 @@ describe('Task card', () => {
test('should show edit button when ALT key is long pressed', () => {
const { getByTestId, queryByTestId } = renderWithRouter(
<Provider store={store()}>
<isUserAuthorizedContext.Provider value={true}>
<Card {...DEFAULT_PROPS} />
</isUserAuthorizedContext.Provider>
<Card {...DEFAULT_PROPS} />
</Provider>,
{}
);
Expand Down
33 changes: 22 additions & 11 deletions __tests__/Unit/Components/Tasks/TaskLevelMap.test.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
import React from 'react';
import { fireEvent, screen } from '@testing-library/react';
import { fireEvent, screen, render } from '@testing-library/react';
import { TaskLevelMap } from '@/components/tasks/card/TaskLevelMap';
import { isUserAuthorizedContext } from '@/context/isUserAuthorized';
import taskItem from '@/interfaces/taskItem.type';

import { renderWithProviders } from '@/test-utils/renderWithProvider';

jest.mock('@/hooks/useUserData', () => {
return () => ({
data: {
roles: {
admin: true,
super_user: false,
},
},
isUserAuthorized: true,
isSuccess: true,
});
});

describe('TaskLevelMap', () => {
const taskTagLevel: taskItem[] = [
{
Expand Down Expand Up @@ -49,15 +61,14 @@ describe('TaskLevelMap', () => {

it('renders a list of task tags with remove button when shouldEdit and isUserAuthorized are true', () => {
const deleteTaskTagLevel = jest.fn();
renderWithProviders(
<isUserAuthorizedContext.Provider value={true}>
<TaskLevelMap
taskTagLevel={taskTagLevel}
shouldEdit={true}
itemId={'1'}
deleteTaskTagLevel={deleteTaskTagLevel}
/>
</isUserAuthorizedContext.Provider>

render(
<TaskLevelMap
taskTagLevel={taskTagLevel}
shouldEdit={true}
itemId={'1'}
deleteTaskTagLevel={deleteTaskTagLevel}
/>
);

const tagElements = screen.getAllByTestId('tag-name');
Expand Down
37 changes: 37 additions & 0 deletions __tests__/Unit/hooks/useUserData.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import React, { PropsWithChildren } from 'react';
import useUserData from '@/hooks/useUserData';
import { setupServer } from 'msw/node';
import handlers from '../../../__mocks__/handlers';
import { store } from '@/app/store';
import { act, renderHook } from '@testing-library/react-hooks';
import { Provider } from 'react-redux';

const server = setupServer(...handlers);

beforeAll(() => {
server.listen();
});
afterEach(() => server.resetHandlers());
afterAll(() => server.close());

function Wrapper({
children,
}: PropsWithChildren<Record<string, never>>): JSX.Element {
return <Provider store={store()}>{children}</Provider>;
}

describe('useUserData', () => {
test('returns the user as not authorized ', async () => {
const { result, waitForNextUpdate } = renderHook(() => useUserData(), {
wrapper: Wrapper,
});
const initialResponse = result.current;
expect(initialResponse.data).toBeUndefined();

await act(() => waitForNextUpdate());
const nextResponse = result.current;

expect(nextResponse.isSuccess).toBe(true);
expect(nextResponse.isUserAuthorized).toBe(false);
});
});
1 change: 1 addition & 0 deletions src/components/Layout/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import styles from '@/components/Layout/Layout.module.scss';
import NavBar from '@/components/navBar';
import { useGetUserQuery } from '@/app/services/userApi';
import { Loader } from '../tasks/card/Loader';
import useUserData from '@/hooks/useUserData';
import { Header } from '@/components/Header';

interface Props {
Expand Down
8 changes: 5 additions & 3 deletions src/components/navBar/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { useState } from 'react';
import Link from 'next/link';
import Image from 'next/image';

import {
LOGIN_URL,
DEFAULT_AVATAR,
Expand All @@ -15,16 +16,17 @@ import {
} from '@/constants/url';
import Dropdown from '../Dropdown/Dropdown';
import styles from '@/components/navBar/navBar.module.scss';
import { useGetUserQuery } from '@/app/services/userApi';
import { Loader } from '../tasks/card/Loader';
import useUserData from '@/hooks/useUserData';

const NavBar = () => {
const isLoggedIn = true;
const { data: userData } = useGetUserQuery();
// const { userData, isLoggedIn } = useAuthenticated();

const [toggleDropdown, setToggleDropdown] = useState(false);
const [showMenu, setShowMenu] = useState(false);

const { data: userData, isUserAuthorized } = useUserData();

return (
<nav data-testid="navbar" className={styles.navBar}>
<div
Expand Down
14 changes: 10 additions & 4 deletions src/components/taskDetails/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import React, {
} from 'react';
import TaskContainer from './TaskContainer';
import Details from './Details';
import { isUserAuthorizedContext } from '@/context/isUserAuthorized';
import { toast, ToastTypes } from '@/helperFunctions/toast';
import convertTimeStamp from '@/helperFunctions/convertTimeStamp';
import classNames from './task-details.module.scss';
Expand All @@ -18,7 +17,13 @@ import {
useGetTasksDependencyDetailsQuery,
useUpdateTaskDetailsMutation,
} from '@/app/services/taskDetailsApi';
import { ButtonProps, TextAreaProps } from '@/interfaces/taskDetails.type';

import useUserData from '@/hooks/useUserData';
import {
ButtonProps,
TextAreaProps,
taskDetailsDataType,
} from '@/interfaces/taskDetails.type';
import Layout from '@/components/Layout';
import TaskDependencyList from './TaskDependencyList';

Expand Down Expand Up @@ -54,7 +59,8 @@ type Props = {

const TaskDetails: FC<Props> = ({ taskID }) => {
const router = useRouter();
const isAuthorized = useContext(isUserAuthorizedContext);

const { data: userData, isUserAuthorized } = useUserData();

const [isEditing, setIsEditing] = useState<boolean>(false);
const initialDataRef = useRef<Record<string, any> | undefined>({});
Expand Down Expand Up @@ -151,7 +157,7 @@ const TaskDetails: FC<Props> = ({ taskID }) => {
</span>
)}
{!isEditing ? (
isAuthorized && (
isUserAuthorized && (
<Button
buttonName="Edit"
clickHandler={setIsEditing}
Expand Down
9 changes: 6 additions & 3 deletions src/components/tasks/TasksContent.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import classNames from '@/styles/tasks.module.scss';

import { useGetAllTasksQuery } from '@/app/services/tasksApi';
import { isUserAuthorizedContext } from '@/context/isUserAuthorized';
import updateTasksStatus from '@/helperFunctions/updateTasksStatus';
import task, { Tab } from '@/interfaces/task.type';
import { useContext, useState } from 'react';
import { useState } from 'react';
import {
NO_TASKS_FOUND_MESSAGE,
TASKS_FETCH_ERROR_MESSAGE,
Expand All @@ -12,11 +12,14 @@ import { TabSection } from './TabSection';
import TaskList from './TaskList/TaskList';
import updateCardContent from '@/helperFunctions/updateCardContent';
import { useEditMode } from '@/hooks/useEditMode';
import useUserData from '@/hooks/useUserData';

export const TasksContent = () => {
const { data: tasks = [], isError, isLoading } = useGetAllTasksQuery();
const { isEditMode } = useEditMode();
const isUserAuthorized = useContext(isUserAuthorizedContext);

const { data: userData, isUserAuthorized } = useUserData();

const isEditable = isUserAuthorized && isEditMode;
const [activeTab, setActiveTab] = useState(Tab.IN_PROGRESS);

Expand Down
7 changes: 3 additions & 4 deletions src/components/tasks/card/TaskLevelMap.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import classNames from '@/components/tasks/card/card.module.scss';
import { isUserAuthorizedContext } from '@/context/isUserAuthorized';
import useUserData from '@/hooks/useUserData';
import taskItem from '@/interfaces/taskItem.type';
import { useContext } from 'react';

type Props = {
taskTagLevel?: taskItem[];
itemId: string;
Expand All @@ -14,8 +14,7 @@ export const TaskLevelMap = ({
itemId,
deleteTaskTagLevel,
}: Props) => {
const isUserAuthorized = useContext(isUserAuthorizedContext);

const { isUserAuthorized } = useUserData();
return (
<div className={classNames.taskTagLevelContainer}>
{taskTagLevel?.map((item) => (
Expand Down
11 changes: 4 additions & 7 deletions src/components/tasks/card/index.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import { FC, useState, useEffect, useContext, useRef } from 'react';
import { FC, useState, useEffect, useRef } from 'react';
import Image from 'next/image';
import classNames from '@/components/tasks/card/card.module.scss';

import { isUserAuthorizedContext } from '@/context/isUserAuthorized';
import getDateInString from '@/helperFunctions/getDateInString';
import { useKeyLongPressed } from '@/hooks/useKeyLongPressed';
import task from '@/interfaces/task.type';
Expand All @@ -13,8 +11,6 @@ import TaskLevelEdit from './TaskTagEdit';
import { TaskStatusEditMode } from './TaskStatusEditMode';
import { updateTaskDetails } from '@/interfaces/task.type';
import fetch from '@/helperFunctions/fetch';
import { TASKS_URL } from '@/constants/url';

import {
DUMMY_NAME,
DUMMY_PROFILE as placeholderImageURL,
Expand All @@ -32,12 +28,12 @@ import { useEditMode } from '@/hooks/useEditMode';
import { useGetUsersByUsernameQuery } from '@/app/services/usersApi';
import { ConditionalLinkWrapper } from './ConditionalLinkWrapper';
import { isNewCardDesignEnabled } from '@/constants/FeatureFlags';
import useUserData from '@/hooks/useUserData';
import { isTaskDetailsPageLinkEnabled } from '@/constants/FeatureFlags';
import { useUpdateTaskMutation } from '@/app/services/tasksApi';
import SuggestionBox from '../SuggestionBox/SuggestionBox';
import { userDataType } from '@/interfaces/user.type';
import { GithubInfo } from '@/interfaces/suggestionBox.type';
import userData from '@/helperFunctions/getUser';

type Props = {
content: task;
Expand Down Expand Up @@ -66,7 +62,8 @@ const Card: FC<Props> = ({
const assigneeProfileImageURL: string =
userResponse?.users[0]?.picture?.url || placeholderImageURL;
const { SUCCESS, ERROR } = ToastTypes;
const isUserAuthorized = useContext(isUserAuthorizedContext);

const { data: userData, isUserAuthorized } = useUserData();

const [showEditButton, setShowEditButton] = useState(false);

Expand Down
41 changes: 0 additions & 41 deletions src/context/isUserAuthorized.tsx

This file was deleted.

17 changes: 0 additions & 17 deletions src/helperFunctions/getUser.ts

This file was deleted.

Loading