diff options
author | Jason <jason.daurus@gmail.com> | 2016-06-27 18:36:21 +0800 |
---|---|---|
committer | Jason <jason.daurus@gmail.com> | 2016-06-27 18:42:20 +0800 |
commit | 37c2b47c26dea9b143b2720761cdce21dafd3884 (patch) | |
tree | 5ec4f45e38e69b3af96ecc4372d70cda5bbe0c83 /web/src/js/__tests__/ducks/utils/list.js | |
parent | 28531a4dd7acd6dfd32dafca99dcad286041003b (diff) | |
download | mitmproxy-37c2b47c26dea9b143b2720761cdce21dafd3884.tar.gz mitmproxy-37c2b47c26dea9b143b2720761cdce21dafd3884.tar.bz2 mitmproxy-37c2b47c26dea9b143b2720761cdce21dafd3884.zip |
[web] add tests for utils
Diffstat (limited to 'web/src/js/__tests__/ducks/utils/list.js')
-rw-r--r-- | web/src/js/__tests__/ducks/utils/list.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/web/src/js/__tests__/ducks/utils/list.js b/web/src/js/__tests__/ducks/utils/list.js new file mode 100644 index 00000000..8cae91ec --- /dev/null +++ b/web/src/js/__tests__/ducks/utils/list.js @@ -0,0 +1,63 @@ +jest.unmock('lodash') +jest.unmock('../../../ducks/utils/list') + +import reduce, * as list from '../../../ducks/utils/list' + +describe('list reduce', () => { + + it('should add item', () => { + const state = createState([ + { id: 1 }, + { id: 2 } + ]) + const result = createState([ + { id: 1 }, + { id: 2 }, + { id: 3 } + ]) + expect(reduce(state, list.add({ id: 3 }))).toEqual(result) + }) + + it('should update item', () => { + const state = createState([ + { id: 1, val: 1 }, + { id: 2, val: 2 } + ]) + const result = createState([ + { id: 1, val: 1 }, + { id: 2, val: 3 } + ]) + expect(reduce(state, list.update(2, { id: 2, val: 3 }))).toEqual(result) + }) + + it('should remove item', () => { + const state = createState([ + { id: 1 }, + { id: 2 } + ]) + const result = createState([ + { id: 1 } + ]) + result.byId[2] = result.indexOf[2] = null + expect(reduce(state, list.remove(2))).toEqual(result) + }) + + it('should replace all items', () => { + const state = createState([ + { id: 1 }, + { id: 2 } + ]) + const result = createState([ + { id: 1 } + ]) + expect(reduce(state, list.receive([{ id: 1 }]))).toEqual(result) + }) +}) + +function createState(items) { + return { + data: items, + byId: _.fromPairs(items.map((item, index) => [item.id, item])), + indexOf: _.fromPairs(items.map((item, index) => [item.id, index])) + } +} |