UNPKG

ldx-widgets

Version:

widgets

152 lines (93 loc) 4.49 kB
describe 'AlertModal', -> React = require 'react' AlertModal = React.createFactory require('../../src/components/alert_modal') TestUtils = require 'react-dom/test-utils' ReactDOM = require 'react-dom' ### Note About ValidationContext The input validation uses context to gain access to the app level validation methods Because context is only present when the component is a child of the application, it is not present in tests The ValidationContext component, simply wraps the input component, and adds the validation context methods so they are present in the tests ### #--------------------------------------------------------------------- Default Props it 'Should have default props', -> alertModal = TestUtils.renderIntoDocument(AlertModal { close: -> }) defaultProps = alertModal.props expect(defaultProps.okText).to.equal('OK') expect(defaultProps.cancelText).to.equal('Cancel') expect(defaultProps.alertIcon).to.equal('WARNING') it 'Should render a title when alertTitle is defined', -> message = 'test' title = 'Delete Blah' alertModal = TestUtils.renderIntoDocument(AlertModal { close: -> message: message alertTitle: title }) noAccessClass = TestUtils.scryRenderedDOMComponentsWithClass alertModal, 'no-access' modal = ReactDOM.findDOMNode(alertModal) expect(modal.innerText.search(message)).to.be.above(-1) expect(modal.innerText.search(title)).to.be.above(-1) expect(noAccessClass.length).to.equal(0) it 'Should render message as a child when it is a react element', -> message = React.createElement('div', {className: 'message-as-child'}, 'Message') alertModal = TestUtils.renderIntoDocument(AlertModal { close: -> message: message }) memberObjClass = TestUtils.scryRenderedDOMComponentsWithClass alertModal, 'message-as-child' noAccessClass = TestUtils.scryRenderedDOMComponentsWithClass alertModal, 'no-access' expect(memberObjClass.length).to.equal(1) expect(noAccessClass.length).to.equal(0) it 'Should render message as a child in addition to a title when message is a react element and alertTitle is defined', -> message = React.createElement('div', {className: 'message-as-child'}, 'Message') title = 'Delete Blah' alertModal = TestUtils.renderIntoDocument(AlertModal { close: -> message: message alertTitle: title }) memberObjClass = TestUtils.scryRenderedDOMComponentsWithClass alertModal, 'message-as-child' noAccessClass = TestUtils.scryRenderedDOMComponentsWithClass alertModal, 'no-access' modal = ReactDOM.findDOMNode(alertModal) expect(memberObjClass.length).to.equal(1) expect(modal.innerText.search(title)).to.be.above(-1) expect(noAccessClass.length).to.equal(0) it 'Should Render 2 buttons (cancel and okay buttons) when cb is defined', -> alertModal = TestUtils.renderIntoDocument(AlertModal { close: -> message: 'this is a message' cb: -> }) buttons = TestUtils.scryRenderedDOMComponentsWithTag alertModal, 'button' cancelButton = buttons[0] expect(buttons.length).to.equal(2) expect(cancelButton.getAttribute('class')).to.equal('okay-cancel cancel') it 'Should Render an okay button with appropriate class when cb is defined', -> alertModal = TestUtils.renderIntoDocument(AlertModal { close: -> message: 'this is a message' cb: -> }) buttons = TestUtils.scryRenderedDOMComponentsWithTag alertModal, 'button' okayButton = buttons[1] expect(okayButton.getAttribute('class')).to.equal('okay-cancel okay') it 'Should default the okay button to red when alertIcon is DELETE', -> alertModal = TestUtils.renderIntoDocument(AlertModal { close: -> message: 'this is a message' alertIcon: 'DELETE' cb: -> }) buttons = TestUtils.scryRenderedDOMComponentsWithTag alertModal, 'button' okayButton = buttons[1] expect(okayButton.style.color).to.equal('rgb(236, 26, 35)') it 'Should Render a single button with appropriate class when cb is not defined', -> alertModal = TestUtils.renderIntoDocument(AlertModal { close: -> message: 'this is a message' }) button = TestUtils.findRenderedDOMComponentWithTag alertModal, 'button' expect(button.getAttribute('class')).to.equal('okay-cancel just-ok')