Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate Ember.Map, Ember.MapWithDefault and Ember.OrderedSet #16691

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion packages/@ember/map/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { assert } from '@ember/debug';
import { assert, deprecate } from '@ember/debug';
import { guidFor } from 'ember-utils';
import OrderedSet from './lib/ordered-set';
import { copyMap } from './lib/utils';
Expand Down Expand Up @@ -44,9 +44,15 @@ import { copyMap } from './lib/utils';
@class Map
@private
@constructor
@deprecated use native `Map` instead.
*/
class Map {
constructor() {
deprecate('Use of @ember/Map is deprecated. Please use native `Map` instead', false, {
id: 'ember-map-deprecation',
until: '3.5.0',
});

this._keys = new OrderedSet();
this._values = Object.create(null);
this.size = 0;
Expand Down
7 changes: 6 additions & 1 deletion packages/@ember/map/lib/ordered-set.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { assert } from '@ember/debug';
import { assert, deprecate } from '@ember/debug';
import { guidFor } from 'ember-utils';
import { copyNull } from './utils';

Expand All @@ -14,6 +14,11 @@ import { copyNull } from './utils';
*/
export default class OrderedSet {
constructor() {
deprecate('Use of @ember/OrderedSet is deprecated. Please use native `Map` instead', false, {
id: 'ember-map-deprecation',
until: '3.5.0',
});

this.clear();
}

Expand Down
109 changes: 87 additions & 22 deletions packages/@ember/map/tests/map_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,13 @@ function testMap(nameAndFunc) {
number = 42;
string = 'foo';

map = nameAndFunc[1].create();
expectDeprecation(
() => {
map = nameAndFunc[1].create();
},
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);
}

['@test set'](assert) {
Expand Down Expand Up @@ -104,7 +110,14 @@ function testMap(nameAndFunc) {
map.set(number, 'winning');
map.set(string, 'winning');

let map2 = map.copy();
let map2;
expectDeprecation(
() => {
map2 = map.copy();
},
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);

map2.set(object, 'losing');
map2.set(number, 'losing');
Expand All @@ -120,7 +133,14 @@ function testMap(nameAndFunc) {
map.set(number, 'winning');
map.set(string, 'winning');

let map2 = map.copy();
let map2;
expectDeprecation(
() => {
map2 = map.copy();
},
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);

map2.delete(object);
map2.delete(number);
Expand Down Expand Up @@ -148,8 +168,14 @@ function testMap(nameAndFunc) {
assert.equal(map.size, 2);

//Check copy
let copy = map.copy();
assert.equal(copy.size, 2);
expectDeprecation(
() => {
let copy = map.copy();
assert.equal(copy.size, 2);
},
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);

//Remove a key twice
map.delete(number);
Expand Down Expand Up @@ -428,11 +454,18 @@ moduleFor(
'MapWithDefault - default values',
class extends AbstractTestCase {
['@test Retrieving a value that has not been set returns and sets a default value'](assert) {
let map = MapWithDefault.create({
defaultValue(key) {
return [key];
let map;
expectDeprecation(
() => {
map = MapWithDefault.create({
defaultValue(key) {
return [key];
},
});
},
});
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);

let value = map.get('ohai');
assert.deepEqual(value, ['ohai']);
Expand All @@ -441,30 +474,56 @@ moduleFor(
}

['@test Map.prototype.constructor'](assert) {
let map = new Map();
assert.equal(map.constructor, Map);
expectDeprecation(
() => {
let map = new Map();
assert.equal(map.constructor, Map);
},
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);
}

['@test MapWithDefault.prototype.constructor'](assert) {
let map = new MapWithDefault({
defaultValue(key) {
return key;
expectDeprecation(
() => {
let map = new MapWithDefault({
defaultValue(key) {
return key;
},
});
assert.equal(map.constructor, MapWithDefault);
},
});
assert.equal(map.constructor, MapWithDefault);
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);
}

['@test Copying a MapWithDefault copies the default value'](assert) {
let map = MapWithDefault.create({
defaultValue(key) {
return [key];
let map;
expectDeprecation(
() => {
map = MapWithDefault.create({
defaultValue(key) {
return [key];
},
});
},
});
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);

map.set('ohai', 1);
map.get('bai');

let map2 = map.copy();
let map2;
expectDeprecation(
() => {
map2 = map.copy();
},
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);

assert.equal(map2.get('ohai'), 1);
assert.deepEqual(map2.get('bai'), ['bai']);
Expand All @@ -491,7 +550,13 @@ moduleFor(
number = 42;
string = 'foo';

map = OrderedSet.create();
expectDeprecation(
() => {
map = OrderedSet.create();
},
'Use of @ember/OrderedSet is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);
}

['@test add returns the set'](assert) {
Expand Down
10 changes: 10 additions & 0 deletions packages/@ember/map/with-default.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { deprecate } from '@ember/debug';
import Map from './index';
import { copyMap } from './lib/utils';

Expand All @@ -11,6 +12,15 @@ import { copyMap } from './lib/utils';
*/
export default class MapWithDefault extends Map {
constructor(options) {
deprecate(
'Use of @ember/MapWithDefault is deprecated. Please use native `Map` instead',
false,
{
id: 'ember-map-deprecation',
until: '3.5.0',
}
);

super();
this.defaultValue = options.defaultValue;
}
Expand Down
28 changes: 20 additions & 8 deletions packages/ember-metal/tests/is_empty_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,29 @@ moduleFor(
}

['@test isEmpty Map'](assert) {
let map = new Map();
assert.equal(true, isEmpty(map), 'Empty map is empty');
map.set('foo', 'bar');
assert.equal(false, isEmpty(map), 'Map is not empty');
expectDeprecation(
() => {
let map = new Map();
assert.equal(true, isEmpty(map), 'Empty map is empty');
map.set('foo', 'bar');
assert.equal(false, isEmpty(map), 'Map is not empty');
},
'Use of @ember/Map is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);
}

['@test isEmpty Ember.OrderedSet'](assert) {
let orderedSet = new OrderedSet();
assert.equal(true, isEmpty(orderedSet), 'Empty ordered set is empty');
orderedSet.add('foo');
assert.equal(false, isEmpty(orderedSet), 'Ordered set is not empty');
expectDeprecation(
() => {
let orderedSet = new OrderedSet();
assert.equal(true, isEmpty(orderedSet), 'Empty ordered set is empty');
orderedSet.add('foo');
assert.equal(false, isEmpty(orderedSet), 'Ordered set is not empty');
},
'Use of @ember/OrderedSet is deprecated. Please use native `Map` instead',
{ id: 'ember-map-deprecation', until: '3.5.0' }
);
}
}
);