From 35ef677c607703e1e56c34bf9d66b56d3ce5eeb1 Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Fri, 28 Jul 2023 18:23:37 +0300 Subject: [PATCH] Add patch test for profile --- rsconcept/backend/apps/users/tests/t_views.py | 13 +++++++ .../frontend/src/pages/RSFormPage/RSTabs.tsx | 21 ++++++++++-- .../src/pages/RSFormPage/RSTabsMenu.tsx | 34 +++++++------------ rsconcept/frontend/src/utils/backendAPI.ts | 2 +- 4 files changed, 46 insertions(+), 24 deletions(-) diff --git a/rsconcept/backend/apps/users/tests/t_views.py b/rsconcept/backend/apps/users/tests/t_views.py index ade8143b..9057ecd3 100644 --- a/rsconcept/backend/apps/users/tests/t_views.py +++ b/rsconcept/backend/apps/users/tests/t_views.py @@ -54,6 +54,19 @@ class TestUserUserProfileAPIView(APITestCase): self.assertEqual(response.data['first_name'], self.first_name) self.assertEqual(response.data['last_name'], '') + def test_patch_profile(self): + self.client.force_login(user=self.user) + data = json.dumps({ + 'email': '123@mail.ru', + 'first_name': 'firstName', + 'last_name': 'lastName', + }) + response = self.client.patch('/users/api/profile', data=data, content_type='application/json') + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data['email'], '123@mail.ru') + self.assertEqual(response.data['first_name'], 'firstName') + self.assertEqual(response.data['last_name'], 'lastName') + def test_edit_profile(self): newmail = 'newmail@gmail.com' data = json.dumps({'email': newmail}) diff --git a/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx b/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx index 7eb6e1c8..665eb486 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx @@ -7,6 +7,8 @@ import { Loader } from '../../components/Common/Loader'; import { useRSForm } from '../../context/RSFormContext'; import useLocalStorage from '../../hooks/useLocalStorage'; import { type IConstituenta } from '../../utils/models'; +import DlgCloneRSForm from './DlgCloneRSForm'; +import DlgUploadRSForm from './DlgUploadRSForm'; import EditorConstituenta from './EditorConstituenta'; import EditorItems from './EditorItems'; import EditorRSForm from './EditorRSForm'; @@ -24,6 +26,9 @@ function RSTabs() { const [tabIndex, setTabIndex] = useLocalStorage('rsform_edit_tab', RSTabsList.CARD); const [init, setInit] = useState(false); + const [showUploadDialog, setShowUploadDialog] = useState(false); + const [showCloneDialog, setShowCloneDialog] = useState(false); + const onEditCst = (cst: IConstituenta) => { setActiveID(cst.id); setTabIndex(RSTabsList.CST_EDIT) @@ -84,6 +89,15 @@ function RSTabs() { { loading && } { error && } { schema && !loading && + <> + { setShowUploadDialog(false); }} + /> + { setShowCloneDialog(false); }} + /> - + setShowCloneDialog(true)} + showUploadDialog={() => setShowUploadDialog(true)} + /> Паспорт схемы Конституенты @@ -112,7 +129,7 @@ function RSTabs() { - + } ); } diff --git a/rsconcept/frontend/src/pages/RSFormPage/RSTabsMenu.tsx b/rsconcept/frontend/src/pages/RSFormPage/RSTabsMenu.tsx index b8374ba0..f88f70d2 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/RSTabsMenu.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/RSTabsMenu.tsx @@ -1,4 +1,4 @@ -import { useCallback, useState } from 'react'; +import { useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; import Button from '../../components/Common/Button'; @@ -10,10 +10,13 @@ import { useAuth } from '../../context/AuthContext'; import { useRSForm } from '../../context/RSFormContext'; import useDropdown from '../../hooks/useDropdown'; import { claimOwnershipProc, deleteRSFormProc, downloadRSFormProc, shareCurrentURLProc } from '../../utils/procedures'; -import DlgCloneRSForm from './DlgCloneRSForm'; -import DlgUploadRSForm from './DlgUploadRSForm'; -function RSTabsMenu() { +interface RSTabsMenuProps { + showUploadDialog: () => void + showCloneDialog: () => void +} + +function RSTabsMenu({showUploadDialog, showCloneDialog}: RSTabsMenuProps) { const navigate = useNavigate(); const { user } = useAuth(); const { @@ -24,8 +27,7 @@ function RSTabsMenu() { } = useRSForm(); const schemaMenu = useDropdown(); const editMenu = useDropdown(); - const [showUploadDialog, setShowUploadDialog] = useState(false); - const [showCloneDialog, setShowCloneDialogl] = useState(false); + const handleClaimOwner = useCallback(() => { editMenu.hide(); @@ -45,29 +47,20 @@ function RSTabsMenu() { const handleUpload = useCallback(() => { schemaMenu.hide(); - setShowUploadDialog(true); - }, [schemaMenu]); + showUploadDialog(); + }, [schemaMenu, showUploadDialog]); const handleClone = useCallback(() => { schemaMenu.hide(); - setShowCloneDialogl(true); - }, [schemaMenu]); + showCloneDialog(); + }, [schemaMenu, showCloneDialog]); const handleShare = useCallback(() => { schemaMenu.hide(); shareCurrentURLProc(); }, [schemaMenu]); - return ( - <> - { setShowUploadDialog(false); }} - /> - { setShowCloneDialogl(false); }} - /> + return (
- ); } diff --git a/rsconcept/frontend/src/utils/backendAPI.ts b/rsconcept/frontend/src/utils/backendAPI.ts index eb9b4042..c9345656 100644 --- a/rsconcept/frontend/src/utils/backendAPI.ts +++ b/rsconcept/frontend/src/utils/backendAPI.ts @@ -233,7 +233,7 @@ export function patchUploadTRS(target: string, request: FrontExchange({ endpoint, request, title, options }: IAxiosRequest) { console.log(`REQUEST: [[${title}]]`); - if (request.setLoading) request?.setLoading(true); + if (request.setLoading) request.setLoading(true); axios.get(endpoint, options) .then((response) => { if (request.setLoading) request.setLoading(false);