chore: Add description field to test definition (no-changelog) (#11691)

This commit is contained in:
Eugene 2024-11-14 14:45:02 +01:00 committed by GitHub
parent 3b62bd58c2
commit d9259a2d93
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 63 additions and 3 deletions

View file

@ -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
*/ */

View file

@ -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']);
}
}

View file

@ -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,
]; ];

View file

@ -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,
]; ];

View file

@ -0,0 +1,5 @@
import { AddDescriptionToTestDefinition1731404028106 as BaseMigration } from '../common/1731404028106-AddDescriptionToTestDefinition';
export class AddDescriptionToTestDefinition1731404028106 extends BaseMigration {
transaction = false as const;
}

View file

@ -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 };

View file

@ -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(),
}) })

View file

@ -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,

View file

@ -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 () => {