| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- 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();
- });
- });
|