import React from 'react'; import ReactTestUtils from 'react-addons-test-utils'; import {findDOMNode} from 'react-dom'; import {renderIntoDocument} from '../../../spec/nylas-test-utils'; import Contenteditable from '../../../src/components/contenteditable/contenteditable'; import EmojiButtonPopover from '../lib/emoji-button-popover'; import EmojiComposerExtension from '../lib/emoji-composer-extension'; describe('EmojiButtonPopover', ()=> { beforeEach(()=> { this.position = { x: 20, y: 40, } spyOn(EmojiButtonPopover.prototype, 'calcPosition').andReturn(this.position); spyOn(EmojiComposerExtension, '_onSelectEmoji').andCallThrough(); this.component = renderIntoDocument(); this.canvas = findDOMNode(ReactTestUtils.findRenderedDOMComponentWithTag(this.component, 'canvas')); this.composer = renderIntoDocument( ); }); describe('when inserting emoji', ()=> { it('should insert emoji on click', ()=> { ReactTestUtils.Simulate.mouseDown(this.canvas); expect(EmojiComposerExtension._onSelectEmoji).toHaveBeenCalled(); }); it('should insert an image for missing emoji', ()=> { this.position.x = 140; this.position.y = 60; EmojiButtonPopover.prototype.calcPosition.andReturn(this.position); ReactTestUtils.Simulate.mouseDown(this.canvas); expect(EmojiComposerExtension._onSelectEmoji).toHaveBeenCalled(); }); }); describe('when searching for emoji', ()=> { it('should filter for matches', ()=> { this.searchNode = findDOMNode(ReactTestUtils.findRenderedDOMComponentWithClass(this.component, 'search')) const event = { target: { value: "heart", }, } ReactTestUtils.Simulate.change(this.searchNode, event); ReactTestUtils.Simulate.mouseDown(this.canvas); expect(EmojiComposerExtension._onSelectEmoji).toHaveBeenCalled(); }); }); });