From 9715a881063e948db070f670ee0504a2a08cbaea Mon Sep 17 00:00:00 2001 From: Bradley Momberger Date: Mon, 1 May 2017 13:12:36 -0600 Subject: [PATCH] Add test to show that sealed objects are still not extensible --- map/map-test.js | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/map/map-test.js b/map/map-test.js index 6589e84..2216ab0 100644 --- a/map/map-test.js +++ b/map/map-test.js @@ -685,4 +685,37 @@ QUnit.test("Does not attempt to redefine _data if already defined", function() { QUnit.equal(baz.plonk, "waldo", "New computed definitions successful"); QUnit.equal(baz.baz, "thud", "Old definitions still available"); -}); \ No newline at end of file +}); + +QUnit.test("redefines still not allowed on sealed objects", function() { + QUnit.expect(6); + var Bar = DefineMap.extend({seal: true}, { + baz: { value : "thud" } + }); + + var baz = new Bar(); + + try { + define(baz, { + quux: { value: "jeek" } + }, baz._define); + } catch(e) { + QUnit.ok(/object is not extensible/.test(e.message), "Sealed object throws on data property defines"); + QUnit.ok(!Object.getOwnPropertyDescriptor(baz, "quux"), "nothing set on object"); + QUnit.ok(!Object.getOwnPropertyDescriptor(baz._data, "quux"), "nothing set on _data"); + } + + try { + define(baz, { + plonk: { + get: function() { + return "waldo"; + } + } + }, baz._define); + } catch(e) { + QUnit.ok(/object is not extensible/.test(e.message), "Sealed object throws on computed property defines"); + QUnit.ok(!Object.getOwnPropertyDescriptor(baz, "plonk"), "nothing set on object"); + QUnit.ok(!Object.getOwnPropertyDescriptor(baz._computed, "plonk"), "nothing set on _computed"); + } +});