Fix boolean helpers - also add tests for all helpers, and expand config tests to test values for booleans
This commit is contained in:
35
src/node/consumer/test/helpers/boolean_helpers.test.ts
Normal file
35
src/node/consumer/test/helpers/boolean_helpers.test.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { BooleanHelpers } from '@helpers/boolean_helpers';
|
||||
|
||||
describe('BooleanHelpers.parseBool', () => {
|
||||
it('should return true when value is "true"', () => {
|
||||
expect(BooleanHelpers.parseBool('true', false)).toBe(true);
|
||||
});
|
||||
|
||||
it('should return true when value is "1"', () => {
|
||||
expect(BooleanHelpers.parseBool('1', false)).toBe(true);
|
||||
});
|
||||
|
||||
it('should return true when value is "yes"', () => {
|
||||
expect(BooleanHelpers.parseBool('yes', false)).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false when value is "false"', () => {
|
||||
expect(BooleanHelpers.parseBool('false', true)).toBe(false);
|
||||
});
|
||||
|
||||
it('should return false when value is "0"', () => {
|
||||
expect(BooleanHelpers.parseBool('0', true)).toBe(false);
|
||||
});
|
||||
|
||||
it('should return false when value is "no"', () => {
|
||||
expect(BooleanHelpers.parseBool('no', true)).toBe(false);
|
||||
});
|
||||
|
||||
it('should return default value when value is undefined', () => {
|
||||
expect(BooleanHelpers.parseBool(undefined, true)).toBe(true);
|
||||
});
|
||||
|
||||
it('should return default value when value is not "true", "1", "yes", "false", "0", or "no"', () => {
|
||||
expect(BooleanHelpers.parseBool('random', true)).toBe(true);
|
||||
});
|
||||
});
|
||||
33
src/node/consumer/test/helpers/extension_helpers.test.ts
Normal file
33
src/node/consumer/test/helpers/extension_helpers.test.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { ExtensionHelpers } from '@helpers/extension_helpers';
|
||||
|
||||
describe('ExtensionHelpers', () => {
|
||||
describe('isVideo', () => {
|
||||
it('should return true when file extension is a video extension', () => {
|
||||
expect(ExtensionHelpers.isVideo('file.mp4')).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false when file extension is not a video extension', () => {
|
||||
expect(ExtensionHelpers.isVideo('file.txt')).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isSubtitle', () => {
|
||||
it('should return true when file extension is a subtitle extension', () => {
|
||||
expect(ExtensionHelpers.isSubtitle('file.srt')).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false when file extension is not a subtitle extension', () => {
|
||||
expect(ExtensionHelpers.isSubtitle('file.txt')).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isDisk', () => {
|
||||
it('should return true when file extension is a disk extension', () => {
|
||||
expect(ExtensionHelpers.isDisk('file.iso')).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false when file extension is not a disk extension', () => {
|
||||
expect(ExtensionHelpers.isDisk('file.txt')).toBe(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
55
src/node/consumer/test/helpers/promise_helpers.test.ts
Normal file
55
src/node/consumer/test/helpers/promise_helpers.test.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { PromiseHelpers } from '@helpers/promises_helpers';
|
||||
|
||||
describe('PromiseHelpers', () => {
|
||||
beforeAll(() => {
|
||||
jest.useFakeTimers({timerLimit: 5000});
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
jest.useRealTimers();
|
||||
});
|
||||
|
||||
describe('sequence', () => {
|
||||
it('should resolve promises in sequence', async () => {
|
||||
const promises = [() => Promise.resolve(1), () => Promise.resolve(2), () => Promise.resolve(3)];
|
||||
const result = await PromiseHelpers.sequence(promises);
|
||||
expect(result).toEqual([1, 2, 3]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('first', () => {
|
||||
it('should resolve the first fulfilled promise', async () => {
|
||||
const promises = [Promise.reject('error'), Promise.resolve('success'), Promise.resolve('success2')];
|
||||
const result = await PromiseHelpers.first(promises);
|
||||
expect(result).toBe('success');
|
||||
});
|
||||
});
|
||||
|
||||
describe('delay', () => {
|
||||
it('should delay execution', async () => {
|
||||
const startTime = Date.now();
|
||||
const delayPromise = PromiseHelpers.delay(1000);
|
||||
jest.runAllTimers();
|
||||
await delayPromise;
|
||||
const endTime = Date.now();
|
||||
expect(endTime - startTime).toBeGreaterThanOrEqual(1000);
|
||||
}, 30000);
|
||||
});
|
||||
|
||||
describe('timeout', () => {
|
||||
it('should reject promise after timeout', async () => {
|
||||
const promise = new Promise((resolve) => setTimeout(resolve, 2000));
|
||||
const timeoutPromise = PromiseHelpers.timeout(1000, promise);
|
||||
jest.advanceTimersByTime(1000);
|
||||
await expect(timeoutPromise).rejects.toBe('Timed out');
|
||||
}, 20000);
|
||||
});
|
||||
|
||||
describe('mostCommonValue', () => {
|
||||
it('should return the most common value in an array', () => {
|
||||
const array = [1, 2, 2, 3, 3, 3];
|
||||
const result = PromiseHelpers.mostCommonValue(array);
|
||||
expect(result).toBe(3);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user