Mailspring/internal_packages/message-list/spec/message-participants-spec.cjsx
Ben Gotow 68343ec472 feat(docs): New docs tasks and React 0.13.2
Summary:
This diff moves us up to React 0.13.2 and transitions some of the core React components to the new
syntax based on plain Javascript objects. `setInitialState` is now just code in the constructor,
`getDOMNode(@)` is now `React.findDOMNode(@)`, and `isMounted` is no longer necessary or available.

This diff also adds `RegisteredComponent` to match `RegisteredRegion`. In another diff,
I think we should change the names of these to be `DynamicComponent` and `DynamicComponentSet`.

This diff also includes preliminary API Reference docs for Menu.cjsx and Popover.cjsx. You can build the docs
using `grunt docs` from the build folder. It produces a simple html format now, but it's easy
to customize.

Also we now ignore "Unnecessary fat arrow"

Test Plan: Run tests

Reviewers: evan

Reviewed By: evan

Differential Revision: https://review.inboxapp.com/D1437
2015-04-24 11:33:10 -07:00

128 lines
4.4 KiB
CoffeeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

_ = require 'underscore-plus'
React = require "react/addons"
ReactTestUtils = React.addons.TestUtils
TestUtils = React.addons.TestUtils
{Contact, Message} = require "inbox-exports"
MessageParticipants = require "../lib/message-participants"
user_1 =
name: "User One"
email: "user1@nilas.com"
user_2 =
name: "User Two"
email: "user2@nilas.com"
user_3 =
name: "User Three"
email: "user3@nilas.com"
user_4 =
name: "User Four"
email: "user4@nilas.com"
user_5 =
name: "User Five"
email: "user5@nilas.com"
many_users = (new Contact({name: "User #{i}", email:"#{i}@app.com"}) for i in [0..100])
test_message = (new Message).fromJSON({
"id" : "111",
"from" : [ user_1 ],
"to" : [ user_2 ],
"cc" : [ user_3, user_4 ],
"bcc" : [ user_5 ]
})
big_test_message = (new Message).fromJSON({
"id" : "222",
"from" : [ user_1 ],
"to" : many_users
})
many_thread_users = [user_1].concat(many_users)
thread_participants = [
(new Contact(user_1)),
(new Contact(user_2)),
(new Contact(user_3)),
(new Contact(user_4))
]
thread2_participants = [
(new Contact(user_1)),
(new Contact(user_2)),
(new Contact(user_3)),
(new Contact(user_4)),
(new Contact(user_5))
]
describe "MessageParticipants", ->
describe "when collapsed", ->
beforeEach ->
@participants = TestUtils.renderIntoDocument(
<MessageParticipants to={test_message.to}
cc={test_message.cc}
from={test_message.from}
thread_participants={many_thread_users}
message_participants={test_message.participants()} />
)
it "renders into the document", ->
participants = ReactTestUtils.findRenderedDOMComponentWithClass(@participants, "collapsed-participants")
expect(participants).toBeDefined()
it "uses short names", ->
to = ReactTestUtils.findRenderedDOMComponentWithClass(@participants, "to-contact")
expect(React.findDOMNode(to).innerHTML).toBe "User"
describe "when expanded", ->
beforeEach ->
@participants = TestUtils.renderIntoDocument(
<MessageParticipants to={test_message.to}
cc={test_message.cc}
from={test_message.from}
thread_participants={many_thread_users}
isDetailed={true}
message_participants={test_message.participants()} />
)
it "renders into the document", ->
participants = ReactTestUtils.findRenderedDOMComponentWithClass(@participants, "expanded-participants")
expect(participants).toBeDefined()
it "uses full names", ->
to = ReactTestUtils.findRenderedDOMComponentWithClass(@participants, "to-contact")
expect(React.findDOMNode(to).innerText.trim()).toEqual "User Two <user2@nilas.com>"
# TODO: We no longer display "to everyone"
#
# it "determines the message is to everyone", ->
# p1 = TestUtils.renderIntoDocument(
# <MessageParticipants to={big_test_message.to}
# cc={big_test_message.cc}
# from={big_test_message.from}
# thread_participants={many_thread_users}
# message_participants={big_test_message.participants()} />
# )
# expect(p1._isToEveryone()).toBe true
#
# it "knows when the message isn't to everyone due to participant mismatch", ->
# p2 = TestUtils.renderIntoDocument(
# <MessageParticipants to={test_message.to}
# cc={test_message.cc}
# from={test_message.from}
# thread_participants={thread2_participants}
# message_participants={test_message.participants()} />
# )
# # this should be false because we don't count bccs
# expect(p2._isToEveryone()).toBe false
#
# it "knows when the message isn't to everyone due to participant size", ->
# p2 = TestUtils.renderIntoDocument(
# <MessageParticipants to={test_message.to}
# cc={test_message.cc}
# from={test_message.from}
# thread_participants={thread_participants}
# message_participants={test_message.participants()} />
# )
# # this should be false because we don't count bccs
# expect(p2._isToEveryone()).toBe false