apphouse
Version:
Component library for React that uses observable state management and theme-able components.
79 lines (76 loc) • 2.24 kB
text/typescript
import { CssPropertyStyle } from '../style.interface';
import Converter from './Converter';
describe('Converter', () => {
describe('cssPropertyStyleToCssProperty', () => {
test('should convert one CssPropertyStyles CssProperties', () => {
const value = Converter.cssPropertyStyleToCssProperty({
property: 'backgroundColor',
value: '#FFF',
reference: null,
isSelector: false
});
expect(value).toEqual({ backgroundColor: '#FFF' });
});
test('should return color reference value', () => {
const colorCssPropertyStyle: CssPropertyStyle = {
property: 'backgroundColor',
value: 'theme.primary',
reference: {
type: 'color',
value: {
hex: '#FFF',
rgb: {
r: 255,
g: 255,
b: 255,
a: 1
}
},
key: 'theme.primary'
},
isSelector: false
};
const value = Converter.cssPropertyStyleToCssProperty(
colorCssPropertyStyle,
true
);
expect(value).toEqual({ backgroundColor: 'rgba(255, 255, 255, 1)' });
});
test('should return token reference value', () => {
const colorCssPropertyStyle: CssPropertyStyle = {
property: 'padding',
value: 'spacings.xs',
reference: {
type: 'token',
value: 20,
key: 'spacings.xs'
},
isSelector: false
};
const value = Converter.cssPropertyStyleToCssProperty(
colorCssPropertyStyle,
true
);
expect(value).toEqual({ padding: 20 });
});
});
describe('cssPropertyStyleListToCssProperties', () => {
test('should convert the array of CssPropertyStyles to CssProperties', () => {
const value = Converter.toCssObjectFromCssPropertyStyleList([
{
property: 'backgroundColor',
value: '#000',
reference: null,
isSelector: false
},
{
property: 'color',
value: '#FFF',
reference: null,
isSelector: false
}
]);
expect(value).toEqual({ backgroundColor: '#000', color: '#FFF' });
});
});
});