153 lines
5.2 KiB
TypeScript
153 lines
5.2 KiB
TypeScript
import { KDrive } from '../src/nodes/KDrive/KDrive.node';
|
|
import {
|
|
kdriveApiRequest,
|
|
handleApiError,
|
|
resolvePathToId,
|
|
parsePath,
|
|
normalizePath,
|
|
resolveIdToPath,
|
|
clearPathCache
|
|
} from '../src/nodes/KDrive/GenericFunctions';
|
|
|
|
describe('KDrive Node', () => {
|
|
let kdriveNode: KDrive;
|
|
|
|
beforeEach(() => {
|
|
kdriveNode = new KDrive();
|
|
});
|
|
|
|
describe('Node Description', () => {
|
|
it('should have correct node description', () => {
|
|
expect(kdriveNode.description.displayName).toBe('kDrive');
|
|
expect(kdriveNode.description.name).toBe('kDrive');
|
|
expect(kdriveNode.description.group).toContain('transform');
|
|
expect(kdriveNode.description.version).toBe(1);
|
|
});
|
|
|
|
it('should have required credentials', () => {
|
|
expect(kdriveNode.description.credentials).toBeDefined();
|
|
if (kdriveNode.description.credentials) {
|
|
expect(kdriveNode.description.credentials.length).toBe(1);
|
|
expect(kdriveNode.description.credentials[0].name).toBe('kDriveApi');
|
|
}
|
|
});
|
|
});
|
|
|
|
describe('Node Properties', () => {
|
|
it('should have authentication property', () => {
|
|
const authProperty = kdriveNode.description.properties.find(p => p.name === 'authentication');
|
|
expect(authProperty).toBeDefined();
|
|
if (authProperty) {
|
|
expect(authProperty.type).toBe('options');
|
|
}
|
|
});
|
|
|
|
it('should have resource property', () => {
|
|
const resourceProperty = kdriveNode.description.properties.find(p => p.name === 'resource');
|
|
expect(resourceProperty).toBeDefined();
|
|
if (resourceProperty) {
|
|
expect(resourceProperty.type).toBe('options');
|
|
}
|
|
});
|
|
|
|
it('should have operation property', () => {
|
|
const operationProperty = kdriveNode.description.properties.find(p => p.name === 'operation');
|
|
expect(operationProperty).toBeDefined();
|
|
if (operationProperty) {
|
|
expect(operationProperty.type).toBe('options');
|
|
}
|
|
});
|
|
|
|
it('should have path-based operation options', () => {
|
|
const operationProperty = kdriveNode.description.properties.find(p => p.name === 'operation') as any;
|
|
expect(operationProperty).toBeDefined();
|
|
if (operationProperty && operationProperty.options) {
|
|
const operationValues = operationProperty.options.map((opt: any) => opt.value);
|
|
expect(operationValues).toContain('getFileInfoByPath');
|
|
expect(operationValues).toContain('uploadFileByPath');
|
|
expect(operationValues).toContain('downloadFileByPath');
|
|
expect(operationValues).toContain('deleteFileByPath');
|
|
expect(operationValues).toContain('getFileVersionsByPath');
|
|
}
|
|
});
|
|
|
|
it('should have path-based parameters', () => {
|
|
const filePathParam = kdriveNode.description.properties.find(p => p.name === 'filePath');
|
|
expect(filePathParam).toBeDefined();
|
|
|
|
const directoryPathParam = kdriveNode.description.properties.find(p => p.name === 'directoryPath');
|
|
expect(directoryPathParam).toBeDefined();
|
|
|
|
const uploadPathParam = kdriveNode.description.properties.find(p => p.name === 'uploadPath');
|
|
expect(uploadPathParam).toBeDefined();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('Generic Functions', () => {
|
|
describe('kdriveApiRequest', () => {
|
|
it('should be a function', () => {
|
|
expect(typeof kdriveApiRequest).toBe('function');
|
|
});
|
|
});
|
|
|
|
describe('handleApiError', () => {
|
|
it('should be a function', () => {
|
|
expect(typeof handleApiError).toBe('function');
|
|
});
|
|
});
|
|
|
|
describe('Path Resolution Functions', () => {
|
|
describe('normalizePath', () => {
|
|
it('should normalize Windows paths', () => {
|
|
expect(normalizePath('documents\\file.txt')).toBe('documents/file.txt');
|
|
});
|
|
|
|
it('should handle leading/trailing slashes', () => {
|
|
expect(normalizePath('/documents/file.txt/')).toBe('documents/file.txt');
|
|
expect(normalizePath('///documents///file.txt///')).toBe('documents/file.txt');
|
|
});
|
|
|
|
it('should handle empty path as root', () => {
|
|
expect(normalizePath('')).toBe('root');
|
|
expect(normalizePath('/')).toBe('root');
|
|
expect(normalizePath('///')).toBe('root');
|
|
});
|
|
|
|
it('should handle root path', () => {
|
|
expect(normalizePath('root')).toBe('root');
|
|
});
|
|
});
|
|
|
|
describe('parsePath', () => {
|
|
it('should parse simple paths', () => {
|
|
expect(parsePath('file.txt')).toEqual(['file.txt']);
|
|
});
|
|
|
|
it('should parse nested paths', () => {
|
|
expect(parsePath('documents/project/file.txt')).toEqual(['documents', 'project', 'file.txt']);
|
|
});
|
|
|
|
it('should handle root path', () => {
|
|
expect(parsePath('root')).toEqual(['root']);
|
|
});
|
|
|
|
it('should normalize before parsing', () => {
|
|
expect(parsePath('/documents//project///file.txt/')).toEqual(['documents', 'project', 'file.txt']);
|
|
});
|
|
});
|
|
|
|
describe('clearPathCache', () => {
|
|
it('should be a function', () => {
|
|
expect(typeof clearPathCache).toBe('function');
|
|
});
|
|
});
|
|
|
|
describe('resolvePathToId and resolveIdToPath', () => {
|
|
it('should be functions', () => {
|
|
expect(typeof resolvePathToId).toBe('function');
|
|
expect(typeof resolveIdToPath).toBe('function');
|
|
});
|
|
});
|
|
});
|
|
}); |