@samitouri / QOS-React-2 / commits / 5b1e4c0324

Transitions: Handle undefined input to mergeKeySet

Gracefully handle undefined input to mergeKeySet.

Simon Højberg committed Nov 13, 2013 at 23:02 UTC 5b1e4c0324c984be96d4792b1ed13d457862a5bd
3 files changed +30 -5
src/addons/transitions/ReactTransitionGroup.js
+1 -5
@@ -44,13 +44,9 @@ var ReactTransitionGroupMixin = {
44 'getTransitionConfig() method.'
45 );
46
47 - // don't animate undefined children
48 - if (typeof sourceChildren === 'undefined') {
49 - return;
50 - }
51 -
47 var children = {};
48 var childMapping = ReactTransitionKeySet.getChildMapping(sourceChildren);
49 +
50 var transitionConfig = this.getTransitionConfig();
51 var currentKeys = ReactTransitionKeySet.mergeKeySets(
52 this._transitionGroupCurrentKeys,
src/addons/transitions/ReactTransitionKeySet.js
+3
@@ -68,6 +68,9 @@ var ReactTransitionKeySet = {
68 * in `next` in a reasonable order.
69 */
70 mergeKeySets: function(prev, next) {
71 + prev = prev || {};
72 + next = next || {};
73 +
74 var keySet = {};
75 var prevKeys = Object.keys(prev).concat([MERGE_KEY_SETS_TAIL_SENTINEL]);
76 var nextKeys = Object.keys(next).concat([MERGE_KEY_SETS_TAIL_SENTINEL]);
src/addons/transitions/__tests__/ReactTransitionKeySet-test.js
+26
@@ -127,4 +127,30 @@ describe('ReactTransitionKeySet', function() {
127 five: true
128 });
129 });
130 +
131 + it('should support mergeKeySets with undefined input', function () {
132 + var prev = {
133 + one: true,
134 + two: true
135 + };
136 +
137 + var next = undefined;
138 +
139 + expect(ReactTransitionKeySet.mergeKeySets(prev, next)).toEqual({
140 + one: true,
141 + two: true
142 + });
143 +
144 + prev = undefined;
145 +
146 + next = {
147 + three: true,
148 + four: true
149 + };
150 +
151 + expect(ReactTransitionKeySet.mergeKeySets(prev, next)).toEqual({
152 + three: true,
153 + four: true
154 + });
155 + });
156 });