test(theme): adds tests for getClassMap()

This commit is contained in:
Manu Mtz.-Almeida
2018-04-28 15:29:42 +02:00
parent 78454b4f62
commit cbf163279b
2 changed files with 58 additions and 31 deletions

View File

@@ -1,32 +1,62 @@
import { getClassList } from '../theme';
import { getClassList, getClassMap } from '../theme';
describe('theme utils', () => {
describe('getClassList()', () => {
it('should parse string', () => {
expect(getClassList(' class class-event THEME-ios-bar-button')).toEqual([
'class', 'class-event', 'THEME-ios-bar-button'
]);
expect(getClassList('')).toEqual([]);
expect(getClassList(' ')).toEqual([]);
describe('getClassList()', () => {
it('should parse string', () => {
expect(getClassList(' class class-event THEME-ios-bar-button')).toEqual([
'class', 'class-event', 'THEME-ios-bar-button'
]);
expect(getClassList('')).toEqual([]);
expect(getClassList(' ')).toEqual([]);
});
it('should pass array', () => {
expect(getClassList([
'class', 'class-event', 'THEME-ios-bar-button'
])).toEqual([
'class', 'class-event', 'THEME-ios-bar-button'
]);
expect(getClassList([
'class ', ' class-event', ' THEME-ios-bar-button '
])).toEqual([
'class', 'class-event', 'THEME-ios-bar-button'
]);
expect(getClassList([
'class ', null, undefined, '', ' class-event', ' ', ' THEME-ios-bar-button '
] as any)).toEqual([
'class', 'class-event', 'THEME-ios-bar-button'
]);
});
});
describe('getClassMap()', () => {
it('should parse string', () => {
expect(getClassMap(' class class-event THEME-ios-bar-button')).toEqual({
class: true,
'class-event': true,
'THEME-ios-bar-button': true,
});
expect(getClassMap('')).toEqual({});
expect(getClassMap(' ')).toEqual({});
});
it('should pass array', () => {
expect(getClassMap([
'class', 'class-event', 'THEME-ios-bar-button'
])).toEqual({
'class': true, 'class-event': true, 'THEME-ios-bar-button': true
});
it('should pass array', () => {
expect(getClassList([
'class', 'class-event', 'THEME-ios-bar-button'
])).toEqual([
'class', 'class-event', 'THEME-ios-bar-button'
]);
expect(getClassList([
'class ', ' class-event', ' THEME-ios-bar-button '
])).toEqual([
'class', 'class-event', 'THEME-ios-bar-button'
]);
expect(getClassMap([
'class ', ' class-event', ' THEME-ios-bar-button '
])).toEqual({
'class': true, 'class-event': true, 'THEME-ios-bar-button': true
});
expect(getClassList([
'class ', null, undefined, '', ' class-event', ' THEME-ios-bar-button '
] as any)).toEqual([
'class', 'class-event', 'THEME-ios-bar-button'
]);
expect(getClassMap([
'class ', null, undefined, '', ' class-event', ' ', ' THEME-ios-bar-button '
] as any)).toEqual({
'class': true, 'class-event': true, 'THEME-ios-bar-button': true
});
});
});

View File

@@ -3,10 +3,9 @@ import { CssClassMap, Mode } from '../interface';
/**
* Create the mode and color classes for the component based on the classes passed in
*/
export function createThemedClasses(mode: Mode, color: string, classes: string): CssClassMap {
export function createThemedClasses(mode: Mode | undefined, color: string | undefined, classes: string): CssClassMap {
const classObj: CssClassMap = {};
classes.split(' ').forEach(classString => {
getClassList(classes).forEach(classString => {
classObj[classString] = true;
if (mode) {
@@ -17,8 +16,6 @@ export function createThemedClasses(mode: Mode, color: string, classes: string):
classObj[`${classString}-${mode}-${color}`] = true;
}
}
return classObj;
});
return classObj;
}
@@ -40,7 +37,7 @@ export function getElementClassMap(classList: DOMTokenList | string[]): CssClass
* Get the classes based on the button type
* e.g. alert-button, action-sheet-button
*/
export function getButtonClassMap(buttonType: string, mode: Mode): CssClassMap {
export function getButtonClassMap(buttonType: string | undefined, mode: Mode): CssClassMap {
if (!buttonType) {
return {};
}