feat: inplement auth for cases
This commit is contained in:
@@ -24,8 +24,6 @@ export default function CasesPane({ projectId, folderId, messages, locale }: Pro
|
||||
}
|
||||
try {
|
||||
const data = await fetchCases(context.token.access_token, folderId);
|
||||
console.log(data);
|
||||
|
||||
setCases(data);
|
||||
} catch (error: any) {
|
||||
console.error('Error in effect:', error.message);
|
||||
@@ -50,19 +48,19 @@ export default function CasesPane({ projectId, folderId, messages, locale }: Pro
|
||||
setDeleteCaseIds([]);
|
||||
};
|
||||
|
||||
const onDeleteCases = (deleteCaseIds: number[]) => {
|
||||
setDeleteCaseIds(deleteCaseIds);
|
||||
setIsDeleteConfirmDialogOpen(true);
|
||||
};
|
||||
|
||||
const onDeleteCase = async (deleteCaseId: number) => {
|
||||
setDeleteCaseIds([deleteCaseId]);
|
||||
setIsDeleteConfirmDialogOpen(true);
|
||||
};
|
||||
|
||||
const onDeleteCases = (deleteCaseIds: number[]) => {
|
||||
setDeleteCaseIds(deleteCaseIds);
|
||||
setIsDeleteConfirmDialogOpen(true);
|
||||
};
|
||||
|
||||
const onConfirm = async () => {
|
||||
if (deleteCaseIds.length > 0) {
|
||||
await deleteCases(context.token.access_token, deleteCaseIds);
|
||||
await deleteCases(context.token.access_token, deleteCaseIds, projectId);
|
||||
setCases(cases.filter((entry) => !deleteCaseIds.includes(entry.id)));
|
||||
closeDeleteConfirmDialog();
|
||||
}
|
||||
@@ -74,8 +72,8 @@ export default function CasesPane({ projectId, folderId, messages, locale }: Pro
|
||||
projectId={projectId}
|
||||
cases={cases}
|
||||
onCreateCase={() => handleCreateCase(folderId)}
|
||||
onDeleteCase={() => onDeleteCase}
|
||||
onDeleteCases={() => onDeleteCases}
|
||||
onDeleteCase={onDeleteCase}
|
||||
onDeleteCases={onDeleteCases}
|
||||
messages={messages}
|
||||
locale={locale}
|
||||
/>
|
||||
|
||||
@@ -24,7 +24,7 @@ type Props = {
|
||||
cases: CaseType[];
|
||||
onCreateCase: () => void;
|
||||
onDeleteCase: (caseId: number) => void;
|
||||
onDeleteCases: (selectedCases: string[]) => void;
|
||||
onDeleteCases: (caseIds: number[]) => void;
|
||||
messages: CasesMessages;
|
||||
locale: string;
|
||||
};
|
||||
@@ -61,6 +61,10 @@ export default function TestCaseTable({
|
||||
});
|
||||
}, [sortDescriptor, cases]);
|
||||
|
||||
const handleDeleteCase = (deleteCaseId: number) => {
|
||||
onDeleteCase(deleteCaseId);
|
||||
};
|
||||
|
||||
const renderCell = useCallback((testCase: Case, columnKey: Key) => {
|
||||
const cellValue = testCase[columnKey as keyof Case];
|
||||
|
||||
@@ -95,7 +99,7 @@ export default function TestCaseTable({
|
||||
</Button>
|
||||
</DropdownTrigger>
|
||||
<DropdownMenu aria-label="test case actions">
|
||||
<DropdownItem className="text-danger" onClick={() => onDeleteCase(testCase.id)}>
|
||||
<DropdownItem className="text-danger" onPress={() => handleDeleteCase(testCase.id)}>
|
||||
{messages.deleteCase}
|
||||
</DropdownItem>
|
||||
</DropdownMenu>
|
||||
@@ -106,6 +110,17 @@ export default function TestCaseTable({
|
||||
}
|
||||
}, []);
|
||||
|
||||
const handleDeleteCases = () => {
|
||||
let deleteCaseIds: number[];
|
||||
if (selectedKeys === 'all') {
|
||||
deleteCaseIds = sortedItems.map((item) => item.id);
|
||||
} else {
|
||||
deleteCaseIds = Array.from(selectedKeys).map(Number);
|
||||
}
|
||||
onDeleteCases(deleteCaseIds);
|
||||
setSelectedKeys(new Set([]));
|
||||
};
|
||||
|
||||
const classNames = useMemo(
|
||||
() => ({
|
||||
wrapper: ['max-w-3xl'],
|
||||
@@ -125,16 +140,6 @@ export default function TestCaseTable({
|
||||
[]
|
||||
);
|
||||
|
||||
const onDeleteCasesClick = async () => {
|
||||
if (selectedKeys === 'all') {
|
||||
const allKeys = sortedItems.map((item) => item.id);
|
||||
onDeleteCases(allKeys);
|
||||
} else {
|
||||
onDeleteCases([...selectedKeys]);
|
||||
}
|
||||
setSelectedKeys(new Set([]));
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="border-b-1 dark:border-neutral-700 w-full p-3 flex items-center justify-between">
|
||||
@@ -146,12 +151,12 @@ export default function TestCaseTable({
|
||||
size="sm"
|
||||
color="danger"
|
||||
className="me-2"
|
||||
onClick={onDeleteCasesClick}
|
||||
onPress={handleDeleteCases}
|
||||
>
|
||||
{messages.delete}
|
||||
</Button>
|
||||
)}
|
||||
<Button startContent={<Plus size={16} />} size="sm" color="primary" onClick={onCreateCase}>
|
||||
<Button startContent={<Plus size={16} />} size="sm" color="primary" onPress={onCreateCase}>
|
||||
{messages.newTestCase}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -59,7 +59,6 @@ async function createCase(jwt: string, folderId: string) {
|
||||
template: 0,
|
||||
preConditions: '',
|
||||
expectedResults: '',
|
||||
folderId: folderId,
|
||||
};
|
||||
|
||||
const fetchOptions = {
|
||||
@@ -71,7 +70,7 @@ async function createCase(jwt: string, folderId: string) {
|
||||
body: JSON.stringify(newCase),
|
||||
};
|
||||
|
||||
const url = `${apiServer}/cases`;
|
||||
const url = `${apiServer}/cases?folderId=${folderId}`;
|
||||
|
||||
try {
|
||||
const response = await fetch(url, fetchOptions);
|
||||
@@ -111,29 +110,7 @@ async function updateCase(jwt: string, updateCaseData: CaseType) {
|
||||
}
|
||||
}
|
||||
|
||||
// async function deleteCase(jwt: string, caseId: number) {
|
||||
// const fetchOptions = {
|
||||
// method: 'DELETE',
|
||||
// headers: {
|
||||
// 'Content-Type': 'application/json',
|
||||
// Authorization: `Bearer ${jwt}`,
|
||||
// },
|
||||
// };
|
||||
|
||||
// const url = `${apiServer}/cases/${caseId}`;
|
||||
|
||||
// try {
|
||||
// const response = await fetch(url, fetchOptions);
|
||||
// if (!response.ok) {
|
||||
// throw new Error(`HTTP error! Status: ${response.status}`);
|
||||
// }
|
||||
// } catch (error: any) {
|
||||
// console.error('Error deleting case:', error);
|
||||
// throw error;
|
||||
// }
|
||||
// }
|
||||
|
||||
async function deleteCases(jwt: string, deleteCaseIds: number[]) {
|
||||
async function deleteCases(jwt: string, deleteCaseIds: number[], projectId: number) {
|
||||
const fetchOptions = {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
@@ -143,7 +120,7 @@ async function deleteCases(jwt: string, deleteCaseIds: number[]) {
|
||||
body: JSON.stringify({ caseIds: deleteCaseIds }),
|
||||
};
|
||||
|
||||
const url = `${apiServer}/cases/bulkdelete`;
|
||||
const url = `${apiServer}/cases/bulkdelete?projectId=${projectId}`;
|
||||
|
||||
try {
|
||||
const response = await fetch(url, fetchOptions);
|
||||
|
||||
Reference in New Issue
Block a user