/* eslint quote-props: 0 */ import ReactTestUtils from 'react-addons-test-utils'; import React from 'react'; import {SignatureStore, Actions} from 'nylas-exports'; import PreferencesSignatures from '../lib/preferences-signatures'; const SIGNATURES = { '1': { id: '1', title: 'one', body: 'first test signature!', }, '2': { id: '2', title: 'two', body: 'Here is my second sig!', }, } const DEFAULTS = { 'one@nylas.com': '1', 'two@nylas.com': '2', } const makeComponent = (props = {}) => { return ReactTestUtils.renderIntoDocument() } describe('PreferencesSignatures', function preferencesSignatures() { this.component = null describe('when there are no signatures', () => { it('should add a signature when you click the button', () => { spyOn(SignatureStore, 'getSignatures').andReturn({}) spyOn(SignatureStore, 'selectedSignature') spyOn(SignatureStore, 'getDefaults').andReturn({}) this.component = makeComponent() spyOn(Actions, 'addSignature') this.button = ReactTestUtils.findRenderedDOMComponentWithClass(this.component, 'btn-create-signature') ReactTestUtils.Simulate.click(this.button) expect(Actions.addSignature).toHaveBeenCalled() }) }) describe('when there are signatures', () => { beforeEach(() => { spyOn(SignatureStore, 'getSignatures').andReturn(SIGNATURES) spyOn(SignatureStore, 'selectedSignature').andReturn(SIGNATURES['1']) spyOn(SignatureStore, 'getDefaults').andReturn(DEFAULTS) this.component = makeComponent() }) it('should add a signature when you click the plus button', () => { spyOn(Actions, 'addSignature') this.plus = ReactTestUtils.scryRenderedDOMComponentsWithClass(this.component, 'btn-editable-list')[0] ReactTestUtils.Simulate.click(this.plus) expect(Actions.addSignature).toHaveBeenCalled() }) it('should delete a signature when you click the minus button', () => { spyOn(Actions, 'removeSignature') this.minus = ReactTestUtils.scryRenderedDOMComponentsWithClass(this.component, 'btn-editable-list')[1] ReactTestUtils.Simulate.click(this.minus) expect(Actions.removeSignature).toHaveBeenCalledWith(SIGNATURES['1']) }) it('should toggle default status when you click an email on the dropdown', () => { spyOn(Actions, 'toggleAccount') this.account = ReactTestUtils.scryRenderedDOMComponentsWithClass(this.component, 'item')[0] ReactTestUtils.Simulate.mouseDown(this.account) expect(Actions.toggleAccount).toHaveBeenCalledWith('tester@nylas.com') }) it('should set the selected signature when you click on one that is not currently selected', () => { spyOn(Actions, 'selectSignature') this.item = ReactTestUtils.scryRenderedDOMComponentsWithClass(this.component, 'list-item')[1] ReactTestUtils.Simulate.click(this.item) expect(Actions.selectSignature).toHaveBeenCalledWith('2') }) it('should modify the signature body when edited', () => { spyOn(Actions, 'updateSignature') const newText = 'Changed NEW 1 HTML
' this.component._onEditSignature({target: {value: newText}}); expect(Actions.updateSignature).toHaveBeenCalled() }) it('should modify the signature title when edited', () => { spyOn(Actions, 'updateSignature') const newTitle = 'Changed' this.component._onEditSignature(newTitle) expect(Actions.updateSignature).toHaveBeenCalled() }) }) })