73 lines
1.7 KiB
JavaScript
73 lines
1.7 KiB
JavaScript
var { each, map } = require('../src/util')
|
|
var { deepEqual } = require('../tests/util')
|
|
|
|
module.exports = {
|
|
plugin: require('./operations'),
|
|
setup: setup,
|
|
}
|
|
|
|
function setup(store) {
|
|
|
|
test('push', function() {
|
|
_testArrayOp('push', [], [
|
|
[],
|
|
['a'],
|
|
['b','c'],
|
|
[null],
|
|
[[], {}]
|
|
])
|
|
})
|
|
|
|
test('unshift', function() {
|
|
_testArrayOp('unshift', undefined, [
|
|
[],
|
|
['a'],
|
|
['b','c'],
|
|
[null],
|
|
[[], {}]
|
|
])
|
|
})
|
|
|
|
test('pop', function() {
|
|
var arr = ['a', 'b', 'c', null, [[], {}]]
|
|
// Call pop arr.length + 1 times. No args each time
|
|
var argsList = map(arr, function() { return [] }).concat([])
|
|
_testArrayOp('pop', arr, argsList)
|
|
})
|
|
|
|
test('shift', function() {
|
|
var arr = ['a', 'b', 'c', null, [[], {}]]
|
|
// Call shift arr.length + 1 times. No args each time
|
|
var argsList = map(arr, function() { return [] }).concat([])
|
|
_testArrayOp('shift', arr, argsList)
|
|
})
|
|
|
|
test('assign', function() {
|
|
store.clearAll()
|
|
var expect = { bar:'cat', mat:{ hat:'bat', arr:[1,2,3] }}
|
|
store.assign('foo', expect)
|
|
assert(deepEqual(store.get('foo'), expect))
|
|
var add = { bar:'cat2', mat:{ hat:'bat2' }, newProp:'newProp'}
|
|
store.assign('foo', add)
|
|
each(add, function(val, key) {
|
|
expect[key] = val
|
|
})
|
|
assert(deepEqual(store.get('foo'), expect))
|
|
})
|
|
|
|
function _testArrayOp(fnName, arr, argLists) {
|
|
var key = 'test-'+fnName
|
|
store.set(key, arr)
|
|
arr = (arr || [])
|
|
var arrFn = arr[fnName]
|
|
var storeFn = store[fnName]
|
|
each(argLists, function(args) {
|
|
var expectedFnResult = arrFn.apply(arr, args)
|
|
var actualFnResult = storeFn.apply(store, [key].concat(args))
|
|
assert(deepEqual(expectedFnResult, actualFnResult))
|
|
var actual = store.get(key)
|
|
assert(deepEqual(arr, actual))
|
|
})
|
|
}
|
|
}
|