import { useState, useEffect, useContext } from 'react'; import { Button, Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, Avatar, Textarea } from '@heroui/react'; import { testTypes, templates } from '@/config/selection'; import { RunMessages } from '@/types/run'; import { CaseType, StepType } from '@/types/case'; import { PriorityMessages } from '@/types/priority'; import TestCasePriority from '@/components/TestCasePriority'; import { TokenContext } from '@/utils/TokenProvider'; import { fetchCase } from '@/utils/caseControl'; import { TestTypeMessages } from '@/types/testType'; import { logError } from '@/utils/errorHandler'; type Props = { isOpen: boolean; caseId: number; onCancel: () => void; messages: RunMessages; testTypeMessages: TestTypeMessages; priorityMessages: PriorityMessages; }; const defaultTestCase = { id: 0, title: '', state: 0, priority: 0, type: 0, automationStatus: 0, description: '', template: 0, preConditions: '', expectedResults: '', folderId: 0, }; export default function TestCaseDetailDialog({ isOpen, caseId, onCancel, messages, testTypeMessages, priorityMessages, }: Props) { const context = useContext(TokenContext); const [testCase, setTestCase] = useState(defaultTestCase); useEffect(() => { async function fetchDataEffect() { if (!context.isSignedIn()) { return; } if (!caseId || caseId <= 0) { return; } try { const data = await fetchCase(context.token.access_token, Number(caseId)); if (data.Steps && data.Steps.length > 0) { data.Steps.sort((a: StepType, b: StepType) => { const stepNoA = a.caseSteps.stepNo; const stepNoB = b.caseSteps.stepNo; return stepNoA - stepNoB; }); } setTestCase(data); } catch (error: unknown) { logError('Error fetching case data', error); } } fetchDataEffect(); }, [context, caseId]); return ( { onCancel(); }} classNames={{ header: 'border-b-[1px] border-[#e5e5e5]', body: 'border-b-[1px] border-[#e5e5e5]', }} > {testCase.title}

{messages.description}

{testCase.description}

{messages.priority}

{messages.type}

{testTypeMessages[testTypes[testCase.type].uid]}
{templates[testCase.template].uid === 'text' ? ( <>

{messages.testDetail}