UNPKG

@jlalmes/goober

Version:

A less than 1KB css-in-js solution

116 lines (88 loc) 3.32 kB
import { hash } from '../hash'; import { toHash } from '../to-hash'; import { update } from '../update'; import { parse } from '../parse'; import { astish } from '../astish'; jest.mock('../astish', () => ({ astish: jest.fn().mockReturnValue('astish()') })); jest.mock('../parse', () => ({ parse: jest.fn().mockReturnValue('parse()') })); jest.mock('../to-hash', () => ({ toHash: jest.fn().mockReturnValue('toHash()') })); jest.mock('../update', () => ({ update: jest.fn().mockReturnValue('update()') })); jest.mock('../astish', () => ({ astish: jest.fn().mockReturnValue('astish()') })); jest.mock('../parse', () => ({ parse: jest.fn().mockReturnValue('parse()') })); describe('hash', () => { beforeEach(() => { toHash.mockClear(); update.mockClear(); parse.mockClear(); astish.mockClear(); }); it('regression', () => { const res = hash('compiled', 'target'); expect(toHash).toBeCalledWith('compiled'); expect(update).toBeCalledWith('parse()', 'target', undefined); expect(astish).toBeCalledWith('compiled'); expect(parse).toBeCalledWith('astish()', '.toHash()'); expect(res).toEqual('toHash()'); }); it('regression: cache', () => { const res = hash('compiled', 'target'); expect(toHash).not.toBeCalled(); expect(astish).not.toBeCalled(); expect(parse).not.toBeCalled(); expect(update).toBeCalledWith('parse()', 'target', undefined); expect(res).toEqual('toHash()'); }); it('regression: global', () => { const res = hash('global', 'target', true); expect(toHash).toBeCalledWith('global'); expect(astish).not.toBeCalled(); expect(parse).not.toBeCalled(); expect(update).toBeCalledWith('parse()', 'target', undefined); expect(res).toEqual('toHash()'); }); it('regression: keyframes', () => { const res = hash('keyframes', 'target', undefined, undefined, 1); expect(toHash).toBeCalledWith('keyframes'); expect(astish).not.toBeCalled(); expect(parse).not.toBeCalled(); expect(update).toBeCalledWith('parse()', 'target', undefined); expect(res).toEqual('toHash()'); }); it('regression: object', () => { const className = Math.random() + 'unique'; toHash.mockReturnValue(className); const res = hash({ baz: 1 }, 'target'); expect(toHash).toBeCalledWith('baz1'); expect(astish).not.toBeCalled(); expect(parse).toBeCalledWith({ baz: 1 }, '.' + className); expect(update).toBeCalledWith('parse()', 'target', undefined); expect(res).toEqual(className); }); it('regression: cache-object', () => { const className = Math.random() + 'unique'; toHash.mockReturnValue(className); // Since it's not yet cached hash({ cacheObject: 1 }, 'target'); expect(toHash).toBeCalledWith('cacheObject1'); toHash.mockClear(); // Different object hash({ foo: 2 }, 'target'); expect(toHash).toBeCalledWith('foo2'); toHash.mockClear(); // First object should not call .toHash hash({ cacheObject: 1 }, 'target'); expect(toHash).not.toBeCalled(); }); });