mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-12 12:40:08 +08:00
51602f69a5
Converted all references of global atom to NylasEnv Temporary rename atom.io find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.io/temporaryAtomIoReplacement/g' atom.config to NylasEnv.config find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.config/NylasEnv.config/g' atom.packages -> NylasEnv.packages atom.commands -> NylasEnv.commands atom.getLoadSettings find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.commands/NylasEnv.commands/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getLoadSettings/NylasEnv.getLoadSettings/g' More common atom methods find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.styles/NylasEnv.styles/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.emitError/NylasEnv.emitError/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.inSpecMode/NylasEnv.inSpecMode/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.inDevMode/NylasEnv.inDevMode/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getWindowType/NylasEnv.getWindowType/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.displayWindow/NylasEnv.displayWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.quit/NylasEnv.quit/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.close/NylasEnv.close/g' More atom method changes find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.keymaps/NylasEnv.keymaps/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.hide/NylasEnv.hide/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getCurrentWindow/NylasEnv.getCurrentWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.menu/NylasEnv.menu/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getConfigDirPath/NylasEnv.getConfigDirPath/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.isMainWindow/NylasEnv.isMainWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.finishUnload/NylasEnv.finishUnload/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.isWorkWindow/NylasEnv.isWorkWindow/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.showSaveDialog/NylasEnv.showSaveDialog/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.append/NylasEnv.append/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.confirm/NylasEnv.confirm/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.clipboard/NylasEnv.clipboard/g' find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed -i "" 's/atom.getVersion/NylasEnv.getVersion/g' More atom renaming Rename atom methods More atom methods Fix grunt config variable Change atom.cmd to N1.cmd Rename atom.coffee and atom.js to nylas-env.coffee nylas-env.js Fix atom global reference in specs manually Fix atom requires Change engine from atom to nylas got rid of global/nylas-env rename to nylas-win-bootup Fix onWindowPropsChanged to onWindowPropsReceived fix nylas-workspace atom-text-editor to nylas-theme-wrap atom-text-editor -> nylas-theme-wrap Replacing atom keyword AtomWindow -> NylasWindow Replace Atom -> N1 Rename atom items nylas.asar -> atom.asar Remove more atom references Remove 6to5 references Remove license exception for atom
133 lines
5.2 KiB
CoffeeScript
133 lines
5.2 KiB
CoffeeScript
_ = require 'underscore'
|
|
Thread = require '../../src/flux/models/thread'
|
|
Message = require '../../src/flux/models/message'
|
|
FocusedContentStore = require '../../src/flux/stores/focused-content-store'
|
|
MessageStore = require '../../src/flux/stores/message-store'
|
|
DatabaseStore = require '../../src/flux/stores/database-store'
|
|
ChangeUnreadTask = require '../../src/flux/tasks/change-unread-task'
|
|
Actions = require '../../src/flux/actions'
|
|
|
|
testThread = new Thread(id: '123')
|
|
testMessage1 = new Message(id: 'a', body: '123', files: [])
|
|
testMessage2 = new Message(id: 'b', body: '123', files: [])
|
|
|
|
describe "MessageStore", ->
|
|
describe "when the receiving focus changes from the FocusedContentStore", ->
|
|
beforeEach ->
|
|
if MessageStore._onFocusChangedTimer
|
|
clearTimeout(MessageStore._onFocusChangedTimer)
|
|
MessageStore._onFocusChangedTimer = null
|
|
spyOn(MessageStore, '_onApplyFocusChange')
|
|
|
|
afterEach ->
|
|
if MessageStore._onFocusChangedTimer
|
|
clearTimeout(MessageStore._onFocusChangedTimer)
|
|
MessageStore._onFocusChangedTimer = null
|
|
|
|
describe "if no change has happened in the last 100ms", ->
|
|
it "should apply immediately", ->
|
|
FocusedContentStore.trigger(impactsCollection: (c) -> true )
|
|
expect(MessageStore._onApplyFocusChange).toHaveBeenCalled()
|
|
|
|
describe "if a change has happened in the last 100ms", ->
|
|
it "should not apply immediately", ->
|
|
noop = =>
|
|
MessageStore._onFocusChangedTimer = setTimeout(noop, 100)
|
|
FocusedContentStore.trigger(impactsCollection: (c) -> true )
|
|
expect(MessageStore._onApplyFocusChange).not.toHaveBeenCalled()
|
|
|
|
it "should apply 100ms after the last focus change and reset", ->
|
|
FocusedContentStore.trigger(impactsCollection: (c) -> true )
|
|
expect(MessageStore._onApplyFocusChange.callCount).toBe(1)
|
|
advanceClock(50)
|
|
FocusedContentStore.trigger(impactsCollection: (c) -> true )
|
|
expect(MessageStore._onApplyFocusChange.callCount).toBe(1)
|
|
advanceClock(50)
|
|
FocusedContentStore.trigger(impactsCollection: (c) -> true )
|
|
expect(MessageStore._onApplyFocusChange.callCount).toBe(1)
|
|
advanceClock(150)
|
|
FocusedContentStore.trigger(impactsCollection: (c) -> true )
|
|
expect(MessageStore._onApplyFocusChange.callCount).toBe(3)
|
|
advanceClock(150)
|
|
FocusedContentStore.trigger(impactsCollection: (c) -> true )
|
|
expect(MessageStore._onApplyFocusChange.callCount).toBe(5)
|
|
|
|
describe "when applying focus changes", ->
|
|
beforeEach ->
|
|
MessageStore._lastLoadedThreadId = null
|
|
|
|
@focus = null
|
|
spyOn(FocusedContentStore, 'focused').andCallFake (collection) =>
|
|
if collection is 'thread'
|
|
@focus
|
|
else
|
|
null
|
|
|
|
spyOn(FocusedContentStore, 'focusedId').andCallFake (collection) =>
|
|
if collection is 'thread'
|
|
@focus?.id
|
|
else
|
|
null
|
|
|
|
spyOn(DatabaseStore, 'findAll').andCallFake ->
|
|
include: -> @
|
|
waitForAnimations: -> @
|
|
where: -> @
|
|
then: (callback) -> callback([testMessage1, testMessage2])
|
|
|
|
it "should retrieve the focused thread", ->
|
|
@focus = testThread
|
|
MessageStore._thread = null
|
|
MessageStore._onApplyFocusChange()
|
|
expect(DatabaseStore.findAll).toHaveBeenCalled()
|
|
expect(DatabaseStore.findAll.mostRecentCall.args[0]).toBe(Message)
|
|
|
|
describe "when the thread is already focused", ->
|
|
it "should do nothing", ->
|
|
@focus = testThread
|
|
MessageStore._thread = @focus
|
|
MessageStore._onApplyFocusChange()
|
|
expect(DatabaseStore.findAll).not.toHaveBeenCalled()
|
|
|
|
describe "when the thread is unread", ->
|
|
beforeEach ->
|
|
@focus = null
|
|
MessageStore._onApplyFocusChange()
|
|
testThread.unread = true
|
|
spyOn(Actions, 'queueTask')
|
|
spyOn(NylasEnv.config, 'get').andCallFake (key) =>
|
|
if key is 'core.reading.markAsReadDelay'
|
|
return 600
|
|
|
|
it "should queue a task to mark the thread as read", ->
|
|
@focus = testThread
|
|
MessageStore._onApplyFocusChange()
|
|
advanceClock(500)
|
|
expect(Actions.queueTask).not.toHaveBeenCalled()
|
|
advanceClock(500)
|
|
expect(Actions.queueTask).toHaveBeenCalled()
|
|
expect(Actions.queueTask.mostRecentCall.args[0] instanceof ChangeUnreadTask).toBe(true)
|
|
|
|
it "should not queue a task to mark the thread as read if the thread is no longer selected 500msec later", ->
|
|
@focus = testThread
|
|
MessageStore._onApplyFocusChange()
|
|
advanceClock(500)
|
|
expect(Actions.queueTask).not.toHaveBeenCalled()
|
|
@focus = null
|
|
MessageStore._onApplyFocusChange()
|
|
advanceClock(500)
|
|
expect(Actions.queueTask).not.toHaveBeenCalled()
|
|
|
|
it "should not re-mark the thread as read when made unread", ->
|
|
@focus = testThread
|
|
testThread.unread = false
|
|
MessageStore._onApplyFocusChange()
|
|
advanceClock(500)
|
|
expect(Actions.queueTask).not.toHaveBeenCalled()
|
|
|
|
# This simulates a DB change or some attribute changing on the
|
|
# thread.
|
|
testThread.unread = true
|
|
MessageStore._fetchFromCache()
|
|
advanceClock(500)
|
|
expect(Actions.queueTask).not.toHaveBeenCalled()
|