redux-factory
Version:
Composable, curried factory for creating Redux reducers and actions
47 lines (38 loc) • 1.58 kB
JavaScript
var reducerCreator = require('reducerCreator')
var R = require('ramda')
describe('reducerCreator :: (Object, Array, String) -> (Object, Object) -> Object', function() {
it('exists',
function() { expect(reducerCreator).to.exist })
it('returns function',
function() { expect(reducerCreator()).to.be.a('function') })
it('supplying the first three args returns a redux reducer',
function() { expect(reducerCreator({name: ''}, {}, null)).to.be.a('function') })
it('reducer handles state and action',
function() {
var reducer = reducerCreator({name: 'rob'}, { actionType: function(x, y){ return R.merge(x, {name: y}) } }, 'prefix')
var actual = reducer(undefined, {type: 'prefix_actionType', payload: 'joe'})
var wanted = {name: 'joe'}
expect(actual).eql(wanted)
})
it('reducer handles prefix `false`',
function() {
var reducer = reducerCreator({name: 'rob'}, { actionType: function(x, y){ return R.merge(x, {name: y}) } }, false)
var actual = reducer(undefined, {type: 'actionType', payload: 'joe'})
var wanted = {name: 'joe'}
expect(actual).eql(wanted)
})
it('reducer handles unprefixed transform',
function() {
var reducer = reducerCreator({name: 'rob'}, {
actionType: {
transform: function(x, y) {
return R.merge(x, {name: y})
},
prefix: false
}
}, 'prefix')
var actual = reducer(undefined, {type: 'actionType', payload: 'joe'})
var wanted = {name: 'joe'}
expect(actual).eql(wanted)
})
})