From f76a0f3fe07747039136505d4a17f7841910e3e6 Mon Sep 17 00:00:00 2001 From: Justin Meyer Date: Mon, 24 Sep 2018 09:34:35 -0500 Subject: [PATCH] #393 able to delete a key --- define-helpers/define-helpers.js | 2 +- map/map-test.js | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/define-helpers/define-helpers.js b/define-helpers/define-helpers.js index 9d678a6..75fa21e 100644 --- a/define-helpers/define-helpers.js +++ b/define-helpers/define-helpers.js @@ -91,7 +91,7 @@ var defineHelpers = { var oldValue = this._data[prop]; if(oldValue !== undefined) { delete this._data[prop]; - delete this[prop]; + //delete this[prop]; this.dispatch({ type: prop, target: this, diff --git a/map/map-test.js b/map/map-test.js index c0c39e9..017867d 100644 --- a/map/map-test.js +++ b/map/map-test.js @@ -9,6 +9,7 @@ var isPlainObject = canReflect.isPlainObject; var canTestHelpers = require("can-test-helpers/lib/dev"); var DefineList = require("can-define/list/list"); var dev = require("can-log/dev/dev"); +var ObservationRecorder = require("can-observation-recorder"); var sealWorks = (function() { try { @@ -1395,10 +1396,9 @@ QUnit.test("deleteKey works (#351)", function(){ map.deleteKey("foo"); - var pd = Object.getOwnPropertyDescriptor(map, "foo"); - - - QUnit.ok(!pd, "no property descriptor"); + // We should keep the property descriptor + // var pd = Object.getOwnPropertyDescriptor(map, "foo"); + // QUnit.ok(!pd, "no property descriptor"); QUnit.deepEqual( canReflect.getOwnKeys(map), [] ); @@ -1412,6 +1412,17 @@ QUnit.test("deleteKey works (#351)", function(){ QUnit.equal(map.foo, undefined, "prop set to undefined"); }); +QUnit.test("makes sure observation add is called (#393)", function(){ + var map = new DefineMap({foo: "bar"}); + + canReflect.deleteKeyValue(map, "foo"); + + ObservationRecorder.start(); + (function(){ return map.foo; }()); + var result = ObservationRecorder.stop(); + QUnit.deepEqual(canReflect.toArray( result.keyDependencies.get(map) ), ["foo"], "toArray" ); +}); + QUnit.test("type called with `this` as the map (#349)", function(){ var Type = DefineMap.extend({ foo: {