mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-12 20:44:30 +08:00
651f105740
Summary: Why does message-list have default participants? No other packages do Component registry warns if mixin component name not found Clear the component registry between tests and wipe React elements inserted into DOM Everything should have a displayName, even you ComposerView Stub all ComponentRegistry dependencies, always Test Plan: Run all the tests at the same time Reviewers: evan Reviewed By: evan Differential Revision: https://review.inboxapp.com/D1201
117 lines
3.8 KiB
CoffeeScript
117 lines
3.8 KiB
CoffeeScript
_ = require "underscore-plus"
|
|
proxyquire = require "proxyquire"
|
|
|
|
React = require "react/addons"
|
|
ReactTestUtils = React.addons.TestUtils
|
|
|
|
{Contact,
|
|
Message,
|
|
Namespace,
|
|
DatabaseStore,
|
|
InboxTestUtils,
|
|
NamespaceStore} = require "inbox-exports"
|
|
|
|
u1 = new Contact(name: "Christine Spang", email: "spang@inboxapp.com")
|
|
u2 = new Contact(name: "Michael Grinich", email: "mg@inboxapp.com")
|
|
u3 = new Contact(name: "Evan Morikawa", email: "evan@inboxapp.com")
|
|
u4 = new Contact(name: "Zoë Leiper", email: "zip@inboxapp.com")
|
|
u5 = new Contact(name: "Ben Gotow", email: "ben@inboxapp.com")
|
|
users = [u1, u2, u3, u4, u5]
|
|
NamespaceStore._current = new Namespace(
|
|
{name: u1.name, provider: "inbox", emailAddress: u1.email})
|
|
|
|
reactStub = (className) ->
|
|
React.createClass({render: -> <div className={className}>{@props.children}</div>})
|
|
|
|
textFieldStub = (className) ->
|
|
React.createClass
|
|
render: -> <div className={className}>{@props.children}</div>
|
|
focus: ->
|
|
|
|
draftStoreProxyStub = (localId) ->
|
|
listen: -> ->
|
|
draft: -> new Message()
|
|
changes:
|
|
add: ->
|
|
commit: ->
|
|
applyToModel: ->
|
|
|
|
searchContactStub = (email) ->
|
|
_.filter(users, (u) u.email.toLowerCase() is email.toLowerCase())
|
|
|
|
ComposerView = proxyquire "../lib/composer-view.cjsx",
|
|
"./file-uploads.cjsx": reactStub("file-uploads")
|
|
"./draft-store-proxy": draftStoreProxyStub
|
|
"./composer-participants.cjsx": reactStub("composer-participants")
|
|
"./participants-text-field.cjsx": textFieldStub("")
|
|
"inbox-exports":
|
|
ContactStore:
|
|
searchContacts: (email) -> searchContactStub
|
|
ComponentRegistry:
|
|
listen: -> ->
|
|
findViewByName: (component) -> reactStub(component)
|
|
findAllViewsByRole: (role) -> [reactStub('a'),reactStub('b')]
|
|
|
|
beforeEach ->
|
|
# The NamespaceStore isn't set yet in the new window, populate it first.
|
|
NamespaceStore.populateItems().then ->
|
|
new Promise (resolve, reject) ->
|
|
draft = new Message
|
|
from: [NamespaceStore.current().me()]
|
|
date: (new Date)
|
|
draft: true
|
|
namespaceId: NamespaceStore.current().id
|
|
|
|
DatabaseStore.persistModel(draft).then ->
|
|
DatabaseStore.localIdForModel(draft).then(resolve).catch(reject)
|
|
.catch(reject)
|
|
|
|
describe "A blank composer view", ->
|
|
beforeEach ->
|
|
@composer = ReactTestUtils.renderIntoDocument(
|
|
<ComposerView />
|
|
)
|
|
@composer.setState
|
|
body: ""
|
|
|
|
it 'should render into the document', ->
|
|
expect(ReactTestUtils.isCompositeComponentWithType @composer, ComposerView).toBe true
|
|
|
|
describe "testing keyboard inputs", ->
|
|
beforeEach ->
|
|
spyOn(@composer, "_sendDraft")
|
|
InboxTestUtils.loadKeymap "internal_packages/composer/keymaps/composer.cson"
|
|
|
|
it "sends the draft on cmd-enter", ->
|
|
InboxTestUtils.keyPress("cmd-enter", @composer.getDOMNode())
|
|
expect(@composer._sendDraft).toHaveBeenCalled()
|
|
|
|
it "does not send the draft on enter if the button isn't in focus", ->
|
|
InboxTestUtils.keyPress("enter", @composer.getDOMNode())
|
|
expect(@composer._sendDraft).not.toHaveBeenCalled()
|
|
|
|
it "sends the draft on enter when the button is in focus", ->
|
|
sendBtn = ReactTestUtils.findRenderedDOMComponentWithClass(@composer, "btn-send")
|
|
InboxTestUtils.keyPress("enter", sendBtn.getDOMNode())
|
|
expect(@composer._sendDraft).toHaveBeenCalled()
|
|
|
|
it "shows and focuses on bcc field", ->
|
|
|
|
it "shows and focuses on cc field", ->
|
|
|
|
it "shows and focuses on bcc field when already open", ->
|
|
|
|
describe "When composing a new message", ->
|
|
it "Can add someone in the to field", ->
|
|
|
|
it "Can add someone in the cc field", ->
|
|
|
|
it "Can add someone in the bcc field", ->
|
|
|
|
describe "When replying to a message", ->
|
|
|
|
describe "When replying all to a message", ->
|
|
|
|
describe "When forwarding a message", ->
|
|
|
|
describe "When changing the subject of a message", ->
|