From f1f39e1bf51d2f20f5d5b9def6e36e48ea9a943a Mon Sep 17 00:00:00 2001 From: box-sdk-build Date: Wed, 29 Jan 2025 11:12:27 -0800 Subject: [PATCH] test: Change tests for new response in `ai_extract_structured` (box/box-codegen#641) --- .codegen.json | 2 +- package-lock.json | 24 ++++++++-------- src/internal/utils.ts | 6 ++-- src/test/ai.generated.test.ts | 52 +++++++++++++++++++++++------------ 4 files changed, 51 insertions(+), 33 deletions(-) diff --git a/.codegen.json b/.codegen.json index ecdfc9f8..6972015e 100644 --- a/.codegen.json +++ b/.codegen.json @@ -1 +1 @@ -{ "engineHash": "cf82faa", "specHash": "1fdcbef", "version": "1.11.0" } +{ "engineHash": "a74691d", "specHash": "1fdcbef", "version": "1.11.0" } diff --git a/package-lock.json b/package-lock.json index e1e23235..b3955e4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2674,9 +2674,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3313,9 +3313,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3569,9 +3569,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -4466,9 +4466,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "bin": { "semver": "bin/semver.js" diff --git a/src/internal/utils.ts b/src/internal/utils.ts index 3a074181..38a9306c 100644 --- a/src/internal/utils.ts +++ b/src/internal/utils.ts @@ -453,10 +453,10 @@ export async function delayInSeconds(seconds: number): Promise { * @returns Value from object raw data. */ export function getValueFromObjectRawData(obj: any, key: string): any { - if (obj && typeof obj === 'object' && obj.rawData) { - return obj.rawData[key]; + if (!obj || typeof obj !== 'object' || !obj.rawData) { + return undefined; } - return undefined; + return key.split('.').reduce((value, k) => value?.[k], obj.rawData); } /** diff --git a/src/test/ai.generated.test.ts b/src/test/ai.generated.test.ts index ec05ac9f..72ce1092 100644 --- a/src/test/ai.generated.test.ts +++ b/src/test/ai.generated.test.ts @@ -384,16 +384,18 @@ test('testAIExtractStructuredWithFields', async function testAIExtractStructured } satisfies AiExtractStructured); if ( !( - (toString(getValueFromObjectRawData(response, 'firstName')) as string) == - 'John' + (toString( + getValueFromObjectRawData(response, 'answer.hobby'), + ) as string) == (['guitar'].map(toString).join(',') as string) ) ) { throw new Error('Assertion failed'); } if ( !( - (toString(getValueFromObjectRawData(response, 'lastName')) as string) == - 'Doe' + (toString( + getValueFromObjectRawData(response, 'answer.firstName'), + ) as string) == 'John' ) ) { throw new Error('Assertion failed'); @@ -401,25 +403,32 @@ test('testAIExtractStructuredWithFields', async function testAIExtractStructured if ( !( (toString( - getValueFromObjectRawData(response, 'dateOfBirth'), - ) as string) == '1990-07-04' + getValueFromObjectRawData(response, 'answer.lastName'), + ) as string) == 'Doe' ) ) { throw new Error('Assertion failed'); } if ( - !((toString(getValueFromObjectRawData(response, 'age')) as string) == '34') + !( + (toString( + getValueFromObjectRawData(response, 'answer.dateOfBirth'), + ) as string) == '1990-07-04' + ) ) { throw new Error('Assertion failed'); } if ( !( - (toString(getValueFromObjectRawData(response, 'hobby')) as string) == - (['guitar'].map(toString).join(',') as string) + (toString(getValueFromObjectRawData(response, 'answer.age')) as string) == + '34' ) ) { throw new Error('Assertion failed'); } + if (!(response.completionReason == 'done')) { + throw new Error('Assertion failed'); + } await client.files.deleteFileById(file.id); }); test('testAIExtractStructuredWithMetadataTemplate', async function testAIExtractStructuredWithMetadataTemplate(): Promise { @@ -491,16 +500,18 @@ test('testAIExtractStructuredWithMetadataTemplate', async function testAIExtract } satisfies AiExtractStructured); if ( !( - (toString(getValueFromObjectRawData(response, 'firstName')) as string) == - 'John' + (toString( + getValueFromObjectRawData(response, 'answer.firstName'), + ) as string) == 'John' ) ) { throw new Error('Assertion failed'); } if ( !( - (toString(getValueFromObjectRawData(response, 'lastName')) as string) == - 'Doe' + (toString( + getValueFromObjectRawData(response, 'answer.lastName'), + ) as string) == 'Doe' ) ) { throw new Error('Assertion failed'); @@ -508,25 +519,32 @@ test('testAIExtractStructuredWithMetadataTemplate', async function testAIExtract if ( !( (toString( - getValueFromObjectRawData(response, 'dateOfBirth'), + getValueFromObjectRawData(response, 'answer.dateOfBirth'), ) as string) == '1990-07-04T00:00:00Z' ) ) { throw new Error('Assertion failed'); } if ( - !((toString(getValueFromObjectRawData(response, 'age')) as string) == '34') + !( + (toString(getValueFromObjectRawData(response, 'answer.age')) as string) == + '34' + ) ) { throw new Error('Assertion failed'); } if ( !( - (toString(getValueFromObjectRawData(response, 'hobby')) as string) == - (['guitar'].map(toString).join(',') as string) + (toString( + getValueFromObjectRawData(response, 'answer.hobby'), + ) as string) == (['guitar'].map(toString).join(',') as string) ) ) { throw new Error('Assertion failed'); } + if (!(response.completionReason == 'done')) { + throw new Error('Assertion failed'); + } await client.metadataTemplates.deleteMetadataTemplate( 'enterprise' as DeleteMetadataTemplateScope, template.templateKey!,