Mailspring/app/internal_packages/message-list/specs/message-participants-spec.jsx
2018-01-24 14:13:08 -08:00

135 lines
4.5 KiB
JavaScript

const React = require('react');
const ReactDOM = require('react-dom');
const ReactTestUtils = require('react-dom/test-utils');
const { Message } = require('mailspring-exports');
const MessageParticipants = require('../lib/message-participants').default;
const user_1 = {
name: 'User One',
email: 'user1@nylas.com',
};
const user_2 = {
name: 'User Two',
email: 'user2@nylas.com',
};
const user_3 = {
name: 'User Three',
email: 'user3@nylas.com',
};
const user_4 = {
name: 'User Four',
email: 'user4@nylas.com',
};
const user_5 = {
name: 'User Five',
email: 'user5@nylas.com',
};
const test_message = new Message().fromJSON({
id: '111',
from: [user_1],
to: [user_2],
cc: [user_3, user_4],
bcc: [user_5],
});
describe('MessageParticipants', function() {
describe('when collapsed', function() {
const makeParticipants = props =>
ReactTestUtils.renderIntoDocument(<MessageParticipants {...props} />);
it('renders into the document', function() {
const participants = makeParticipants(
{ to: test_message.to, cc: test_message.cc },
{ from: test_message.from, message_participants: test_message.participants() }
);
expect(participants).toBeDefined();
});
it('uses short names', function() {
const actualOut = makeParticipants({ to: test_message.to });
const to = ReactTestUtils.findRenderedDOMComponentWithClass(actualOut, 'to-contact');
expect(ReactDOM.findDOMNode(to).innerHTML).toBe('User');
});
it("doesn't render any To nodes if To array is empty", function() {
const actualOut = makeParticipants({ to: [] });
const findToField = () =>
ReactTestUtils.findRenderedDOMComponentWithClass(actualOut, 'to-contact');
expect(findToField).toThrow();
});
it("doesn't render any Cc nodes if Cc array is empty", function() {
const actualOut = makeParticipants({ cc: [] });
const findCcField = () =>
ReactTestUtils.findRenderedDOMComponentWithClass(actualOut, 'cc-contact');
expect(findCcField).toThrow();
});
it("doesn't render any Bcc nodes if Bcc array is empty", function() {
const actualOut = makeParticipants({ bcc: [] });
const findBccField = () =>
ReactTestUtils.findRenderedDOMComponentWithClass(actualOut, 'bcc-contact');
expect(findBccField).toThrow();
});
});
describe('when expanded', function() {
beforeEach(function() {
this.participants = ReactTestUtils.renderIntoDocument(
<MessageParticipants
to={test_message.to}
cc={test_message.cc}
from={test_message.from}
isDetailed={true}
message_participants={test_message.participants()}
/>
);
});
it('renders into the document', function() {
const participants = ReactTestUtils.findRenderedDOMComponentWithClass(
this.participants,
'expanded-participants'
);
expect(participants).toBeDefined();
});
it('uses full names', function() {
const to = ReactTestUtils.findRenderedDOMComponentWithClass(this.participants, 'to-contact');
expect(ReactDOM.findDOMNode(to).innerText.trim()).toEqual('User Two <user2@nylas.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}
// 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}
// 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}
// message_participants={test_message.participants()} />
// )
// # this should be false because we don't count bccs
// expect(p2._isToEveryone()).toBe false