// Mock the @google-cloud/bigquery library jest.mock('@google-cloud/bigquery', () => { // Create mock implementation for BigQuery return { BigQuery: jest.fn().mockImplementation(() => ({ dataset: jest.fn().mockImplementation((name) => ({ exists: jest.fn().mockResolvedValue([false]), create: jest.fn().mockResolvedValue([{ id: name }]), get: jest.fn().mockResolvedValue([{ id: name }]), delete: jest.fn().mockResolvedValue([true]), table: jest.fn().mockImplementation((tableName) => ({ exists: jest.fn().mockResolvedValue([false]), create: jest.fn().mockResolvedValue([{ id: tableName }]), get: jest.fn().mockResolvedValue([{ id: tableName }]) })) })), createQueryJob: jest.fn().mockImplementation(({ query }) => { return Promise.resolve([ { getQueryResults: jest.fn().mockResolvedValue([ [{ message: 'Hello World' }], { pageToken: null, totalRows: '1' } ]) } ]) }) })) } }) import { BigQueryAdapter } from '..' const bq = new BigQueryAdapter() const dataset = 'fake_dataset' const table = 'fake_table' describe('Testing BigQuery calls', () => { test('should not return dataset', async () => { let result try { result = await bq.getDataset({ name: dataset }) } catch { expect(result).toBeFalsy() } }) test('should create dataset', async () => { const result = await bq.createDataset({ name: dataset }) expect(result).toBeTruthy() expect(result).toHaveProperty('id') expect(result.id).toMatch(dataset) }) test('should return dataset', async () => { const result = await bq.getDataset({ name: dataset }) expect(result).toBeTruthy() expect(result).toHaveProperty('id') expect(result.id).toMatch(dataset) }) test('should create table', async () => { const sql = ` CREATE TABLE \`${dataset}.${table}\` ( message STRING ) INSERT INTO \`${dataset}.${table}\` (message) VALUES ('Hello World') ` const result = await bq.runQuery({ sql }) expect(result).toBeTruthy() }) test('should run query', async () => { const sql = `SELECT * FROM \`${dataset}.${table}\`` const result = await bq.runQuery({ sql }) expect(result).toBeTruthy() expect(result.length).toBe(1) }) test('should delete dataset', async () => { const result = await bq.deleteDataset({ name: dataset }) expect(result).toBeTruthy() }) })