Skip to content

Commit 045271f

Browse files
committed
fixes
1 parent ebf2a97 commit 045271f

7 files changed

Lines changed: 50 additions & 57 deletions

File tree

src/app/(web)/crm/task-templates/[id]/edit/page.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ export default function TaskTemplateEditPage({ params }: { params: Promise<{ id:
4444
clearAllLanguages,
4545
handleLanguageSelectionChange,
4646
generateStubsForLanguages,
47+
getEditorContent,
4748
} = useTaskTemplateEditPage(id);
48-
const { runAssessmentTests, runEditPageTests, setCode, setLanguage, error, loading, output } =
49-
useTestRunner(id);
49+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
50+
const { runEditPageTests, error, loading, output } = useTestRunner(
51+
'print(input())',
52+
languages ? languages[selectedLanguage].language : 'python' // UHHHH
53+
);
5054

5155
if (isLoading) {
5256
return (
@@ -76,7 +80,6 @@ export default function TaskTemplateEditPage({ params }: { params: Promise<{ id:
7680
>
7781
{isSaving ? 'Saving...' : 'Save Changes'}
7882
</Button>
79-
<Button onClick={runEditPageTests}> Run Code </Button>
8083
</div>
8184

8285
<div className="flex min-h-0 flex-1 overflow-hidden">
@@ -137,6 +140,7 @@ export default function TaskTemplateEditPage({ params }: { params: Promise<{ id:
137140
setPublicTestCases={setPublicTestCases}
138141
privateTestCases={privateTestCases}
139142
setPrivateTestCases={setPrivateTestCases}
143+
runTests={runEditPageTests}
140144
isSaving={isSaving}
141145
/>
142146
</div>

src/app/api/runner/route.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export async function POST(request: NextRequest) {
1414
const parsed = TestSubmissionSchema.parse(body);
1515
const languageId = mapLanguageToJudge(parsed.language);
1616
const formatted: JudgeSubmissionRequestBody[] = parsed.tests.map((test) => ({
17-
// it doesnt make sense to send the code multiple times so formatting happens on server
1817
source_code: parsed.code,
1918
language_id: languageId,
2019
stdin: test.input,
@@ -32,6 +31,7 @@ export async function POST(request: NextRequest) {
3231
}
3332
);
3433
} catch (err) {
34+
console.log(err);
3535
return handleError(err);
3636
}
3737
}

src/lib/components/core/TestCaseEditor.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,18 @@ interface TestCaseEditorProps {
88
privateTestCases: TestCaseDTO[];
99
setPrivateTestCases: React.Dispatch<React.SetStateAction<TestCaseDTO[]>>;
1010
isSaving: boolean;
11+
runTests: (tests: TestCaseDTO[]) => void;
1112
}
1213

1314
export default function TestCaseEditor(props: TestCaseEditorProps) {
14-
const { publicTestCases, setPublicTestCases, privateTestCases, setPrivateTestCases, isSaving } =
15-
props;
15+
const {
16+
publicTestCases,
17+
setPublicTestCases,
18+
privateTestCases,
19+
setPrivateTestCases,
20+
isSaving,
21+
runTests,
22+
} = props;
1623
const {
1724
addTestCase,
1825
removeTestCase,
@@ -36,6 +43,7 @@ export default function TestCaseEditor(props: TestCaseEditorProps) {
3643
onRemoveTestCase={removeTestCase}
3744
onTestCaseUpdate={updateTestCase}
3845
onToggleTestCaseVisibility={toggleTestCaseVisibility}
46+
runTests={runTests}
3947
/>
4048
);
4149
}

src/lib/components/core/TestCasePanel.tsx

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type EditablePanelProps = TestCasePanelBaseProps & {
2626
value: string
2727
) => void;
2828
onToggleTestCaseVisibility: (index: number, tab: TestTab) => void;
29+
runTests: (tests: TestCaseDTO[]) => void;
2930
};
3031

3132
type ReadOnlyPanelProps = TestCasePanelBaseProps & {
@@ -151,15 +152,28 @@ export default function TestCasePanel(props: TestCasePanelProps) {
151152
{activeLabel} ({activeTestCases.length})
152153
</span>
153154
{!props.readOnly && (
154-
<Button
155-
className="items-center gap-1 rounded-md px-3 py-1 text-sm"
156-
variant="secondary"
157-
onClick={() => props.onAddTestCase(activeTab)}
158-
disabled={props.isSaving}
159-
>
160-
<PlusIcon className="stroke-sarge-primary-500" height={18} width={18} />
161-
Add test
162-
</Button>
155+
<div className="flex items-center justify-between gap-2">
156+
<Button
157+
className="items-center gap-1 rounded-md px-3 py-1 text-sm"
158+
variant="secondary"
159+
onClick={() => props.onAddTestCase(activeTab)}
160+
disabled={props.isSaving}
161+
>
162+
<PlusIcon
163+
className="stroke-sarge-primary-500"
164+
height={18}
165+
width={18}
166+
/>
167+
Add test
168+
</Button>
169+
<Button
170+
className="items-center rounded-md px-3 py-1 text-sm"
171+
variant="primary"
172+
onClick={() => props.runTests(activeTestCases)}
173+
>
174+
Run
175+
</Button>
176+
</div>
163177
)}
164178
</div>
165179

src/lib/hooks/useTestRunner.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,31 @@ import { useState } from 'react';
22
import { runEditorSubmission, runAssessmentSubmission } from '@/lib/api/runner';
33
import { type JudgeResultRequestBody } from '@/lib/connectors/judge0.connector';
44
import { type ProgrammingLanguage } from '@/generated/prisma';
5+
import { type TestCaseDTO } from '@/lib/schemas/task-template.schema';
56

6-
export default function useTestRunner(taskTemplateId: string) {
7+
export default function useTestRunner(code: string, language: ProgrammingLanguage) {
78
const [error, setError] = useState<Error>();
89
const [loading, setLoading] = useState<boolean>(false);
9-
const [code, setCode] = useState<string>('');
10-
const [language, setLanguage] = useState<ProgrammingLanguage>('python');
1110
const [output, setOutput] = useState<JudgeResultRequestBody>();
1211

13-
async function runEditPageTests() {
12+
async function runEditPageTests(tests: TestCaseDTO[]) {
1413
try {
1514
setLoading(true);
1615
const result = await runEditorSubmission({
17-
code: 'x=input()\nprint(x)',
16+
code,
1817
language,
19-
tests: [{ input: '2', output: '2' }],
18+
tests,
2019
});
2120
setOutput(result);
21+
console.warn(result);
2222
} catch (err) {
2323
setError(err as Error);
2424
} finally {
2525
setLoading(false);
2626
}
2727
}
2828

29-
async function runAssessmentTests() {
29+
async function runAssessmentTests(taskTemplateId: string) {
3030
try {
3131
setLoading(true);
3232
const result = await runAssessmentSubmission(taskTemplateId, {
@@ -44,8 +44,6 @@ export default function useTestRunner(taskTemplateId: string) {
4444
return {
4545
runAssessmentTests,
4646
runEditPageTests,
47-
setCode,
48-
setLanguage,
4947
error,
5048
loading,
5149
output,

src/lib/schemas/task-template.schema.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import { TagSchema } from './tag.schema';
44
import { TaskTemplateLanguageSchema } from './task-template-language.schema';
55

66
export const testCaseSchema = z.object({
7-
input: z.string().min(1, 'Expected input required'),
8-
output: z.string().min(1, 'Expected output required'),
7+
input: z.string(),
8+
output: z.string(),
99
});
1010

1111
export const getTaskTemplateSchema = z.object({

test_runner_reqs.txt

Lines changed: 0 additions & 31 deletions
This file was deleted.

0 commit comments

Comments
 (0)