Skip to content

Commit

Permalink
Same computation error!!
Browse files Browse the repository at this point in the history
  • Loading branch information
snewcomer committed Jun 20, 2020
1 parent b0d7f67 commit 067df9e
Showing 1 changed file with 31 additions and 35 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
import {
Object as EmberObject,
A,
ArrayProxy,
ObjectProxy,
PromiseProxyMixin,
} from '@ember/-internals/runtime';
import { Object as EmberObject, A, ArrayProxy, PromiseProxyMixin } from '@ember/-internals/runtime';
import { EMBER_CUSTOM_COMPONENT_ARG_PROXY } from '@ember/canary-features';
import {
computed,
Expand Down Expand Up @@ -716,46 +710,48 @@ if (EMBER_CUSTOM_COMPONENT_ARG_PROXY) {
this.assertText('text:hello!');
}

'@test works with ember-data like relationship with observable array APIs'() {
'@test works with records created during render'() {
this.registerComponent('test', {
ComponentClass: class extends GlimmerishComponent {
get itemLength() {
return this.args.data.length;
}
},
template: '{{this.itemLength}}: {{#each this.args.data as |item|}}{{item.name}}{{/each}}',
ComponentClass: class extends GlimmerishComponent {},
template: '{{@data.length}}',
});

function createArrayProxy() {
let array = ArrayProxy.create({
content: A([
ObjectProxy.create({ name: 'a' }),
ObjectProxy.create({ name: 'b' }),
ObjectProxy.create({ name: 'b' }),
]),
});
let RecordMeta = new WeakMap();
function getRecordMeta(record) {
let meta = RecordMeta.get(record);
if (meta === undefined) {
meta = Object.create(null);
RecordMeta.set(record, meta);
}

return array;
return meta;
}

class Person {
get items() {
if (this._items) {
return this._items;
}
let array = createArrayProxy();
return (this._items = array.filterBy('name', 'b'));
// does not reproduce with native JS class only
class Person extends EmberObject {
get name() {
let meta = getRecordMeta(this);
let name = get(meta, 'name');
return name;
}
set items(v) {
set(this, '_items', this._items.filterBy('naem', 'b'));
set name(v) {
let meta = getRecordMeta(this);
set(meta, 'name', v);
}
}

this.render('<Test @data={{this.data.items}} />', {
data: new Person(),
class List {
get records() {
let p = Person.create({ name: 'ye-haw' });
return [p];
}
}

this.render('<Test @data={{this.data.records}} />', {
data: new List(),
});

this.assertText('2: bb');
this.assertText('1');
}
}
);
Expand Down

0 comments on commit 067df9e

Please sign in to comment.