import { resolveMessageAvailableMembersLink } from '../../hooks/direct_messages/resolve_message_available_members_link' describe('resolveMessageAvailableMembersLink', () => { const jim = { id: 1, name: 'Jim Halpert', avatar: 'jim.png' } const pam = { id: 2, name: 'Pam Beesly', avatar: 'pam.png' } it('returns undefined when there are no available members', () => { const link = resolveMessageAvailableMembersLink({ availableMembers: [], existingConversations: [], canMessageAvailableMembers: true, }) expect(link).toBeUndefined() }) it('returns undefined while the existing-conversation lookup is still loading', () => { const link = resolveMessageAvailableMembersLink({ availableMembers: [jim], existingConversations: undefined, canMessageAvailableMembers: true, }) expect(link).toBeUndefined() }) it('links to the existing conversation when one is found and not disabled', () => { const link = resolveMessageAvailableMembersLink({ availableMembers: [jim], existingConversations: [{ id: 42, disabled: false }], canMessageAvailableMembers: false, }) expect(link).toEqual({ label: 'Message Jim', existingConversationId: 42 }) }) it('returns undefined when the existing conversation is itself disabled', () => { const link = resolveMessageAvailableMembersLink({ availableMembers: [jim], existingConversations: [{ id: 42, disabled: true }], canMessageAvailableMembers: true, }) expect(link).toBeUndefined() }) it('offers to start a new direct message when no conversation exists and the viewer can start one', () => { const link = resolveMessageAvailableMembersLink({ availableMembers: [jim, pam], existingConversations: [], canMessageAvailableMembers: true, }) expect(link).toEqual({ label: 'Message the remaining 2 people', recipients: [ { id: '1', name: 'Jim Halpert', avatar: 'jim.png' }, { id: '2', name: 'Pam Beesly', avatar: 'pam.png' }, ], }) }) it('returns undefined when no conversation exists and the viewer cannot start one', () => { const link = resolveMessageAvailableMembersLink({ availableMembers: [jim], existingConversations: [], canMessageAvailableMembers: false, }) expect(link).toBeUndefined() }) })