Skip to content

Commit

Permalink
[Bug]: route serialize does not extract param off proxy
Browse files Browse the repository at this point in the history
  • Loading branch information
snewcomer committed Dec 6, 2020
1 parent 23ee5d1 commit de3d03f
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
2 changes: 2 additions & 0 deletions packages/@ember/-internals/routing/lib/system/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ export function defaultSerialize(
object[name] = get(model, name);
} else if (/_id$/.test(name)) {
object[name] = get(model, 'id');
} else {
object[name] = get(model, name);
}
} else {
object = getProperties(model, params);
Expand Down
14 changes: 14 additions & 0 deletions packages/@ember/-internals/routing/tests/system/route_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import Service, { inject as injectService } from '@ember/service';
import { Object as EmberObject } from '@ember/-internals/runtime';
import EmberRoute from '../../lib/system/route';
import { defineProperty } from '../../../metal';
import ObjectProxy from '@ember/-internals/runtime/lib/system/object_proxy';

let route, routeOne, routeTwo, lookupHash;

Expand Down Expand Up @@ -280,6 +281,19 @@ moduleFor(
assert.deepEqual(route.serialize(model, ['post_id']), { post_id: 3 }, 'serialized correctly');
}

['@test returns model.id if model is a Proxy'](assert) {
// `key` in target should fail
// let model = new Proxy({ id: 3 }, {
// get(target, prop) { target[prop] },
// has() {
// return false;
// }
// });
let model = ObjectProxy.create({ content: { id: 3 } });

assert.deepEqual(route.serialize(model, ['id']), { id: 3 }, 'serialized Proxy correctly');
}

['@test returns undefined if model is not set'](assert) {
assert.equal(route.serialize(undefined, ['post_id']), undefined, 'serialized correctly');
}
Expand Down

0 comments on commit de3d03f

Please sign in to comment.