nightTab/tests/utility/get.test.ts
2021-10-30 09:57:34 +01:00

50 lines
1.3 KiB
TypeScript

//@ts-nocheck get has no types, for now
import { get } from '../../src/utility/get';
let object;
beforeEach(() => {
object = { theme: { accent: { rgb: { r: 'hello there' } } } };
});
/**
* For some reason get mutates the object its trying to access,
* might be a good idea to remove this "feature".
*/
describe('get.js', () => {
test('should get receive both props', () => {
const path = 'theme.accent.rgb.r';
const result = 'hello there';
expect(get({ object, path })).toBe(result);
});
test('should get receive an incorrect path', () => {
const path = 'theme.accent.rgb.d';
expect(get({ object, path })).toBe('');
expect(object.theme.accent.rgb.d).toStrictEqual(undefined);
});
test('should get receive an incorrect intermediate path', () => {
const path = 'theme.accent.wrong.r';
expect(get({ object, path })).toBe('');
expect(object.theme.accent.wrong).toStrictEqual({});
});
test('should get receive an incorrect intermediate path as a number', () => {
const path = 'theme.accent.1.r';
expect(get({ object, path })).toBe('');
expect(object.theme.accent[1]).toStrictEqual([]);
});
test('should get receive an null prop', () => {
const path = 'theme.accent.rgb.r';
expect(get({ object, path: null })).toBe(false);
expect(get({ object: null, path })).toBe(false);
});
});