spanwright
Version:
CLI tool to generate Cloud Spanner E2E testing framework projects with Go database tools and Playwright browser automation
110 lines • 8.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const validation_1 = require("../validation");
const errors_1 = require("../errors");
(0, vitest_1.describe)('Validation Module', () => {
(0, vitest_1.describe)('validateProjectName', () => {
(0, vitest_1.it)('should pass for valid project names', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('my-project')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('project123')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('Project_Name')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('test-project-name')).not.toThrow();
});
(0, vitest_1.it)('should throw ValidationError for empty or undefined name', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)(undefined)).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)(' ')).toThrow(errors_1.ValidationError);
});
(0, vitest_1.it)('should throw ValidationError for invalid characters', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('my/project')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('my\\project')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('.hidden-project')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('123project')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateProjectName)('project.name')).toThrow(errors_1.ValidationError);
});
});
(0, vitest_1.describe)('validateDatabaseCount', () => {
(0, vitest_1.it)('should pass for valid database counts', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseCount)('1')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseCount)('2')).not.toThrow();
});
(0, vitest_1.it)('should throw ValidationError for invalid counts', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseCount)('0')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseCount)('3')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseCount)('one')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseCount)('')).toThrow(errors_1.ValidationError);
});
});
(0, vitest_1.describe)('validateSchemaPath', () => {
(0, vitest_1.it)('should pass for valid paths', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateSchemaPath)('/valid/path/to/schema', 'Schema path')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateSchemaPath)('relative/path/to/schema', 'Schema path')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateSchemaPath)('./schema', 'Schema path')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateSchemaPath)('schema.sql', 'Schema path')).not.toThrow();
});
(0, vitest_1.it)('should throw ValidationError for empty path', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateSchemaPath)('', 'Schema path')).toThrow(errors_1.ValidationError);
});
(0, vitest_1.it)('should throw ValidationError for invalid characters', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateSchemaPath)('schema;path', 'Schema path')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateSchemaPath)('schema|path', 'Schema path')).toThrow(errors_1.ValidationError);
});
});
(0, vitest_1.describe)('validateDatabaseName', () => {
(0, vitest_1.it)('should pass for valid database names', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseName)('my-database', 'Database name')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseName)('test_db_123', 'Database name')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseName)('validName', 'Database name')).not.toThrow();
});
(0, vitest_1.it)('should throw ValidationError for empty name', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseName)('', 'Database name')).toThrow(errors_1.ValidationError);
});
(0, vitest_1.it)('should throw ValidationError for names too long', () => {
const longName = 'a'.repeat(31); // 31 characters
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseName)(longName, 'Database name')).toThrow(errors_1.ValidationError);
});
(0, vitest_1.it)('should throw ValidationError for invalid characters', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseName)('123invalid', 'Database name')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateDatabaseName)('invalid.name', 'Database name')).toThrow(errors_1.ValidationError);
});
});
(0, vitest_1.describe)('validateTemplateVariable', () => {
(0, vitest_1.it)('should pass for valid template variables', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateTemplateVariable)('variable123', 'Variable')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateTemplateVariable)('valid_var', 'Variable')).not.toThrow();
(0, vitest_1.expect)(() => (0, validation_1.validateTemplateVariable)('test-var', 'Variable')).not.toThrow();
});
(0, vitest_1.it)('should throw ValidationError for empty variable', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateTemplateVariable)('', 'Variable')).toThrow(errors_1.ValidationError);
});
(0, vitest_1.it)('should throw ValidationError for invalid characters', () => {
(0, vitest_1.expect)(() => (0, validation_1.validateTemplateVariable)('var.name', 'Variable')).toThrow(errors_1.ValidationError);
(0, vitest_1.expect)(() => (0, validation_1.validateTemplateVariable)('var/name', 'Variable')).toThrow(errors_1.ValidationError);
});
});
(0, vitest_1.describe)('isFlag', () => {
(0, vitest_1.it)('should identify flags correctly', () => {
(0, vitest_1.expect)((0, validation_1.isFlag)('--help')).toBe(true);
(0, vitest_1.expect)((0, validation_1.isFlag)('-v')).toBe(true);
(0, vitest_1.expect)((0, validation_1.isFlag)('--version')).toBe(true);
});
(0, vitest_1.it)('should not identify non-flags', () => {
(0, vitest_1.expect)((0, validation_1.isFlag)('help')).toBe(false);
(0, vitest_1.expect)((0, validation_1.isFlag)('project-name')).toBe(false);
(0, vitest_1.expect)((0, validation_1.isFlag)('')).toBe(false);
});
});
(0, vitest_1.describe)('sanitizeInput', () => {
(0, vitest_1.it)('should trim whitespace', () => {
(0, vitest_1.expect)((0, validation_1.sanitizeInput)(' test ')).toBe('test');
(0, vitest_1.expect)((0, validation_1.sanitizeInput)('\ttest\n')).toBe('test');
(0, vitest_1.expect)((0, validation_1.sanitizeInput)(' ')).toBe('');
});
(0, vitest_1.it)('should preserve valid content', () => {
(0, vitest_1.expect)((0, validation_1.sanitizeInput)('valid-input')).toBe('valid-input');
(0, vitest_1.expect)((0, validation_1.sanitizeInput)('test123')).toBe('test123');
});
});
});
//# sourceMappingURL=validation.test.js.map