@ -24,11 +24,13 @@ Output: Complete test coverage for dynamic input flows in GenerateImageNode, Gen
**Existing test files to extend:**
@src/components/__tests__/GenerateImageNode .test.tsx
@src/components/__tests__/GenerateVideoNode .test.tsx
@src/app/api/generate/__tests__/route .test.ts
**Component being tested:**
**Components/routes being tested:**
@src/components/nodes/GenerateImageNode .tsx (lines 464-580 for dynamic handles)
@src/components/nodes/GenerateVideoNode .tsx
@src/components/nodes/ModelParameters .tsx
@src/app/api/generate/route .ts (lines 342-377 for parameters handling)
**Prior Phase Summary (provides test patterns):**
@.planning/phases/17-component-tests/17-03-SUMMARY.md
@ -167,6 +169,63 @@ inputSchema: [
< done > GenerateVideoNode tests match GenerateImageNode coverage for dynamic handles< / done >
< / task >
< task type = "auto" >
< name > Task 4: Add API route tests for parameters field< / name >
< files > src/app/api/generate/__tests__/route.test.ts< / files >
< action >
Add tests to verify the `parameters` field (UI settings) is passed to provider APIs.
**Replicate provider:**
- Should pass parameters to prediction input
- Should merge parameters with dynamicInputs (dynamicInputs take precedence)
**fal.ai provider:**
- Should pass parameters to fal.ai request body
- Should merge parameters with dynamicInputs
Test pattern:
```typescript
it("should pass parameters to prediction input", async () => {
// ... mock setup ...
const request = createMockPostRequest(
{
prompt: "Test prompt",
selectedModel: {
provider: "replicate",
modelId: "stability-ai/sdxl",
displayName: "SDXL",
},
parameters: {
seed: 42,
num_inference_steps: 30,
guidance_scale: 7.5,
},
},
{ "X-Replicate-API-Key": "test-key" }
);
const response = await POST(request);
// Verify parameters were passed to prediction
const createPredictionCall = mockFetch.mock.calls[1];
const requestBody = JSON.parse(createPredictionCall[1].body);
expect(requestBody.input).toEqual(
expect.objectContaining({
seed: 42,
num_inference_steps: 30,
guidance_scale: 7.5,
})
);
});
```
Also test that dynamicInputs override parameters when both have same key.
< / action >
< verify > npm test -- src/app/api/generate/__tests__/route.test.ts --testNamePattern="parameters"< / verify >
< done > API route tests verify parameters field is passed to Replicate and fal.ai< / done >
< / task >
< / tasks >
< verification >
@ -174,10 +233,12 @@ Before declaring plan complete:
- [ ] `npm test -- src/components/__tests__/ModelParameters.test.tsx` passes
- [ ] `npm test -- src/components/__tests__/GenerateImageNode.test.tsx` passes
- [ ] `npm test -- src/components/__tests__/GenerateVideoNode.test.tsx` passes
- [ ] `npm test -- src/app/api/generate/__tests__/route.test.ts` passes
- [ ] No TypeScript errors
- [ ] Schema loading tested
- [ ] Dynamic handle variations tested
- [ ] Placeholder handles tested
- [ ] Parameters passed to API tested
< / verification >
< success_criteria >
@ -186,6 +247,7 @@ Before declaring plan complete:
- ModelParameters component fully tested
- Dynamic input handle rendering fully tested
- Placeholder handle behavior fully tested
- Parameters field passed to provider APIs tested
- Phase 22 complete
< / success_criteria >