diff --git a/packages/ember-glimmer/tests/integration/syntax/each-in-test.js b/packages/ember-glimmer/tests/integration/syntax/each-in-test.js
index f87e96f6d54..5b35145c453 100644
--- a/packages/ember-glimmer/tests/integration/syntax/each-in-test.js
+++ b/packages/ember-glimmer/tests/integration/syntax/each-in-test.js
@@ -281,6 +281,22 @@ class EachInTest extends AbstractEachInTest {
this.assertText('Empty!');
}
+
+ [`@test it can render items with a key of empty string`]() {
+ this.makeHash({ '': 'empty-string', a: 'a' });
+
+ this.render(
+ `
{{#each-in hash as |key value|}}- {{key}}: {{value}}
{{else}}Empty!{{/each-in}}
`
+ );
+
+ this.assertText(': empty-stringa: a');
+
+ this.assertStableRerender();
+
+ this.clear();
+
+ this.assertText('Empty!');
+ }
}
moduleFor(
diff --git a/packages/ember-metal/lib/property_get.ts b/packages/ember-metal/lib/property_get.ts
index 4718df01e1a..e6ced5144ba 100644
--- a/packages/ember-metal/lib/property_get.ts
+++ b/packages/ember-metal/lib/property_get.ts
@@ -90,7 +90,6 @@ export function get(obj: object, keyName: string): any {
`'this' in paths is not supported`,
typeof keyName !== 'string' || keyName.lastIndexOf('this.', 0) !== 0
);
- assert('Cannot call `get` with an empty string', keyName !== '');
let type = typeof obj;
diff --git a/packages/ember-metal/tests/accessors/get_test.js b/packages/ember-metal/tests/accessors/get_test.js
index 918c8c22470..f8049df1943 100644
--- a/packages/ember-metal/tests/accessors/get_test.js
+++ b/packages/ember-metal/tests/accessors/get_test.js
@@ -59,6 +59,20 @@ moduleFor(
assert.equal(get(arr, 1), 'second');
}
+ ['@test should retrieve an empty string key on an object'](assert) {
+ let obj = { '': 'empty-string' };
+
+ assert.equal(get(obj, ''), 'empty-string');
+ }
+
+ ['@test should return undefined when passed an empty string if that key does not exist on an object'](
+ assert
+ ) {
+ let obj = { tomster: true };
+
+ assert.equal(get(obj, ''), undefined);
+ }
+
['@test should not access a property more than once'](assert) {
let count = 0;
let obj = {
@@ -177,7 +191,6 @@ moduleFor(
() => get(obj, false),
/The key provided to get must be a string or number, you passed false/
);
- expectAssertion(() => get(obj, ''), /Cannot call `get` with an empty string/);
}
// ..........................................................