Skip to content

Commit

Permalink
Merge pull request #4792 from runspired/2.12-beta-hotfix
Browse files Browse the repository at this point in the history
[BUGFIX beta] revert deletion of filter that removed deleted models w…
  • Loading branch information
bmac authored Feb 3, 2017
2 parents 315b31c + d94a299 commit 83ca6e2
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 1 deletion.
5 changes: 4 additions & 1 deletion addon/-private/system/many-array.js
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,10 @@ export default Ember.Object.extend(Ember.MutableArray, Ember.Evented, {
},

flushCanonical(isInitialized = true) {
let toSet = this.canonicalState;
// TODO make this smarter, currently its plenty stupid
// TODO this filtering was re-introduced as a bugfix, but seems unneeded in 2.13
// with the changes to internalModel cleanup in that version.
let toSet = this.canonicalState.filter((internalModel) => internalModel.currentState.stateName !== 'root.deleted.saved');

//a hack for not removing new records
//TODO remove once we have proper diffing
Expand Down
62 changes: 62 additions & 0 deletions tests/integration/relationships/has-many-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2780,3 +2780,65 @@ test("unloading and reloading a record with hasMany relationship - #3084", funct
assert.equal(get(message, 'user.id'), 'user-1');
});
});

test("deleted records should stay deleted", function(assert) {
var user;
var message;

env.adapter.deleteRecord = function(store, type, id) {
return null;
};

run(function() {
env.store.push({
data: [{
type: 'user',
id: 'user-1',
attributes: {
name: 'Adolfo Builes'
},
relationships: {
messages: {
data: [
{ type: 'message', id: 'message-1' },
{ type: 'message', id: 'message-2' }
]
}
}
}, {
type: 'message',
id: 'message-1'
}, {
type: 'message',
id: 'message-2'
}]
});

user = env.store.peekRecord('user', 'user-1');
message = env.store.peekRecord('message', 'message-1');

assert.equal(get(user, 'messages.length'), 2);
});

run(function() {
message.destroyRecord()
});

run(function() {
// a new message is added to the user should not resurrected the
// deleted message
env.store.push({
data: [{
type: 'message',
id: 'message-3',
relationships: {
user: {
data: { type: 'user', id: 'user-1' }
}
}
}]
});

assert.equal(get(user, 'messages.length'), 2, 'user should have 2 message since 1 was deleted');
});
});

0 comments on commit 83ca6e2

Please sign in to comment.