fix(labels): Re-order so adding/removing same label does nothing

This commit is contained in:
Ben Gotow 2016-02-05 11:56:43 -08:00
parent eb5b849a03
commit 8a40af6830
2 changed files with 4 additions and 4 deletions

View file

@ -145,12 +145,12 @@ describe "ChangeLabelsTask", ->
out = task.changesToModel(testThreads['t3']) out = task.changesToModel(testThreads['t3'])
expect(out).toEqual(labels: [testLabels['l3']]) expect(out).toEqual(labels: [testLabels['l3']])
it 'properly adds and removes labels', -> it 'properly adds and removes labels, ignoring labels that are both added and removed', ->
task = new ChangeLabelsTask task = new ChangeLabelsTask
labelsToAdd: [testLabels['l1'], testLabels['l2']] labelsToAdd: [testLabels['l1'], testLabels['l2']]
labelsToRemove: [testLabels['l2'], testLabels['l3']] labelsToRemove: [testLabels['l2'], testLabels['l3']]
out = task.changesToModel(testThreads['t1']) out = task.changesToModel(testThreads['t1'])
expect(out).toEqual(labels: [testLabels['l1']]) expect(out).toEqual(labels: [testLabels['l1'], testLabels['l2']])
it 'should return an == array of labels when no changes have occurred', -> it 'should return an == array of labels when no changes have occurred', ->
thread = new Thread(id: '1', categories: [testLabels['l2'], testLabels['l3'], testLabels['l1']]) thread = new Thread(id: '1', categories: [testLabels['l2'], testLabels['l3'], testLabels['l1']])

View file

@ -75,8 +75,8 @@ class ChangeLabelsTask extends ChangeMailTask
changesToModel: (model) -> changesToModel: (model) ->
labelsToRemoveIds = _.pluck(@labelsToRemove, 'id') labelsToRemoveIds = _.pluck(@labelsToRemove, 'id')
labels = [].concat(model.labels, @labelsToAdd) labels = _.reject model.labels, (label) -> label.id in labelsToRemoveIds
labels = _.reject labels, (label) -> label.id in labelsToRemoveIds labels = labels.concat(@labelsToAdd)
labels = _.uniq labels, false, (label) -> label.id labels = _.uniq labels, false, (label) -> label.id
{labels} {labels}