UNPKG

@future-agi/sdk

Version:

We help GenAI teams maintain high-accuracy for their Models in production.

155 lines 7.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const __1 = require("../"); const fs = __importStar(require("fs")); const path = __importStar(require("path")); const uuid_1 = require("uuid"); // Integration tests for the Dataset module // These tests make real API calls and require a running FutureAGI backend // and valid API keys set in the environment variables. const describeIf = (condition) => (condition ? describe : describe.skip); const areEnvVarsSet = !!(process.env.FI_API_KEY && process.env.FI_SECRET_KEY && process.env.FI_BASE_URL); describeIf(areEnvVarsSet)('Dataset Integration Tests', () => { let dataset; const datasetName = `test-dataset-${(0, uuid_1.v4)()}`; const datasetConfig = { name: datasetName, }; beforeAll(() => { // Increase timeout for integration tests jest.setTimeout(30000); // 30 seconds dataset = new __1.Dataset({ fiApiKey: process.env.FI_API_KEY, fiSecretKey: process.env.FI_SECRET_KEY, fiBaseUrl: process.env.FI_BASE_URL, datasetConfig, }); }); afterAll(() => __awaiter(void 0, void 0, void 0, function* () { // Clean up the created dataset try { yield dataset.delete(); console.log(`✅ Cleaned up dataset: ${datasetName}`); } catch (error) { console.error(`❌ Failed to clean up dataset: ${datasetName}`, error); } })); test('should create an empty dataset', () => __awaiter(void 0, void 0, void 0, function* () { yield dataset.create(); const config = dataset.getConfig(); expect(config.id).toBeDefined(); expect(config.name).toBe(datasetName); })); test('should add columns to the dataset', () => __awaiter(void 0, void 0, void 0, function* () { const columns = [ (0, __1.createColumn)({ name: 'question', dataType: __1.DataTypeChoices.TEXT }), (0, __1.createColumn)({ name: 'answer', dataType: __1.DataTypeChoices.TEXT }), ]; yield dataset.addColumns(columns); // To verify, we'll try to get the column ID const columnId = yield dataset.getColumnId('question'); expect(columnId).toBeDefined(); })); test('should add rows to the dataset', () => __awaiter(void 0, void 0, void 0, function* () { const questionColId = yield dataset.getColumnId('question'); const answerColId = yield dataset.getColumnId('answer'); if (!questionColId || !answerColId) { throw new Error('Could not get column IDs for testing'); } const rows = [ (0, __1.createRow)({ cells: [ (0, __1.createCell)({ columnId: questionColId, rowId: 'row-1', value: 'What is FutureAGI?' }), (0, __1.createCell)({ columnId: answerColId, rowId: 'row-1', value: 'An AI evaluation platform.' }), ], }), ]; yield dataset.addRows(rows); })); test('should download the dataset to a file', () => __awaiter(void 0, void 0, void 0, function* () { const filePath = path.join(__dirname, `${datasetName}.csv`); const resultPath = yield dataset.download(filePath, false); expect(resultPath).toBe(filePath); expect(fs.existsSync(filePath)).toBe(true); // Verify content const content = fs.readFileSync(filePath, 'utf-8'); expect(content).toContain('question,answer'); expect(content).toContain('What is FutureAGI?,An AI evaluation platform.'); // Clean up the downloaded file fs.unlinkSync(filePath); })); test('should create dataset from a file, download, and delete', () => __awaiter(void 0, void 0, void 0, function* () { const newDatasetName = `test-from-file-${(0, uuid_1.v4)()}`; const newDatasetConfig = { name: newDatasetName, }; const fileDataset = new __1.Dataset({ fiApiKey: process.env.FI_API_KEY, fiSecretKey: process.env.FI_SECRET_KEY, fiBaseUrl: process.env.FI_BASE_URL, datasetConfig: newDatasetConfig, }); // Create a dummy CSV file const tempFilePath = path.join(__dirname, 'temp-upload.csv'); fs.writeFileSync(tempFilePath, 'header1,header2\nvalue1,value2'); try { // Create dataset from file yield fileDataset.create(tempFilePath); const createdConfig = fileDataset.getConfig(); expect(createdConfig.id).toBeDefined(); // Download to verify const downloadedContent = yield fileDataset.download(undefined, true); expect(downloadedContent.columns).toHaveLength(2); expect(downloadedContent.rows).toHaveLength(1); } finally { // Clean up yield fileDataset.delete(); fs.unlinkSync(tempFilePath); } })); }); //# sourceMappingURL=dataset.integration.test.js.map