Skip to content

Commit

Permalink
Add failing test case which illustrates the createRecord bug
Browse files Browse the repository at this point in the history
createRecord crashes when a setter which sets an attribute is involved
in the createRecord.
  • Loading branch information
andreyfel authored and runspired committed Dec 15, 2021
1 parent 6f051c9 commit 8e80ac1
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions packages/-ember-data/tests/integration/store-test.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { set } from '@ember/object';
import { run } from '@ember/runloop';
import { settled } from '@ember/test-helpers';
import Ember from 'ember';
Expand All @@ -10,6 +11,7 @@ import { setupTest } from 'ember-qunit';

import RESTAdapter from '@ember-data/adapter/rest';
import { REQUEST_SERVICE } from '@ember-data/canary-features';
import Model, { attr } from '@ember-data/model';
import JSONAPISerializer from '@ember-data/serializer/json-api';
import RESTSerializer from '@ember-data/serializer/rest';
import deepCopy from '@ember-data/unpublished-test-infra/test-support/deep-copy';
Expand Down Expand Up @@ -1342,3 +1344,26 @@ module('integration/store - queryRecord', function (hooks) {
}
});
});

module('integration/store - createRecord', function (hooks) {
setupTest(hooks);

test("createRecord doesn't crash when setter is involved", async function (assert) {
class User extends Model {
@attr() email;

get name() {
return this.email ? this.email.substring(0, this.email.indexOf('@')) : '';
}

set name(value) {
set(this, 'email', `${value.toLowerCase()}@ember.js`);
}
}
this.owner.register(`model:user`, User);
const store = this.owner.lookup('service:store');

const user = store.createRecord('user', { name: 'Robert' });
assert.strictEqual(user.email, '[email protected]');
});
});

0 comments on commit 8e80ac1

Please sign in to comment.