UNPKG

cbops

Version:

Cosmos DB Bulk Operations CLI, that can load objects from JSON files and create or upsert them, or delete items from Container, based on provided query.

80 lines (69 loc) 2.98 kB
const fs = require('fs'); jest.mock('fs'); const { readJsonFileNames } = require('./read-data-files'); describe('readJsonFileNames', () => { it('should return an array of JSON file names sorted alphanumeric', () => { const dataFolder = '/path/to/data/folder'; const expectedFileNames = ['file1.json', 'file2.json', 'file3.json']; fs.readdirSync.mockReturnValue([ 'file3.json', 'file1.json', 'file2.json', 'file4.txt', ]); const result = readJsonFileNames(dataFolder); expect(result).toEqual(expectedFileNames); expect(fs.readdirSync).toHaveBeenCalledWith(dataFolder); expect(result).not.toBe(expectedFileNames); // Ensure a new array is returned }); it('should return properly sorted array of more complex file names', () => { const dataFolder = '/path/to/data/folder'; const expectedFileNames = [ 'Payload_Id ge 1 and Id le 1500_EAS14.json', 'Payload_Id ge 1501 and Id le 3000_EAS14.json', 'Payload_Id ge 3001 and Id le 4500_EAS14.json', 'Payload_Id ge 4501 and Id le 6000_EAS14.json', 'Payload_Id ge 6001 and Id le 7500_EAS14.json', 'Payload_Id ge 7501 and Id le 9000_EAS14.json', 'Payload_Id ge 9001 and Id le 10500_EAS14.json', ]; fs.readdirSync.mockReturnValue([ 'Payload_Id ge 1501 and Id le 3000_EAS14.json', 'Payload_Id ge 9001 and Id le 10500_EAS14.json', 'Payload_Id ge 3001 and Id le 4500_EAS14.json', 'Payload_Id ge 4501 and Id le 6000_EAS14.json', 'Payload_Id ge 1 and Id le 1500_EAS14.json', 'Payload_Id ge 6001 and Id le 7500_EAS14.json', 'Payload_Id ge 7501 and Id le 9000_EAS14.json', 'blebleh.txt', ]); const result = readJsonFileNames(dataFolder); expect(result).toEqual(expectedFileNames); expect(fs.readdirSync).toHaveBeenCalledWith(dataFolder); expect(result).not.toBe(expectedFileNames); // Ensure a new array is returned }); it('should sorted numeric files too', () => { const dataFolder = '/path/to/data/folder'; const expectedFileNames = ['1.json', '2.json', '3.json']; fs.readdirSync.mockReturnValue(['3.json', '1.json', '2.json', 'file4.txt']); const result = readJsonFileNames(dataFolder); expect(result).toEqual(expectedFileNames); expect(fs.readdirSync).toHaveBeenCalledWith(dataFolder); expect(result).not.toBe(expectedFileNames); // Ensure a new array is returned }); it('should sort similar file names too', () => { const dataFolder = '/path/to/data/folder'; const expectedFileNames = ['1.json', '2a.json', '2b.json', '3.json']; fs.readdirSync.mockReturnValue([ '3.json', '1.json', '2b.json', 'file4.txt', '2a.json', ]); const result = readJsonFileNames(dataFolder); expect(result).toEqual(expectedFileNames); expect(fs.readdirSync).toHaveBeenCalledWith(dataFolder); expect(result).not.toBe(expectedFileNames); // Ensure a new array is returned }); });