Clone objects in immutable tests
Fixes #1314, fixes #1328. Test Plan: `grunt test`, `grunt test --debug` in Chrome and Firefox.
Ben Alpert committed
Mar 29, 2014 at 17:01 UTC
99e943dd1392f5ac4213f83346b9e3f259039e03
1 file changed
+14
-6
src/vendor/immutable/__tests__/ImmutableObject-test.js
+14
-6
@@ -56,6 +56,14 @@ describe('ImmutableObject', function() {
56
testProd(message + ':PROD', testFunc);
57
};
58
59
+ /**
60
+ * Deep clone a JSON-ifiable object. Jasmine doesn't support comparing frozen
61
+ * objects, so we clone before asserting equality.
62
+ */
63
+ var deepClone = function(obj) {
64
+ return JSON.parse(JSON.stringify(obj));
65
+ };
66
+
67
testDev('should be running in DEV', function() {
68
expect(window.__DEV__).toBe(true);
69
});
@@ -165,7 +173,7 @@ describe('ImmutableObject', function() {
173
174
var beforeIO = new ImmutableObject(beforeStructure);
175
var afterIO = ImmutableObject.set(beforeIO, delta);
168
- expect(afterIO).toEqual(expectedAfterStructure);
176
+ expect(deepClone(afterIO)).toEqual(expectedAfterStructure);
177
expect(afterIO).not.toBe(beforeIO);
178
}
179
);
@@ -192,7 +200,7 @@ describe('ImmutableObject', function() {
200
201
var beforeIO = new ImmutableObject(beforeStructure);
202
var afterIO = ImmutableObject.set(beforeIO, delta);
195
- expect(afterIO).toEqual(expectedAfterStructure);
203
+ expect(deepClone(afterIO)).toEqual(expectedAfterStructure);
204
expect(afterIO).not.toBe(beforeIO);
205
}
206
);
@@ -220,7 +228,7 @@ describe('ImmutableObject', function() {
228
229
var beforeIO = new ImmutableObject(beforeStructure);
230
var afterIO = ImmutableObject.set(beforeIO, delta);
223
- expect(afterIO).toEqual(expectedAfterStructure);
231
+ expect(deepClone(afterIO)).toEqual(expectedAfterStructure);
232
expect(afterIO).not.toBe(beforeIO);
233
});
234
@@ -251,7 +259,7 @@ describe('ImmutableObject', function() {
259
var beforeIO = new ImmutableObject({initialField: null});
260
var afterIO =
261
ImmutableObject.setProperty(beforeIO, 'anotherField', 'anotherValue');
254
- expect(afterIO).toEqual({
262
+ expect(deepClone(afterIO)).toEqual({
263
initialField: null,
264
anotherField: 'anotherValue'
265
});
@@ -267,7 +275,7 @@ describe('ImmutableObject', function() {
275
var afterIO = ImmutableObject.setDeep(beforeIO, {
276
a: {b: {}, c: 'C', e: {f: 'F', g: 'G'}, h: 'H'}
277
});
270
- expect(afterIO).toEqual({
278
+ expect(deepClone(afterIO)).toEqual({
279
a: {b: {}, c: 'C', d: 'd', e: {f: 'F', g: 'G'}, h: 'H'}
280
});
281
expect(afterIO).not.toBe(beforeIO);
@@ -283,7 +291,7 @@ describe('ImmutableObject', function() {
291
var afterIO = ImmutableObject.setDeep(beforeIO, {
292
a: {b: {d: 'D'}, e: new ImmutableObject({g: 'G'})}
293
});
286
- expect(afterIO).toEqual({
294
+ expect(deepClone(afterIO)).toEqual({
295
a: {b: {c: 'c', d: 'D'}, e: {f: 'f', g: 'G'}}
296
});
297
expect(afterIO instanceof Immutable).toBe(true);