mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 04:50:36 +03:00
Add patch test for profile
This commit is contained in:
parent
2b93840807
commit
35ef677c60
|
@ -54,6 +54,19 @@ class TestUserUserProfileAPIView(APITestCase):
|
||||||
self.assertEqual(response.data['first_name'], self.first_name)
|
self.assertEqual(response.data['first_name'], self.first_name)
|
||||||
self.assertEqual(response.data['last_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):
|
def test_edit_profile(self):
|
||||||
newmail = 'newmail@gmail.com'
|
newmail = 'newmail@gmail.com'
|
||||||
data = json.dumps({'email': newmail})
|
data = json.dumps({'email': newmail})
|
||||||
|
|
|
@ -7,6 +7,8 @@ import { Loader } from '../../components/Common/Loader';
|
||||||
import { useRSForm } from '../../context/RSFormContext';
|
import { useRSForm } from '../../context/RSFormContext';
|
||||||
import useLocalStorage from '../../hooks/useLocalStorage';
|
import useLocalStorage from '../../hooks/useLocalStorage';
|
||||||
import { type IConstituenta } from '../../utils/models';
|
import { type IConstituenta } from '../../utils/models';
|
||||||
|
import DlgCloneRSForm from './DlgCloneRSForm';
|
||||||
|
import DlgUploadRSForm from './DlgUploadRSForm';
|
||||||
import EditorConstituenta from './EditorConstituenta';
|
import EditorConstituenta from './EditorConstituenta';
|
||||||
import EditorItems from './EditorItems';
|
import EditorItems from './EditorItems';
|
||||||
import EditorRSForm from './EditorRSForm';
|
import EditorRSForm from './EditorRSForm';
|
||||||
|
@ -24,6 +26,9 @@ function RSTabs() {
|
||||||
const [tabIndex, setTabIndex] = useLocalStorage('rsform_edit_tab', RSTabsList.CARD);
|
const [tabIndex, setTabIndex] = useLocalStorage('rsform_edit_tab', RSTabsList.CARD);
|
||||||
const [init, setInit] = useState(false);
|
const [init, setInit] = useState(false);
|
||||||
|
|
||||||
|
const [showUploadDialog, setShowUploadDialog] = useState(false);
|
||||||
|
const [showCloneDialog, setShowCloneDialog] = useState(false);
|
||||||
|
|
||||||
const onEditCst = (cst: IConstituenta) => {
|
const onEditCst = (cst: IConstituenta) => {
|
||||||
setActiveID(cst.id);
|
setActiveID(cst.id);
|
||||||
setTabIndex(RSTabsList.CST_EDIT)
|
setTabIndex(RSTabsList.CST_EDIT)
|
||||||
|
@ -84,6 +89,15 @@ function RSTabs() {
|
||||||
{ loading && <Loader /> }
|
{ loading && <Loader /> }
|
||||||
{ error && <BackendError error={error} />}
|
{ error && <BackendError error={error} />}
|
||||||
{ schema && !loading &&
|
{ schema && !loading &&
|
||||||
|
<>
|
||||||
|
<DlgUploadRSForm
|
||||||
|
show={showUploadDialog}
|
||||||
|
hideWindow={() => { setShowUploadDialog(false); }}
|
||||||
|
/>
|
||||||
|
<DlgCloneRSForm
|
||||||
|
show={showCloneDialog}
|
||||||
|
hideWindow={() => { setShowCloneDialog(false); }}
|
||||||
|
/>
|
||||||
<Tabs
|
<Tabs
|
||||||
selectedIndex={tabIndex}
|
selectedIndex={tabIndex}
|
||||||
onSelect={onSelectTab}
|
onSelect={onSelectTab}
|
||||||
|
@ -91,7 +105,10 @@ function RSTabs() {
|
||||||
selectedTabClassName='font-bold'
|
selectedTabClassName='font-bold'
|
||||||
>
|
>
|
||||||
<TabList className='flex items-start w-fit clr-bg-pop'>
|
<TabList className='flex items-start w-fit clr-bg-pop'>
|
||||||
<RSTabsMenu />
|
<RSTabsMenu
|
||||||
|
showCloneDialog={() => setShowCloneDialog(true)}
|
||||||
|
showUploadDialog={() => setShowUploadDialog(true)}
|
||||||
|
/>
|
||||||
<ConceptTab>Паспорт схемы</ConceptTab>
|
<ConceptTab>Паспорт схемы</ConceptTab>
|
||||||
<ConceptTab className='border-x-2 clr-border min-w-[10rem] flex justify-between gap-2'>
|
<ConceptTab className='border-x-2 clr-border min-w-[10rem] flex justify-between gap-2'>
|
||||||
<span>Конституенты</span>
|
<span>Конституенты</span>
|
||||||
|
@ -112,7 +129,7 @@ function RSTabs() {
|
||||||
<TabPanel>
|
<TabPanel>
|
||||||
<EditorConstituenta />
|
<EditorConstituenta />
|
||||||
</TabPanel>
|
</TabPanel>
|
||||||
</Tabs>
|
</Tabs></>
|
||||||
}
|
}
|
||||||
</div>);
|
</div>);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { useCallback, useState } from 'react';
|
import { useCallback } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
import Button from '../../components/Common/Button';
|
import Button from '../../components/Common/Button';
|
||||||
|
@ -10,10 +10,13 @@ import { useAuth } from '../../context/AuthContext';
|
||||||
import { useRSForm } from '../../context/RSFormContext';
|
import { useRSForm } from '../../context/RSFormContext';
|
||||||
import useDropdown from '../../hooks/useDropdown';
|
import useDropdown from '../../hooks/useDropdown';
|
||||||
import { claimOwnershipProc, deleteRSFormProc, downloadRSFormProc, shareCurrentURLProc } from '../../utils/procedures';
|
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 navigate = useNavigate();
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const {
|
const {
|
||||||
|
@ -24,8 +27,7 @@ function RSTabsMenu() {
|
||||||
} = useRSForm();
|
} = useRSForm();
|
||||||
const schemaMenu = useDropdown();
|
const schemaMenu = useDropdown();
|
||||||
const editMenu = useDropdown();
|
const editMenu = useDropdown();
|
||||||
const [showUploadDialog, setShowUploadDialog] = useState(false);
|
|
||||||
const [showCloneDialog, setShowCloneDialogl] = useState(false);
|
|
||||||
|
|
||||||
const handleClaimOwner = useCallback(() => {
|
const handleClaimOwner = useCallback(() => {
|
||||||
editMenu.hide();
|
editMenu.hide();
|
||||||
|
@ -45,29 +47,20 @@ function RSTabsMenu() {
|
||||||
|
|
||||||
const handleUpload = useCallback(() => {
|
const handleUpload = useCallback(() => {
|
||||||
schemaMenu.hide();
|
schemaMenu.hide();
|
||||||
setShowUploadDialog(true);
|
showUploadDialog();
|
||||||
}, [schemaMenu]);
|
}, [schemaMenu, showUploadDialog]);
|
||||||
|
|
||||||
const handleClone = useCallback(() => {
|
const handleClone = useCallback(() => {
|
||||||
schemaMenu.hide();
|
schemaMenu.hide();
|
||||||
setShowCloneDialogl(true);
|
showCloneDialog();
|
||||||
}, [schemaMenu]);
|
}, [schemaMenu, showCloneDialog]);
|
||||||
|
|
||||||
const handleShare = useCallback(() => {
|
const handleShare = useCallback(() => {
|
||||||
schemaMenu.hide();
|
schemaMenu.hide();
|
||||||
shareCurrentURLProc();
|
shareCurrentURLProc();
|
||||||
}, [schemaMenu]);
|
}, [schemaMenu]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
|
||||||
<DlgUploadRSForm
|
|
||||||
show={showUploadDialog}
|
|
||||||
hideWindow={() => { setShowUploadDialog(false); }}
|
|
||||||
/>
|
|
||||||
<DlgCloneRSForm
|
|
||||||
show={showCloneDialog}
|
|
||||||
hideWindow={() => { setShowCloneDialogl(false); }}
|
|
||||||
/>
|
|
||||||
<div className='flex items-center w-fit'>
|
<div className='flex items-center w-fit'>
|
||||||
<div ref={schemaMenu.ref}>
|
<div ref={schemaMenu.ref}>
|
||||||
<Button
|
<Button
|
||||||
|
@ -152,7 +145,6 @@ function RSTabsMenu() {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -233,7 +233,7 @@ export function patchUploadTRS(target: string, request: FrontExchange<IRSFormUpl
|
||||||
// ============ Helper functions =============
|
// ============ Helper functions =============
|
||||||
function AxiosGet<ResponseData>({ endpoint, request, title, options }: IAxiosRequest<undefined, ResponseData>) {
|
function AxiosGet<ResponseData>({ endpoint, request, title, options }: IAxiosRequest<undefined, ResponseData>) {
|
||||||
console.log(`REQUEST: [[${title}]]`);
|
console.log(`REQUEST: [[${title}]]`);
|
||||||
if (request.setLoading) request?.setLoading(true);
|
if (request.setLoading) request.setLoading(true);
|
||||||
axios.get<ResponseData>(endpoint, options)
|
axios.get<ResponseData>(endpoint, options)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (request.setLoading) request.setLoading(false);
|
if (request.setLoading) request.setLoading(false);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user