41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
const sass = require('node-sass');
|
|
const getThemeVariable = require('./getThemeVariable');
|
|
const { mockTheme } = require('@grafana/ui');
|
|
|
|
const themeMock = {
|
|
color: {
|
|
background: '#ff0000',
|
|
},
|
|
spacing: {
|
|
padding: '2em',
|
|
},
|
|
typography: {
|
|
fontFamily: 'Arial, sans-serif',
|
|
},
|
|
};
|
|
|
|
describe('Variables retrieval', () => {
|
|
const restoreTheme = mockTheme(() => themeMock);
|
|
|
|
afterAll(() => {
|
|
restoreTheme();
|
|
});
|
|
|
|
it('returns sass Color for color values', () => {
|
|
const result = getThemeVariable({ getValue: () => 'color.background' }, { getValue: () => {} });
|
|
expect(result).toBeInstanceOf(sass.types.Color);
|
|
});
|
|
it('returns sass Number for dimension values', () => {
|
|
const result = getThemeVariable({ getValue: () => 'spacing.padding' }, { getValue: () => {} });
|
|
expect(result).toBeInstanceOf(sass.types.Number);
|
|
});
|
|
it('returns sass String for string values', () => {
|
|
const result = getThemeVariable({ getValue: () => 'typography.fontFamily' }, { getValue: () => {} });
|
|
expect(result).toBeInstanceOf(sass.types.String);
|
|
});
|
|
|
|
it('throws for unknown theme paths', () => {
|
|
expect(() => getThemeVariable({ getValue: () => 'what.ever' }, { getValue: () => {} })).toThrow();
|
|
});
|
|
});
|