From: Timmy Willison Date: Thu, 3 Mar 2016 23:29:45 +0000 (-0500) Subject: Core: restore enumeration behavior in isPlainObject X-Git-Tag: 1.12.2~5 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=63317eb474a75b64ee5b0667ecdbf1e49d637d18;p=jquery.git Core: restore enumeration behavior in isPlainObject Fixes gh-2968 Close gh-2970 --- diff --git a/test/unit/core.js b/test/unit/core.js index a0cf715cf..97fc031d9 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -328,13 +328,21 @@ QUnit.test( "type for `Symbol`", function( assert ) { } ); QUnit.asyncTest( "isPlainObject", function( assert ) { - assert.expect( 16 ); + assert.expect( 20 ); - var pass, iframe, doc, + var pass, iframe, doc, parentObj, childObj, deep, fn = function() {}; // The use case that we want to match assert.ok( jQuery.isPlainObject( {} ), "{}" ); + assert.ok( jQuery.isPlainObject( new window.Object() ), "new Object" ); + + parentObj = { foo: "bar" }; + childObj = Object.create( parentObj ); + + assert.ok( !jQuery.isPlainObject( childObj ), "isPlainObject(Object.create({}))" ); + childObj.bar = "foo"; + assert.ok( !jQuery.isPlainObject( childObj ), "isPlainObject(Object.create({}))" ); // Not objects shouldn't be matched assert.ok( !jQuery.isPlainObject( "" ), "string" ); @@ -372,6 +380,10 @@ QUnit.asyncTest( "isPlainObject", function( assert ) { assert.ok( !jQuery.isPlainObject( new fn() ), "fn (inherited and own properties)" ); + // Deep object + deep = { "foo": { "baz": true }, "foo2": document }; + assert.ok( jQuery.isPlainObject( deep ), "Object with objects is still plain" ); + // DOM Element assert.ok( !jQuery.isPlainObject( document.createElement( "div" ) ), "DOM Element" );