hey-api-builders
Version:
A custom plugin for @hey-api/openapi-ts that generates mock data builders with a lightweight custom runtime, Zod integration, or static mock generation.
90 lines • 5.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const string_utils_1 = require("./string-utils");
(0, vitest_1.describe)('String Utils', () => {
(0, vitest_1.describe)('toPascal', () => {
(0, vitest_1.it)('converts snake_case to PascalCase', () => {
(0, vitest_1.expect)((0, string_utils_1.toPascal)('hello_world')).toBe('HelloWorld');
});
(0, vitest_1.it)('converts kebab-case to PascalCase', () => {
(0, vitest_1.expect)((0, string_utils_1.toPascal)('hello-world')).toBe('HelloWorld');
});
(0, vitest_1.it)('converts space separated to PascalCase', () => {
(0, vitest_1.expect)((0, string_utils_1.toPascal)('hello world')).toBe('HelloWorld');
});
(0, vitest_1.it)('handles already PascalCase strings', () => {
(0, vitest_1.expect)((0, string_utils_1.toPascal)('HelloWorld')).toBe('HelloWorld');
});
(0, vitest_1.it)('handles camelCase strings', () => {
(0, vitest_1.expect)((0, string_utils_1.toPascal)('helloWorld')).toBe('HelloWorld');
});
(0, vitest_1.it)('handles single words', () => {
(0, vitest_1.expect)((0, string_utils_1.toPascal)('hello')).toBe('Hello');
});
(0, vitest_1.it)('handles numbers in strings', () => {
(0, vitest_1.expect)((0, string_utils_1.toPascal)('hello_world_123')).toBe('HelloWorld123');
});
});
(0, vitest_1.describe)('safeTypeName', () => {
(0, vitest_1.it)('removes invalid characters', () => {
(0, vitest_1.expect)((0, string_utils_1.safeTypeName)('Hello-World!')).toBe('Hello_World_');
});
(0, vitest_1.it)('keeps valid characters', () => {
(0, vitest_1.expect)((0, string_utils_1.safeTypeName)('HelloWorld123')).toBe('HelloWorld123');
});
(0, vitest_1.it)('handles underscores', () => {
(0, vitest_1.expect)((0, string_utils_1.safeTypeName)('Hello_World')).toBe('Hello_World');
});
(0, vitest_1.it)('replaces special characters with underscores', () => {
(0, vitest_1.expect)((0, string_utils_1.safeTypeName)('Hello@World#123')).toBe('Hello_World_123');
});
});
(0, vitest_1.describe)('normalizeTypeName', () => {
(0, vitest_1.it)('normalizes UI prefix', () => {
(0, vitest_1.expect)((0, string_utils_1.normalizeTypeName)('UITheme')).toBe('UiTheme');
});
(0, vitest_1.it)('normalizes API prefix', () => {
(0, vitest_1.expect)((0, string_utils_1.normalizeTypeName)('APIKey')).toBe('ApiKey');
});
(0, vitest_1.it)('normalizes HTTP prefix', () => {
(0, vitest_1.expect)((0, string_utils_1.normalizeTypeName)('HTTPResponse')).toBe('HttpResponse');
});
(0, vitest_1.it)('normalizes URL prefix', () => {
(0, vitest_1.expect)((0, string_utils_1.normalizeTypeName)('URLConfig')).toBe('UrlConfig');
});
(0, vitest_1.it)('normalizes ID prefix', () => {
(0, vitest_1.expect)((0, string_utils_1.normalizeTypeName)('IDType')).toBe('IdType');
});
(0, vitest_1.it)('does not change non-prefixed names', () => {
(0, vitest_1.expect)((0, string_utils_1.normalizeTypeName)('UserType')).toBe('UserType');
});
(0, vitest_1.it)('handles multiple normalizations', () => {
(0, vitest_1.expect)((0, string_utils_1.normalizeTypeName)('UIAPIConfig')).toBe('UiAPIConfig');
});
});
(0, vitest_1.describe)('isValidIdentifier', () => {
(0, vitest_1.it)('returns true for valid identifiers', () => {
(0, vitest_1.expect)((0, string_utils_1.isValidIdentifier)('validName')).toBe(true);
(0, vitest_1.expect)((0, string_utils_1.isValidIdentifier)('_private')).toBe(true);
(0, vitest_1.expect)((0, string_utils_1.isValidIdentifier)('name123')).toBe(true);
});
(0, vitest_1.it)('returns false for invalid identifiers', () => {
(0, vitest_1.expect)((0, string_utils_1.isValidIdentifier)('123name')).toBe(false);
(0, vitest_1.expect)((0, string_utils_1.isValidIdentifier)('na-me')).toBe(false);
(0, vitest_1.expect)((0, string_utils_1.isValidIdentifier)('na me')).toBe(false);
(0, vitest_1.expect)((0, string_utils_1.isValidIdentifier)('na.me')).toBe(false);
});
});
(0, vitest_1.describe)('safePropName', () => {
(0, vitest_1.it)('returns unquoted name for valid identifiers', () => {
(0, vitest_1.expect)((0, string_utils_1.safePropName)('validName')).toBe('validName');
});
(0, vitest_1.it)('returns quoted name for invalid identifiers', () => {
(0, vitest_1.expect)((0, string_utils_1.safePropName)('invalid-name')).toBe('"invalid-name"');
(0, vitest_1.expect)((0, string_utils_1.safePropName)('123invalid')).toBe('"123invalid"');
(0, vitest_1.expect)((0, string_utils_1.safePropName)('invalid.name')).toBe('"invalid.name"');
});
});
});
//# sourceMappingURL=string-utils.test.js.map