UNPKG

react-easy-export

Version:

A React library for easily exporting data to CSV, PDF, and Excel formats.

44 lines (35 loc) 1.61 kB
import exportToCSV from "../export-functions/ExportToCSV"; describe('exportToCSV', () => { beforeAll(() => { global.URL.createObjectURL = jest.fn(); global.URL.revokeObjectURL = jest.fn(); document.createElement = jest.fn(() => ({ setAttribute: jest.fn(), click: jest.fn(), appendChild: jest.fn(), removeChild: jest.fn(), })); document.body.appendChild = jest.fn(); document.body.removeChild = jest.fn(); }); it('should export data from array of objects', () => { const sampleData = [ { name: 'Ethan', dob: '03112003' }, { name: 'Jane', dob: '01011999' }, ]; const expectedCSVContent = 'name,dob\r\nEthan,03112003\r\nJane,01011999\r\n'; exportToCSV(sampleData, 'people_objects.csv'); expect(global.URL.createObjectURL).toHaveBeenCalledWith(new Blob([expectedCSVContent], { type: 'text/csv;charset=utf-8;' })); }); it('should export data from 2D array', () => { const sampleData = [['Ethan', '03112003'], ['Jane', '01011999']]; const expectedCSVContent = 'Ethan,03112003\r\nJane,01011999\r\n'; exportToCSV(sampleData, 'people_array.csv'); expect(global.URL.createObjectURL).toHaveBeenCalledWith(new Blob([expectedCSVContent], { type: 'text/csv;charset=utf-8;' })); }); it('should throw error for invalid data', () => { expect(() => { exportToCSV('invalid', 'error.csv'); }).toThrow('Invalid data format. Expected an array of objects or a 2D array.'); }); });