mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
chore: Add description field to test definition (no-changelog) (#11691)
This commit is contained in:
parent
3b62bd58c2
commit
d9259a2d93
|
@ -35,6 +35,9 @@ export class TestDefinition extends WithTimestamps {
|
||||||
})
|
})
|
||||||
name: string;
|
name: string;
|
||||||
|
|
||||||
|
@Column('text')
|
||||||
|
description: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Relation to the workflow under test
|
* Relation to the workflow under test
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
import type { MigrationContext, ReversibleMigration } from '@/databases/types';
|
||||||
|
|
||||||
|
export class AddDescriptionToTestDefinition1731404028106 implements ReversibleMigration {
|
||||||
|
async up({ schemaBuilder: { addColumns, column } }: MigrationContext) {
|
||||||
|
await addColumns('test_definition', [column('description').text]);
|
||||||
|
}
|
||||||
|
|
||||||
|
async down({ schemaBuilder: { dropColumns } }: MigrationContext) {
|
||||||
|
await dropColumns('test_definition', ['description']);
|
||||||
|
}
|
||||||
|
}
|
|
@ -69,6 +69,7 @@ import { SeparateExecutionCreationFromStart1727427440136 } from '../common/17274
|
||||||
import { AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644 } from '../common/1728659839644-AddMissingPrimaryKeyOnAnnotationTagMapping';
|
import { AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644 } from '../common/1728659839644-AddMissingPrimaryKeyOnAnnotationTagMapping';
|
||||||
import { UpdateProcessedDataValueColumnToText1729607673464 } from '../common/1729607673464-UpdateProcessedDataValueColumnToText';
|
import { UpdateProcessedDataValueColumnToText1729607673464 } from '../common/1729607673464-UpdateProcessedDataValueColumnToText';
|
||||||
import { CreateTestDefinitionTable1730386903556 } from '../common/1730386903556-CreateTestDefinitionTable';
|
import { CreateTestDefinitionTable1730386903556 } from '../common/1730386903556-CreateTestDefinitionTable';
|
||||||
|
import { AddDescriptionToTestDefinition1731404028106 } from '../common/1731404028106-AddDescriptionToTestDefinition';
|
||||||
|
|
||||||
export const mysqlMigrations: Migration[] = [
|
export const mysqlMigrations: Migration[] = [
|
||||||
InitialMigration1588157391238,
|
InitialMigration1588157391238,
|
||||||
|
@ -140,4 +141,5 @@ export const mysqlMigrations: Migration[] = [
|
||||||
AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644,
|
AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644,
|
||||||
UpdateProcessedDataValueColumnToText1729607673464,
|
UpdateProcessedDataValueColumnToText1729607673464,
|
||||||
CreateTestDefinitionTable1730386903556,
|
CreateTestDefinitionTable1730386903556,
|
||||||
|
AddDescriptionToTestDefinition1731404028106,
|
||||||
];
|
];
|
||||||
|
|
|
@ -69,6 +69,7 @@ import { SeparateExecutionCreationFromStart1727427440136 } from '../common/17274
|
||||||
import { AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644 } from '../common/1728659839644-AddMissingPrimaryKeyOnAnnotationTagMapping';
|
import { AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644 } from '../common/1728659839644-AddMissingPrimaryKeyOnAnnotationTagMapping';
|
||||||
import { UpdateProcessedDataValueColumnToText1729607673464 } from '../common/1729607673464-UpdateProcessedDataValueColumnToText';
|
import { UpdateProcessedDataValueColumnToText1729607673464 } from '../common/1729607673464-UpdateProcessedDataValueColumnToText';
|
||||||
import { CreateTestDefinitionTable1730386903556 } from '../common/1730386903556-CreateTestDefinitionTable';
|
import { CreateTestDefinitionTable1730386903556 } from '../common/1730386903556-CreateTestDefinitionTable';
|
||||||
|
import { AddDescriptionToTestDefinition1731404028106 } from '../common/1731404028106-AddDescriptionToTestDefinition';
|
||||||
|
|
||||||
export const postgresMigrations: Migration[] = [
|
export const postgresMigrations: Migration[] = [
|
||||||
InitialMigration1587669153312,
|
InitialMigration1587669153312,
|
||||||
|
@ -140,4 +141,5 @@ export const postgresMigrations: Migration[] = [
|
||||||
AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644,
|
AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644,
|
||||||
UpdateProcessedDataValueColumnToText1729607673464,
|
UpdateProcessedDataValueColumnToText1729607673464,
|
||||||
CreateTestDefinitionTable1730386903556,
|
CreateTestDefinitionTable1730386903556,
|
||||||
|
AddDescriptionToTestDefinition1731404028106,
|
||||||
];
|
];
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
import { AddDescriptionToTestDefinition1731404028106 as BaseMigration } from '../common/1731404028106-AddDescriptionToTestDefinition';
|
||||||
|
|
||||||
|
export class AddDescriptionToTestDefinition1731404028106 extends BaseMigration {
|
||||||
|
transaction = false as const;
|
||||||
|
}
|
|
@ -39,6 +39,7 @@ import { DropRoleMapping1705429061930 } from './1705429061930-DropRoleMapping';
|
||||||
import { AddActivatedAtUserSetting1717498465931 } from './1717498465931-AddActivatedAtUserSetting';
|
import { AddActivatedAtUserSetting1717498465931 } from './1717498465931-AddActivatedAtUserSetting';
|
||||||
import { AddApiKeysTable1724951148974 } from './1724951148974-AddApiKeysTable';
|
import { AddApiKeysTable1724951148974 } from './1724951148974-AddApiKeysTable';
|
||||||
import { AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644 } from './1728659839644-AddMissingPrimaryKeyOnAnnotationTagMapping';
|
import { AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644 } from './1728659839644-AddMissingPrimaryKeyOnAnnotationTagMapping';
|
||||||
|
import { AddDescriptionToTestDefinition1731404028106 } from './1731404028106-AddDescriptionToTestDefinition';
|
||||||
import { UniqueWorkflowNames1620821879465 } from '../common/1620821879465-UniqueWorkflowNames';
|
import { UniqueWorkflowNames1620821879465 } from '../common/1620821879465-UniqueWorkflowNames';
|
||||||
import { UpdateWorkflowCredentials1630330987096 } from '../common/1630330987096-UpdateWorkflowCredentials';
|
import { UpdateWorkflowCredentials1630330987096 } from '../common/1630330987096-UpdateWorkflowCredentials';
|
||||||
import { AddNodeIds1658930531669 } from '../common/1658930531669-AddNodeIds';
|
import { AddNodeIds1658930531669 } from '../common/1658930531669-AddNodeIds';
|
||||||
|
@ -134,6 +135,7 @@ const sqliteMigrations: Migration[] = [
|
||||||
AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644,
|
AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644,
|
||||||
UpdateProcessedDataValueColumnToText1729607673464,
|
UpdateProcessedDataValueColumnToText1729607673464,
|
||||||
CreateTestDefinitionTable1730386903556,
|
CreateTestDefinitionTable1730386903556,
|
||||||
|
AddDescriptionToTestDefinition1731404028106,
|
||||||
];
|
];
|
||||||
|
|
||||||
export { sqliteMigrations };
|
export { sqliteMigrations };
|
||||||
|
|
|
@ -4,13 +4,16 @@ export const testDefinitionCreateRequestBodySchema = z
|
||||||
.object({
|
.object({
|
||||||
name: z.string().min(1).max(255),
|
name: z.string().min(1).max(255),
|
||||||
workflowId: z.string().min(1),
|
workflowId: z.string().min(1),
|
||||||
|
description: z.string().optional(),
|
||||||
evaluationWorkflowId: z.string().min(1).optional(),
|
evaluationWorkflowId: z.string().min(1).optional(),
|
||||||
|
annotationTagId: z.string().min(1).optional(),
|
||||||
})
|
})
|
||||||
.strict();
|
.strict();
|
||||||
|
|
||||||
export const testDefinitionPatchRequestBodySchema = z
|
export const testDefinitionPatchRequestBodySchema = z
|
||||||
.object({
|
.object({
|
||||||
name: z.string().min(1).max(255).optional(),
|
name: z.string().min(1).max(255).optional(),
|
||||||
|
description: z.string().optional(),
|
||||||
evaluationWorkflowId: z.string().min(1).optional(),
|
evaluationWorkflowId: z.string().min(1).optional(),
|
||||||
annotationTagId: z.string().min(1).optional(),
|
annotationTagId: z.string().min(1).optional(),
|
||||||
})
|
})
|
||||||
|
|
|
@ -26,6 +26,7 @@ export class TestDefinitionService {
|
||||||
|
|
||||||
private toEntityLike(attrs: {
|
private toEntityLike(attrs: {
|
||||||
name?: string;
|
name?: string;
|
||||||
|
description?: string;
|
||||||
workflowId?: string;
|
workflowId?: string;
|
||||||
evaluationWorkflowId?: string;
|
evaluationWorkflowId?: string;
|
||||||
annotationTagId?: string;
|
annotationTagId?: string;
|
||||||
|
@ -41,6 +42,10 @@ export class TestDefinitionService {
|
||||||
entity.name = attrs.name?.trim();
|
entity.name = attrs.name?.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (attrs.description) {
|
||||||
|
entity.description = attrs.description.trim();
|
||||||
|
}
|
||||||
|
|
||||||
if (attrs.workflowId) {
|
if (attrs.workflowId) {
|
||||||
entity.workflow = {
|
entity.workflow = {
|
||||||
id: attrs.workflowId,
|
id: attrs.workflowId,
|
||||||
|
|
|
@ -163,9 +163,36 @@ describe('POST /evaluation/test-definitions', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(resp.statusCode).toBe(200);
|
expect(resp.statusCode).toBe(200);
|
||||||
expect(resp.body.data.name).toBe('test');
|
expect(resp.body.data).toEqual(
|
||||||
expect(resp.body.data.workflowId).toBe(workflowUnderTest.id);
|
expect.objectContaining({
|
||||||
expect(resp.body.data.evaluationWorkflowId).toBe(evaluationWorkflow.id);
|
name: 'test',
|
||||||
|
workflowId: workflowUnderTest.id,
|
||||||
|
evaluationWorkflowId: evaluationWorkflow.id,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should create test definition with all fields', async () => {
|
||||||
|
const resp = await authOwnerAgent.post('/evaluation/test-definitions').send({
|
||||||
|
name: 'test',
|
||||||
|
description: 'test description',
|
||||||
|
workflowId: workflowUnderTest.id,
|
||||||
|
evaluationWorkflowId: evaluationWorkflow.id,
|
||||||
|
annotationTagId: annotationTag.id,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(resp.statusCode).toBe(200);
|
||||||
|
expect(resp.body.data).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
name: 'test',
|
||||||
|
description: 'test description',
|
||||||
|
workflowId: workflowUnderTest.id,
|
||||||
|
evaluationWorkflowId: evaluationWorkflow.id,
|
||||||
|
annotationTag: expect.objectContaining({
|
||||||
|
id: annotationTag.id,
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should return error if name is empty', async () => {
|
test('should return error if name is empty', async () => {
|
||||||
|
|
Loading…
Reference in a new issue