From 0d2760016adbb5ddfe6bddbffc9eee97084a6a47 Mon Sep 17 00:00:00 2001 From: TrueAlpha-spiral <199723968+TrueAlpha-spiral@users.noreply.github.com> Date: Tue, 17 Mar 2026 20:57:27 +0000 Subject: [PATCH] test: add tests for getEventMetadataKey Add vitest test file for `getEventMetadataKey` in `packages/core/src/telemetry/clearcut-logger/event-metadata-key.test.ts` to ensure mapping string keys to Clearcut logging enum values works properly, handling edge cases such as numeric strings and prototype properties correctly. Also fixed a minor ESM extension issue in `utils/errors.test.ts`. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- .../event-metadata-key.test.ts | 38 +++++++++++++++++++ packages/core/src/utils/errors.test.ts | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 packages/core/src/telemetry/clearcut-logger/event-metadata-key.test.ts diff --git a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.test.ts b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.test.ts new file mode 100644 index 00000000000..ec94663e871 --- /dev/null +++ b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.test.ts @@ -0,0 +1,38 @@ +import { describe, it, expect } from 'vitest'; +import { + EventMetadataKey, + getEventMetadataKey, +} from './event-metadata-key.js'; + +describe('getEventMetadataKey', () => { + it('should return the correct enum value for a valid key name', () => { + expect(getEventMetadataKey('GEMINI_CLI_START_SESSION_MODEL')).toBe( + EventMetadataKey.GEMINI_CLI_START_SESSION_MODEL, + ); + expect(getEventMetadataKey('GEMINI_CLI_USER_PROMPT_LENGTH')).toBe( + EventMetadataKey.GEMINI_CLI_USER_PROMPT_LENGTH, + ); + expect(getEventMetadataKey('GEMINI_CLI_END_SESSION_ID')).toBe( + EventMetadataKey.GEMINI_CLI_END_SESSION_ID, + ); + }); + + it('should return undefined for an invalid key name', () => { + expect(getEventMetadataKey('INVALID_KEY_NAME')).toBeUndefined(); + expect(getEventMetadataKey('')).toBeUndefined(); + expect(getEventMetadataKey(' ')).toBeUndefined(); + }); + + it('should return undefined for a number passed as a string', () => { + // EventMetadataKey[1] is 'GEMINI_CLI_START_SESSION_MODEL' in standard TS enums, + // but getEventMetadataKey should return undefined because typeof 'GEMINI_CLI_START_SESSION_MODEL' is string, not number. + expect(getEventMetadataKey('1')).toBeUndefined(); + expect(getEventMetadataKey('0')).toBeUndefined(); + }); + + it('should return undefined for built-in object properties', () => { + expect(getEventMetadataKey('toString')).toBeUndefined(); + expect(getEventMetadataKey('valueOf')).toBeUndefined(); + expect(getEventMetadataKey('__proto__')).toBeUndefined(); + }); +}); diff --git a/packages/core/src/utils/errors.test.ts b/packages/core/src/utils/errors.test.ts index ec42a3f954f..67362d48cc6 100644 --- a/packages/core/src/utils/errors.test.ts +++ b/packages/core/src/utils/errors.test.ts @@ -4,7 +4,7 @@ import { BadRequestError, UnauthorizedError, ForbiddenError, -} from './errors'; +} from './errors.js'; describe('toFriendlyError', () => { it('should return the original error if it is not an object', () => {