diff --git a/__tests__/configurePlugins.test.js b/__tests__/configurePlugins.test.js index 3fedf26a9..fc7ebf066 100644 --- a/__tests__/configurePlugins.test.js +++ b/__tests__/configurePlugins.test.js @@ -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: {} }, + ]) +}) diff --git a/src/util/configurePlugins.js b/src/util/configurePlugins.js index 27b51ecb7..0d9e1d225 100644 --- a/src/util/configurePlugins.js +++ b/src/util/configurePlugins.js @@ -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])) }) }