/** * Mock Data for Tool Tests * * This file contains mock data samples to be used in tool unit tests. */ import { randomFloat } from '@sim/utils/random' /** * HTTP Request mock responses for different scenarios. */ export const mockHttpResponses = { simple: { data: { message: 'Success', status: 'ok' }, status: 200, headers: { 'content-type': 'application/json' }, }, error: { error: { message: 'Bad Request', code: 400 }, status: 400, }, notFound: { error: { message: 'Not Found', code: 404 }, status: 404, }, unauthorized: { error: { message: 'Unauthorized', code: 401 }, status: 401, }, } /** * Gmail Mock Data */ export const mockGmailResponses = { messageList: { messages: [ { id: 'msg1', threadId: 'thread1' }, { id: 'msg2', threadId: 'thread2' }, { id: 'msg3', threadId: 'thread3' }, ], nextPageToken: 'token123', }, emptyList: { messages: [], resultSizeEstimate: 0, }, singleMessage: { id: 'msg1', threadId: 'thread1', labelIds: ['INBOX', 'UNREAD'], snippet: 'This is a snippet preview of the email...', payload: { headers: [ { name: 'From', value: 'sender@example.com' }, { name: 'To', value: 'recipient@example.com' }, { name: 'Subject', value: 'Test Email Subject' }, { name: 'Date', value: 'Mon, 15 Mar 2025 10:30:00 -0800' }, ], mimeType: 'multipart/alternative', parts: [ { mimeType: 'text/plain', body: { data: Buffer.from('This is the plain text content of the email').toString('base64'), }, }, { mimeType: 'text/html', body: { data: Buffer.from('
This is the HTML content of the email
').toString( 'base64' ), }, }, ], }, }, } /** * Google Drive Mock Data */ export const mockDriveResponses = { fileList: { files: [ { id: 'file1', name: 'Document1.docx', mimeType: 'application/vnd.google-apps.document' }, { id: 'file2', name: 'Spreadsheet.xlsx', mimeType: 'application/vnd.google-apps.spreadsheet', }, { id: 'file3', name: 'Presentation.pptx', mimeType: 'application/vnd.google-apps.presentation', }, ], nextPageToken: 'drive-page-token', }, emptyFileList: { files: [], }, fileMetadata: { id: 'file1', name: 'Document1.docx', mimeType: 'application/vnd.google-apps.document', webViewLink: 'https://docs.google.com/document/d/123/edit', createdTime: '2025-03-15T12:00:00Z', modifiedTime: '2025-03-16T10:15:00Z', owners: [{ displayName: 'Test User', emailAddress: 'user@example.com' }], size: '12345', }, } /** * Google Sheets Mock Data */ export const mockSheetsResponses = { rangeData: { range: 'Sheet1!A1:D5', majorDimension: 'ROWS', values: [ ['Header1', 'Header2', 'Header3', 'Header4'], ['Row1Col1', 'Row1Col2', 'Row1Col3', 'Row1Col4'], ['Row2Col1', 'Row2Col2', 'Row2Col3', 'Row2Col4'], ['Row3Col1', 'Row3Col2', 'Row3Col3', 'Row3Col4'], ['Row4Col1', 'Row4Col2', 'Row4Col3', 'Row4Col4'], ], }, emptyRange: { range: 'Sheet1!A1:D5', majorDimension: 'ROWS', values: [], }, updateResponse: { spreadsheetId: 'spreadsheet123', updatedRange: 'Sheet1!A1:D5', updatedRows: 5, updatedColumns: 4, updatedCells: 20, }, } /** * Pinecone Mock Data */ export const mockPineconeResponses = { embedding: { embedding: Array(1536) .fill(0) .map(() => randomFloat() * 2 - 1), metadata: { text: 'Sample text for embedding', id: 'embed-123' }, }, searchResults: { matches: [ { id: 'doc1', score: 0.92, metadata: { text: 'Matching text 1' } }, { id: 'doc2', score: 0.85, metadata: { text: 'Matching text 2' } }, { id: 'doc3', score: 0.78, metadata: { text: 'Matching text 3' } }, ], }, upsertResponse: { statusText: 'Created', }, } /** * GitHub Mock Data */ export const mockGitHubResponses = { repoInfo: { id: 12345, name: 'test-repo', full_name: 'user/test-repo', description: 'A test repository', html_url: 'https://github.com/user/test-repo', owner: { login: 'user', id: 54321, avatar_url: 'https://avatars.githubusercontent.com/u/54321', }, private: false, fork: false, created_at: '2025-01-01T00:00:00Z', updated_at: '2025-03-15T10:00:00Z', pushed_at: '2025-03-15T09:00:00Z', default_branch: 'main', open_issues_count: 5, watchers_count: 10, forks_count: 3, stargazers_count: 15, language: 'TypeScript', }, prResponse: { id: 12345, number: 42, title: 'Test PR Title', body: 'Test PR description', html_url: 'https://github.com/user/test-repo/pull/42', state: 'open', user: { login: 'user', id: 54321 }, created_at: '2025-03-15T10:00:00Z', updated_at: '2025-03-15T10:05:00Z', }, } /** * Serper Search Mock Data */ export const mockSerperResponses = { searchResults: { searchParameters: { q: 'test query', gl: 'us', hl: 'en' }, organic: [ { title: 'Test Result 1', link: 'https://example.com/1', snippet: 'This is a snippet for the first test result.', position: 1, }, { title: 'Test Result 2', link: 'https://example.com/2', snippet: 'This is a snippet for the second test result.', position: 2, }, { title: 'Test Result 3', link: 'https://example.com/3', snippet: 'This is a snippet for the third test result.', position: 3, }, ], knowledgeGraph: { title: 'Test Knowledge Graph', type: 'Test Type', description: 'This is a test knowledge graph result', }, }, } /** * Slack Mock Data */ export const mockSlackResponses = { messageResponse: { ok: true, channel: 'C1234567890', ts: '1627385301.000700', message: { text: 'This is a test message', user: 'U1234567890', ts: '1627385301.000700', team: 'T1234567890', }, }, errorResponse: { ok: false, error: 'channel_not_found', }, } /** * Tavily Mock Data */ export const mockTavilyResponses = { searchResults: { results: [ { title: 'Test Article 1', url: 'https://example.com/article1', content: 'This is the content of test article 1.', score: 0.95, }, { title: 'Test Article 2', url: 'https://example.com/article2', content: 'This is the content of test article 2.', score: 0.87, }, { title: 'Test Article 3', url: 'https://example.com/article3', content: 'This is the content of test article 3.', score: 0.72, }, ], query: 'test query', search_id: 'search-123', }, } /** * Supabase Mock Data */ export const mockSupabaseResponses = { queryResponse: { data: [ { id: 1, name: 'Item 1', description: 'Description 1' }, { id: 2, name: 'Item 2', description: 'Description 2' }, { id: 3, name: 'Item 3', description: 'Description 3' }, ], error: null, }, insertResponse: { data: [{ id: 4, name: 'Item 4', description: 'Description 4' }], error: null, }, updateResponse: { data: [{ id: 1, name: 'Updated Item 1', description: 'Updated Description 1' }], error: null, }, errorResponse: { data: null, error: { message: 'Database error', details: 'Error details', hint: 'Error hint', code: 'DB_ERROR', }, }, }