mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-02-23 15:46:28 +08:00
fix(change-mail-task): Ignore 404s when changing mail so that we don't attempt to roll back and re-create purged objects + spec
This commit is contained in:
parent
75d92ad35a
commit
be6c5b1d11
3 changed files with 28 additions and 4 deletions
|
@ -287,6 +287,23 @@ describe "ChangeMailTask", ->
|
|||
advanceClock()
|
||||
expect(resolved).toBe(true)
|
||||
|
||||
it "should carry on and resolve if a request 404s, since the NylasAPI manager will clean the object from the cache", ->
|
||||
promises = []
|
||||
spyOn(NylasAPI, 'makeRequest').andCallFake ->
|
||||
new Promise (resolve, reject) -> promises.push({resolve, reject})
|
||||
|
||||
resolved = false
|
||||
runs ->
|
||||
@task.performRequests(Thread, [@threadA, @threadB]).then =>
|
||||
resolved = true
|
||||
waitsFor ->
|
||||
NylasAPI.makeRequest.callCount is 2
|
||||
runs ->
|
||||
promises[0].resolve()
|
||||
promises[1].reject(new APIError(statusCode: 404))
|
||||
advanceClock()
|
||||
expect(resolved).toBe(true)
|
||||
|
||||
it "should reject with the request error encountered by any request", ->
|
||||
promises = []
|
||||
spyOn(NylasAPI, 'makeRequest').andCallFake ->
|
||||
|
@ -309,7 +326,8 @@ describe "ChangeMailTask", ->
|
|||
expect(err).toBe(apiError)
|
||||
|
||||
it "should use /threads when the klass provided is Thread", ->
|
||||
spyOn(NylasAPI, 'makeRequest')
|
||||
spyOn(NylasAPI, 'makeRequest').andCallFake ->
|
||||
new Promise (resolve, reject) -> #noop
|
||||
runs ->
|
||||
@task.performRequests(Thread, [@threadA, @threadB])
|
||||
waitsFor ->
|
||||
|
@ -320,7 +338,8 @@ describe "ChangeMailTask", ->
|
|||
expect(NylasAPI.makeRequest.calls[0].args[0].accountId).toBe(@threadA.accountId)
|
||||
|
||||
it "should use /messages when the klass provided is Message", ->
|
||||
spyOn(NylasAPI, 'makeRequest')
|
||||
spyOn(NylasAPI, 'makeRequest').andCallFake ->
|
||||
new Promise (resolve, reject) -> #noop
|
||||
runs ->
|
||||
@task.performRequests(Message, [@threadAMesage1])
|
||||
waitsFor ->
|
||||
|
@ -331,7 +350,8 @@ describe "ChangeMailTask", ->
|
|||
expect(NylasAPI.makeRequest.calls[0].args[0].accountId).toBe(@threadAMesage1.accountId)
|
||||
|
||||
it "should decrement change counts as requests complete", ->
|
||||
spyOn(NylasAPI, 'makeRequest')
|
||||
spyOn(NylasAPI, 'makeRequest').andCallFake ->
|
||||
new Promise (resolve, reject) -> #noop
|
||||
spyOn(@task, '_removeLock')
|
||||
runs ->
|
||||
@task.performRequests(Message, [@threadAMesage1])
|
||||
|
|
|
@ -322,7 +322,7 @@ class NylasAPI
|
|||
|
||||
{create, modify, destroy}
|
||||
|
||||
_handleDeltaDeletion: (delta) ->
|
||||
_handleDeltaDeletion: (delta) =>
|
||||
klass = @_apiObjectToClassMap[delta.object]
|
||||
return unless klass
|
||||
DatabaseStore.find(klass, delta.id).then (model) ->
|
||||
|
|
|
@ -148,6 +148,10 @@ class ChangeMailTask extends Task
|
|||
beforeProcessing: (body) =>
|
||||
@_removeLock(model)
|
||||
body
|
||||
.catch (err) =>
|
||||
if err instanceof APIError and err.statusCode is 404
|
||||
return Promise.resolve()
|
||||
Promise.reject(err)
|
||||
|
||||
# Task lifecycle
|
||||
|
||||
|
|
Loading…
Reference in a new issue