jrm2k6/react-markdown-editor

View on GitHub
__tests__/selection-test.js

Summary

Maintainability
A
0 mins
Test Coverage
// __tests__/selection-test.js

jest.dontMock('../src/MarkdownEditor');
jest.dontMock('../src/stores/MarkdownEditorStore');
jest.dontMock('../src/mixins/TextAreaSelectionMixin');

var React = require('react');
var ReactDOM = require('react-dom');
var TestUtils = require('react-dom/test-utils');
var MarkdownEditor = require('../src/MarkdownEditor');
var MarkdownEditorStore = require('../src/stores/MarkdownEditorStore');
var MarkdownSelectionActions = require('../src/actions/MarkdownSelectionActions');
var MarkdownEditorActions = require('../src/actions/MarkdownEditorActions');

afterEach(function() {
    jest.runAllTimers();
});

xdescribe('text selection when editing', function() {
    it('should set selection through action after selecting', function() {
        jest.useFakeTimers();
        MarkdownEditorActions.setSelection = jest.fn();
        
        var editor = TestUtils.renderIntoDocument(<MarkdownEditor initialContent="initialContent" iconsSet="font-awesome"/>);
        var textarea = TestUtils.findRenderedDOMComponentWithClass(editor, 'md-editor-textarea');
        var textareaNode = ReactDOM.findDOMNode(textarea);
        var _e = {
            srcElement: {
                selectionStart: 5,
                selectionEnd: 10,
                value: 'abcdefghijklmnopqrstuv'
            }
        };

        // when
        TestUtils.Simulate.select(textareaNode, _e);

        // then
        var param = {
            selectedText: 'fghij',
            selectionEnd: 10,
            selectionStart: 5
        };

        expect(MarkdownEditorActions.setSelection).toBeCalledWith(param);
    });
});

describe('clicking when editing', function() {
    it('should clear selection after clicking', function() {
        //given
        jest.useFakeTimers();
        MarkdownEditorActions.clearSelection = jest.fn();
        var editor = TestUtils.renderIntoDocument(<MarkdownEditor initialContent="initialContent" iconsSet="font-awesome"/>);
        var textarea = TestUtils.findRenderedDOMComponentWithClass(editor, 'md-editor-textarea');
        var textareaNode = ReactDOM.findDOMNode(textarea);

        // when
        TestUtils.Simulate.click(textareaNode);

        // then
        expect(MarkdownEditorActions.clearSelection).toBeCalled();
    });
});