Test core plugins fall back to a default config

This commit is contained in:
Adam Wathan 2019-02-05 10:58:56 -05:00
parent c84b188626
commit 4afb9e45e6
2 changed files with 49 additions and 2 deletions

View file

@ -77,3 +77,48 @@ test('setting a plugin to an object configures that plugin', () => {
{ plugin: 'backgroundPosition', options: {} },
])
})
test('plugins are configured with their default configuration if no custom config is provided', () => {
const plugins = {
fontSize: options => {
return {
plugin: 'fontSize',
options,
}
},
display: options => {
return {
plugin: 'display',
options,
}
},
backgroundPosition: options => {
return {
plugin: 'backgroundPosition',
options,
}
},
}
const configuredPlugins = configurePlugins(plugins, {
fontSize: {
variants: ['responsive', 'hover'],
values: { '12': '12px', '14': '14px', '16': '16px' },
},
backgroundPosition: {},
}, {
display: { variants: ['responsive'] },
})
expect(configuredPlugins).toEqual([
{
plugin: 'fontSize',
options: {
variants: ['responsive', 'hover'],
values: { '12': '12px', '14': '14px', '16': '16px' },
},
},
{ plugin: 'display', options: { variants: ['responsive'] } },
{ plugin: 'backgroundPosition', options: {} },
])
})

View file

@ -1,9 +1,11 @@
export default function(plugins, pluginConfig) {
import _ from 'lodash'
export default function(plugins, pluginConfig, defaultPluginConfig = {}) {
return Object.keys(plugins)
.filter(pluginName => {
return pluginConfig[pluginName] !== false
})
.map(pluginName => {
return plugins[pluginName](pluginConfig[pluginName])
return plugins[pluginName](_.get(pluginConfig, pluginName, defaultPluginConfig[pluginName]))
})
}