mirror of https://github.com/grafana/grafana
parent
7762d72ae3
commit
1e4c6b4b52
@ -1,15 +1,16 @@ |
||||
const darkTheme = require('./dark'); |
||||
const lightTheme = require('./light'); |
||||
|
||||
const getTheme = name => (name === 'light' ? lightTheme : darkTheme); |
||||
let mockedTheme; |
||||
|
||||
let getTheme = name => mockedTheme || (name === 'light' ? lightTheme : darkTheme); |
||||
|
||||
const mockTheme = mock => { |
||||
const originalGetTheme = getTheme; |
||||
getTheme = () => mock; |
||||
return () => (getTheme = originalGetTheme); |
||||
mockedTheme = mock; |
||||
return () => (mockedTheme = null); |
||||
}; |
||||
|
||||
module.exports = { |
||||
getTheme, |
||||
mockTheme |
||||
mockTheme, |
||||
}; |
||||
|
@ -0,0 +1,40 @@ |
||||
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(); |
||||
}); |
||||
}); |
Loading…
Reference in new issue