UNPKG

react-native-ui-lib

Version:

<p align="center"> <img src="https://user-images.githubusercontent.com/1780255/105469025-56759000-5ca0-11eb-993d-3568c1fd54f4.png" height="250px" style="display:block"/> </p> <p align="center">UI Toolset & Components Library for React Native</p> <p a

109 lines (96 loc) 3.03 kB
let Scheme; describe('Scheme', () => { beforeEach(() => { jest.resetModules(); Scheme = require('../scheme').default; }); describe('initial values', () => { it('should initial schemes be empty objects', () => { expect(Scheme.schemes).toEqual({dark: {}, light: {}}); }); it('should initial current scheme type be "default"', () => { expect(Scheme.currentScheme).toBe('default'); }); it('should retrieve actual scheme type (defaulting to "light")', () => { expect(Scheme.getSchemeType()).toBe('light'); }); }); describe('setScheme', () => { it('should initially be light', () => { expect(Scheme.getSchemeType()).toBe('light'); }); it('should override default scheme', () => { Scheme.setScheme('dark'); expect(Scheme.getSchemeType()).toBe('dark'); }); it('should throw on invalid scheme color', () => { expect(() => Scheme.setScheme('yellow')).toThrow(`yellow is invalid colorScheme, please use 'light' | 'dark' | 'default'`); }); }); describe('getScheme/loadScheme', () => { beforeEach(() => { Scheme.loadSchemes({ dark: { a: 'black', b: 'black' }, light: { a: 'white', b: 'white' } }); }); it('should return scheme by current scheme type (initially by light)', () => { expect(Scheme.getScheme()).toEqual({ a: 'white', b: 'white' }); }); it('should return correct scheme after setScheme has changed scheme type', () => { Scheme.setScheme('dark'); expect(Scheme.getScheme()).toEqual({ a: 'black', b: 'black' }); }); it('should throw on missing color keys', () => { expect(() => Scheme.loadSchemes({ dark: { a: 'black', b: 'black' }, light: { a: 'white', b: 'white', c: 'white' } })).toThrow(`There is a mismatch in scheme keys: c`); }); }); describe('scheme change listeners', () => { it('should register scheme change listener', () => { const listener = jest.fn(); Scheme.addChangeListener(listener); expect(listener).not.toHaveBeenCalled(); Scheme.setScheme('dark'); expect(listener).toHaveBeenCalledTimes(1); }); it('should unregister scheme change listener', () => { const listener = jest.fn(); Scheme.addChangeListener(listener); Scheme.setScheme('dark'); expect(listener).toHaveBeenCalledTimes(1); Scheme.removeChangeListener(listener); Scheme.setScheme('light'); expect(listener).toHaveBeenCalledTimes(1); }); it('should not be triggered if scheme set to the same type', () => { const listener = jest.fn(); Scheme.addChangeListener(listener); Scheme.setScheme('dark'); expect(listener).toHaveBeenCalledTimes(1); Scheme.setScheme('dark'); expect(listener).toHaveBeenCalledTimes(1); }); }); });