1
0
Fork 0
forked from svrjs/svrjs
This repository has been archived on 2024-11-10. You can view files and clone it, but cannot push or open issues or pull requests.
svrjs/tests/utils/createRegex.test.js

75 lines
2.4 KiB
JavaScript

const createRegex = require('../../src/utils/createRegex');
const os = require('os');
jest.mock('os', () => ({
platform: jest.fn(),
}));
describe('createRegex', () => {
beforeEach(() => {
os.platform.mockReset();
});
test('should throw an error for invalid regular expression', () => {
expect(() => createRegex('invalid/regex', false)).toThrow('Invalid regular expression: invalid/regex');
});
test('should create a regular expression without modifiers', () => {
const regex = createRegex('/test/', false);
expect(regex).toBeInstanceOf(RegExp);
expect(regex.source).toBe('test');
expect(regex.flags).toBe('');
});
test('should create a regular expression with modifiers', () => {
const regex = createRegex('/test/gi', false);
expect(regex).toBeInstanceOf(RegExp);
expect(regex.source).toBe('test');
expect(regex.flags).toBe('gi');
});
test('should add "i" modifier for paths on Windows', () => {
os.platform.mockReturnValue('win32');
const regex = createRegex('/test/', true);
expect(regex).toBeInstanceOf(RegExp);
expect(regex.source).toBe('test');
expect(regex.flags).toBe('i');
});
test('should not add "i" modifier for paths on non-Windows platforms', () => {
os.platform.mockReturnValue('linux');
const regex = createRegex('/test/', true);
expect(regex).toBeInstanceOf(RegExp);
expect(regex.source).toBe('test');
expect(regex.flags).toBe('');
});
test('should not add "i" modifier if already present', () => {
os.platform.mockReturnValue('win32');
const regex = createRegex('/test/i', true);
expect(regex).toBeInstanceOf(RegExp);
expect(regex.source).toBe('test');
expect(regex.flags).toBe('i');
});
test('should handle escaped characters in the search string', () => {
const regex = createRegex('/test\\/path/', false);
expect(regex).toBeInstanceOf(RegExp);
expect(regex.source).toBe('test\\/path');
expect(regex.flags).toBe('');
});
test('should handle multiple modifiers', () => {
const regex = createRegex('/test/gim', false);
expect(regex).toBeInstanceOf(RegExp);
expect(regex.source).toBe('test');
expect(regex.flags).toBe('gim');
});
test('should handle empty search string', () => {
const regex = createRegex('/^$/', false);
expect(regex).toBeInstanceOf(RegExp);
expect(regex.source).toBe('^$');
expect(regex.flags).toBe('');
});
});