@samitouri / QOS-React-2 / commits / 99e943dd13

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);