qa-shadow-report
Version:
npm package that prints formatted test reports into a google sheet or csv file
130 lines (102 loc) • 3.66 kB
JavaScript
import { jest } from '@jest/globals';
import { sheets } from '../auth.js';
import {
getTabValuesByTitle,
getTabIdFromWeeklyTitle,
getExistingTabTitlesInRange,
} from './sheetDataMethods.js';
// Mock dependencies
jest.mock('../auth.js', () => ({
sheets: {
spreadsheets: {
values: {
get: jest.fn(),
},
get: jest.fn(),
},
},
}));
describe('Sheet Data Methods', () => {
const mockTabTitle = 'Test Tab';
const mockTabId = '12345';
const mockValues = [
['Header1', 'Header2'],
['Value1', 'Value2'],
];
const mockSpreadsheetData = {
sheets: [
{ properties: { title: 'Sheet1', sheetId: 1 } },
{ properties: { title: 'Sheet2', sheetId: 2 } },
],
};
beforeEach(() => {
jest.clearAllMocks();
});
describe('getTabValuesByTitle', () => {
it.skip('should fetch tab values successfully', async () => {
sheets.spreadsheets.values.get.mockResolvedValue({
data: { values: mockValues },
});
const result = await getTabValuesByTitle(mockTabTitle);
expect(result).toEqual(mockValues);
expect(sheets.spreadsheets.values.get).toHaveBeenCalledWith({
spreadsheetId: expect.any(String),
range: mockTabTitle,
});
});
it.skip('should handle empty tab values', async () => {
sheets.spreadsheets.values.get.mockResolvedValue({
data: { values: [] },
});
const result = await getTabValuesByTitle(mockTabTitle);
expect(result).toEqual([]);
});
it.skip('should handle API errors gracefully', async () => {
const error = new Error('API Error');
sheets.spreadsheets.values.get.mockRejectedValue(error);
await expect(getTabValuesByTitle(mockTabTitle)).rejects.toThrow(error);
});
});
describe('getTabIdFromWeeklyTitle', () => {
it.skip('should get tab ID from weekly title', async () => {
sheets.spreadsheets.get.mockResolvedValue({ data: mockSpreadsheetData });
const result = await getTabIdFromWeeklyTitle(mockTabTitle);
expect(result).toBe(1);
expect(sheets.spreadsheets.get).toHaveBeenCalledWith({
spreadsheetId: expect.any(String),
});
});
it.skip('should handle tab not found', async () => {
sheets.spreadsheets.get.mockResolvedValue({ data: mockSpreadsheetData });
const result = await getTabIdFromWeeklyTitle('Non-existent Tab');
expect(result).toBeNull();
});
it.skip('should handle API errors gracefully', async () => {
const error = new Error('API Error');
sheets.spreadsheets.get.mockRejectedValue(error);
await expect(getTabIdFromWeeklyTitle(mockTabTitle)).rejects.toThrow(
error
);
});
});
describe('getExistingTabTitlesInRange', () => {
it.skip('should get existing tab titles in range', async () => {
sheets.spreadsheets.get.mockResolvedValue({ data: mockSpreadsheetData });
const result = await getExistingTabTitlesInRange();
expect(result).toEqual(['Sheet1', 'Sheet2']);
expect(sheets.spreadsheets.get).toHaveBeenCalledWith({
spreadsheetId: expect.any(String),
});
});
it.skip('should handle empty spreadsheet', async () => {
sheets.spreadsheets.get.mockResolvedValue({ data: { sheets: [] } });
const result = await getExistingTabTitlesInRange();
expect(result).toEqual([]);
});
it.skip('should handle API errors gracefully', async () => {
const error = new Error('API Error');
sheets.spreadsheets.get.mockRejectedValue(error);
await expect(getExistingTabTitlesInRange()).rejects.toThrow(error);
});
});
});