You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					614 lines
				
				23 KiB
			
		
		
			
		
	
	
					614 lines
				
				23 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import React from 'react'
							 | 
						||
| 
								 | 
							
								import ReactTestUtils from 'react-addons-test-utils'
							 | 
						||
| 
								 | 
							
								import packageJson from '../package.json'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const ReactTextMask = (isVerify()) ?
							 | 
						||
| 
								 | 
							
								  require(`../${packageJson.main}`) :
							 | 
						||
| 
								 | 
							
								  require('../src/reactTextMask.js')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const MaskedInput = ReactTextMask.default
							 | 
						||
| 
								 | 
							
								const conformToMask = ReactTextMask.conformToMask
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const emailMask = (isVerify()) ?
							 | 
						||
| 
								 | 
							
								  require('../../addons/dist/emailMask.js').default :
							 | 
						||
| 
								 | 
							
								  require('../../addons/src/emailMask.js').default
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('MaskedInput', () => {
							 | 
						||
| 
								 | 
							
								  it('does not throw when instantiated', () => {
							 | 
						||
| 
								 | 
							
								    expect(() => ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								      guide={true}/>
							 | 
						||
| 
								 | 
							
								    )).not.to.throw()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('renders a single input element', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								      guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(
							 | 
						||
| 
								 | 
							
								      () => ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    ).not.to.throw()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('renders correctly with an undefined value', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								        mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								        guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('renders correctly with an initial value', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								        value='123'
							 | 
						||
| 
								 | 
							
								        mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								        guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('(123) ___-____')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('renders mask instead of empty string when showMask is true', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								        showMask={true}
							 | 
						||
| 
								 | 
							
								        mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								        guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('(___) ___-____')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('does not render mask instead of empty string when showMask is false', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								        showMask={false}
							 | 
						||
| 
								 | 
							
								        mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								        guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('calls createTextMaskInputElement with the correct config', () => {
							 | 
						||
| 
								 | 
							
								    const mask = ['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]
							 | 
						||
| 
								 | 
							
								    const guide = true
							 | 
						||
| 
								 | 
							
								    const placeholderChar = '*'
							 | 
						||
| 
								 | 
							
								    const keepCharPositions = true
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      mask={mask}
							 | 
						||
| 
								 | 
							
								      guide={guide}
							 | 
						||
| 
								 | 
							
								      placeholderChar={placeholderChar}
							 | 
						||
| 
								 | 
							
								      keepCharPositions={keepCharPositions}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // stub the createTextMaskInputElement method
							 | 
						||
| 
								 | 
							
								    maskedInput.createTextMaskInputElement = (config) => {
							 | 
						||
| 
								 | 
							
								      expect(typeof config).to.equal('object')
							 | 
						||
| 
								 | 
							
								      expect(config.inputElement).to.equal(renderedDOMComponent)
							 | 
						||
| 
								 | 
							
								      expect(config.mask).to.equal(mask)
							 | 
						||
| 
								 | 
							
								      expect(config.guide).to.equal(guide)
							 | 
						||
| 
								 | 
							
								      expect(config.placeholderChar).to.equal(placeholderChar)
							 | 
						||
| 
								 | 
							
								      expect(config.keepCharPositions).to.equal(keepCharPositions)
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        update() {}
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    maskedInput.initTextMask()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('sets textMaskInputElement and calls textMaskInputElement.update with the correct value', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      value='123'
							 | 
						||
| 
								 | 
							
								      mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								      />
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // stub the createTextMaskInputElement method
							 | 
						||
| 
								 | 
							
								    maskedInput.createTextMaskInputElement = () => {
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        update(value) {
							 | 
						||
| 
								 | 
							
								          expect(value).to.equal('123')
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    maskedInput.initTextMask()
							 | 
						||
| 
								 | 
							
								    expect(typeof maskedInput.textMaskInputElement).to.equal('object')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('initializes textMaskInputElement property', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								      guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    expect(typeof maskedInput.textMaskInputElement).to.equal('object')
							 | 
						||
| 
								 | 
							
								    expect(typeof maskedInput.textMaskInputElement.state).to.equal('object')
							 | 
						||
| 
								 | 
							
								    expect(typeof maskedInput.textMaskInputElement.state.previousConformedValue).to.equal('string')
							 | 
						||
| 
								 | 
							
								    expect(typeof maskedInput.textMaskInputElement.update).to.equal('function')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('does not render masked characters', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      value='abc'
							 | 
						||
| 
								 | 
							
								      mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								      guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('does not allow masked characters', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								      guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('')
							 | 
						||
| 
								 | 
							
								    maskedInput.textMaskInputElement.update('abc')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('can be disabled by setting the mask to false', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      value='123abc'
							 | 
						||
| 
								 | 
							
								      mask={false}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('123abc')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('can call textMaskInputElement.update to update the inputElement.value', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    renderedDOMComponent.value = '12345'
							 | 
						||
| 
								 | 
							
								    maskedInput.textMaskInputElement.update()
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('(123) 45_-____')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('can pass value to textMaskInputElement.update method', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      value='123'
							 | 
						||
| 
								 | 
							
								      mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('(123) ___-____')
							 | 
						||
| 
								 | 
							
								    maskedInput.textMaskInputElement.update('1234')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('(123) 4__-____')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('can pass textMaskConfig to textMaskInputElement.update method', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      value='123'
							 | 
						||
| 
								 | 
							
								      mask={false}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('123')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    maskedInput.textMaskInputElement.update('1234', {
							 | 
						||
| 
								 | 
							
								      inputElement: renderedDOMComponent,
							 | 
						||
| 
								 | 
							
								      mask: ['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('(123) 4__-____')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('accepts function as mask property', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      value='1234'
							 | 
						||
| 
								 | 
							
								      mask={(value) => {
							 | 
						||
| 
								 | 
							
								        expect(value).to.equal('1234')
							 | 
						||
| 
								 | 
							
								        return ['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]
							 | 
						||
| 
								 | 
							
								      }}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('(123) 4__-____')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('accepts object as mask property', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      value='abc'
							 | 
						||
| 
								 | 
							
								      mask={emailMask}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('abc@ .')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('accepts pipe function', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								      value='1234'
							 | 
						||
| 
								 | 
							
								      mask={['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								      pipe={(value) => {
							 | 
						||
| 
								 | 
							
								        expect(value).to.equal('(123) 4__-____')
							 | 
						||
| 
								 | 
							
								        return 'abc'
							 | 
						||
| 
								 | 
							
								      }}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMComponent.value).to.equal('abc')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('calls textMaskInputElement.update and props.onChange when a change event is received', () => {
							 | 
						||
| 
								 | 
							
								    const onChangeSpy = sinon.spy((event) => {
							 | 
						||
| 
								 | 
							
								      expect(event.target.value).to.equal('123')
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								        value='123'
							 | 
						||
| 
								 | 
							
								        onChange={onChangeSpy}
							 | 
						||
| 
								 | 
							
								        mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								        guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    maskedInput.textMaskInputElement.update = sinon.spy(() => {})
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMComponent, {target: {value: '123'}})
							 | 
						||
| 
								 | 
							
								    expect(onChangeSpy.callCount).to.equal(1)
							 | 
						||
| 
								 | 
							
								    expect(maskedInput.textMaskInputElement.update.callCount).to.equal(1)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('calls props.onBlur when a change event is received', () => {
							 | 
						||
| 
								 | 
							
								    const onBlurSpy = sinon.spy((event) => {
							 | 
						||
| 
								 | 
							
								      expect(event.target.value).to.equal('(123) ___-____')
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								        value='123'
							 | 
						||
| 
								 | 
							
								        onBlur={onBlurSpy}
							 | 
						||
| 
								 | 
							
								        mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								        guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.blur(renderedDOMComponent)
							 | 
						||
| 
								 | 
							
								    expect(onBlurSpy.callCount).to.equal(1)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('calls textMaskInputElement.update when an input event is received when props.onChange is not set', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								        value='123'
							 | 
						||
| 
								 | 
							
								        mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								        guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMComponent = ReactTestUtils.findRenderedDOMComponentWithTag(maskedInput, 'input')
							 | 
						||
| 
								 | 
							
								    maskedInput.textMaskInputElement.update = sinon.spy(() => {})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMComponent, {target: {value: '456'}})
							 | 
						||
| 
								 | 
							
								    expect(maskedInput.textMaskInputElement.update.callCount).to.equal(1)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('calls textMaskInputElement.update via onChange method', () => {
							 | 
						||
| 
								 | 
							
								    const maskedInput = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <MaskedInput
							 | 
						||
| 
								 | 
							
								        value='123'
							 | 
						||
| 
								 | 
							
								        mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								        guide={true}/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    maskedInput.textMaskInputElement.update = sinon.spy(() => {})
							 | 
						||
| 
								 | 
							
								    maskedInput.onChange()
							 | 
						||
| 
								 | 
							
								    expect(maskedInput.textMaskInputElement.update.callCount).to.equal(1)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // test fix for issues #230, #483, #778 etc.
							 | 
						||
| 
								 | 
							
								  it('works correct in stateful Component', () => {
							 | 
						||
| 
								 | 
							
								    class StatefulComponent extends React.Component {
							 | 
						||
| 
								 | 
							
								      constructor(...args) {
							 | 
						||
| 
								 | 
							
								        super(...args)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        this.state = {value: '1234'}
							 | 
						||
| 
								 | 
							
								        this.onChange = this.onChange.bind(this)
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      onChange(e) {
							 | 
						||
| 
								 | 
							
								        this.setState({value: e.target.value})
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      render() {
							 | 
						||
| 
								 | 
							
								        return <MaskedInput
							 | 
						||
| 
								 | 
							
								        onChange={this.onChange}
							 | 
						||
| 
								 | 
							
								        value={this.state.value}
							 | 
						||
| 
								 | 
							
								        mask={['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]}
							 | 
						||
| 
								 | 
							
								        guide={false}/>
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const statefulComponent = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <StatefulComponent/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    const renderedDOMInput = ReactTestUtils.findRenderedDOMComponentWithTag(statefulComponent, 'input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Initial value "1234" from StatefulComponent is masked correct
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMInput.value).to.equal('(123) 4')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Simulate deleting last char "4" from input
							 | 
						||
| 
								 | 
							
								    renderedDOMInput.value = '(123'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Simulate onChange event with current value "(123"
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMInput, {target: {value: '(123'}})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Now we expect to see value "(123" instead of "(123) "
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMInput.value).to.equal('(123')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Test for issue #806
							 | 
						||
| 
								 | 
							
								describe('MaskedInput as controlled component', () => {
							 | 
						||
| 
								 | 
							
								  class StatefulComponent extends React.Component {
							 | 
						||
| 
								 | 
							
								    constructor(...args) {
							 | 
						||
| 
								 | 
							
								      super(...args)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      this.state = {
							 | 
						||
| 
								 | 
							
								        value: '',
							 | 
						||
| 
								 | 
							
								        mask: ['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/],
							 | 
						||
| 
								 | 
							
								        guide: false,
							 | 
						||
| 
								 | 
							
								        placeholderChar: '_',
							 | 
						||
| 
								 | 
							
								        showMask: false,
							 | 
						||
| 
								 | 
							
								        pipe: undefined
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      this.onChange = this.onChange.bind(this)
							 | 
						||
| 
								 | 
							
								      this.onMaskArray = this.onMaskArray.bind(this)
							 | 
						||
| 
								 | 
							
								      this.onMaskFunction = this.onMaskFunction.bind(this)
							 | 
						||
| 
								 | 
							
								      this.onGuideOn = this.onGuideOn.bind(this)
							 | 
						||
| 
								 | 
							
								      this.onPlaceholderChar = this.onPlaceholderChar.bind(this)
							 | 
						||
| 
								 | 
							
								      this.onShowMaskOn = this.onShowMaskOn.bind(this)
							 | 
						||
| 
								 | 
							
								      this.onPipeOn = this.onPipeOn.bind(this)
							 | 
						||
| 
								 | 
							
								      this.onPipeOff = this.onPipeOff.bind(this)
							 | 
						||
| 
								 | 
							
								      this.onPipeAnother = this.onPipeAnother.bind(this)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    onChange(e) {
							 | 
						||
| 
								 | 
							
								      this.setState({value: e.target.value})
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    onMaskArray() {
							 | 
						||
| 
								 | 
							
								      this.setState({mask: ['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, '-', /\d/, /\d/]})
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    onMaskFunction() {
							 | 
						||
| 
								 | 
							
								      this.setState({mask: () => [/\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]})
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    onGuideOn() {
							 | 
						||
| 
								 | 
							
								      this.setState({guide: true})
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    onPlaceholderChar() {
							 | 
						||
| 
								 | 
							
								      this.setState({placeholderChar: '*'})
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    onShowMaskOn() {
							 | 
						||
| 
								 | 
							
								      this.setState({
							 | 
						||
| 
								 | 
							
								        guide: undefined,
							 | 
						||
| 
								 | 
							
								        showMask: true
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    onPipeOn() {
							 | 
						||
| 
								 | 
							
								      this.setState({
							 | 
						||
| 
								 | 
							
								        pipe: (conformedValue) => ({value: `Tel. ${conformedValue}`, indexesOfPipedChars: [0, 1, 2, 3, 4]})
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    onPipeOff() {
							 | 
						||
| 
								 | 
							
								      this.setState({
							 | 
						||
| 
								 | 
							
								        pipe: undefined
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    onPipeAnother() {
							 | 
						||
| 
								 | 
							
								      this.setState({
							 | 
						||
| 
								 | 
							
								        pipe: (conformedValue) => ({value: `Tel: ${conformedValue}`, indexesOfPipedChars: [0, 1, 2, 3, 4]})
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    render() {
							 | 
						||
| 
								 | 
							
								      return (
							 | 
						||
| 
								 | 
							
								        <div>
							 | 
						||
| 
								 | 
							
								            <input onChange={this.onChange} value={this.state.value} className={'user-input'}/>
							 | 
						||
| 
								 | 
							
								            <MaskedInput
							 | 
						||
| 
								 | 
							
								              value={this.state.value}
							 | 
						||
| 
								 | 
							
								              mask={this.state.mask}
							 | 
						||
| 
								 | 
							
								              guide={this.state.guide}
							 | 
						||
| 
								 | 
							
								              placeholderChar={this.state.placeholderChar}
							 | 
						||
| 
								 | 
							
								              showMask={this.state.showMask}
							 | 
						||
| 
								 | 
							
								              pipe={this.state.pipe}
							 | 
						||
| 
								 | 
							
								              className={'masked-input'}
							 | 
						||
| 
								 | 
							
								            />
							 | 
						||
| 
								 | 
							
								            <button className='mask-array-button' onClick={this.onMaskArray}>Change mask array</button>
							 | 
						||
| 
								 | 
							
								            <button className='mask-function-button' onClick={this.onMaskFunction}>Change mask function</button>
							 | 
						||
| 
								 | 
							
								            <button className='guide-on-button' onClick={this.onGuideOn}>Guide On</button>
							 | 
						||
| 
								 | 
							
								            <button className='placeholderChar-button' onClick={this.onPlaceholderChar}>
							 | 
						||
| 
								 | 
							
								              Change placeholderChar
							 | 
						||
| 
								 | 
							
								            </button>
							 | 
						||
| 
								 | 
							
								            <button className='showMask-on-button' onClick={this.onShowMaskOn}>ShowMask On</button>
							 | 
						||
| 
								 | 
							
								            <button className='pipe-on-button' onClick={this.onPipeOn}>Pipe On</button>
							 | 
						||
| 
								 | 
							
								            <button className='pipe-off-button' onClick={this.onPipeOff}>Pipe Off</button>
							 | 
						||
| 
								 | 
							
								            <button className='pipe-another-button' onClick={this.onPipeAnother}>Pipe Another</button>
							 | 
						||
| 
								 | 
							
								        </div>
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('works if value prop was changed', () => {
							 | 
						||
| 
								 | 
							
								    const statefulComponent = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <StatefulComponent/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find inputs
							 | 
						||
| 
								 | 
							
								    const renderedDOMUserInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'user-input')
							 | 
						||
| 
								 | 
							
								    const renderedDOMMaskedInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'masked-input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Check value changing
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: '123'}})
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) ')
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: '12345678901234567890'}})
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) 456-7890')
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: ''}})
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('works if showMask prop was changed', () => {
							 | 
						||
| 
								 | 
							
								    const statefulComponent = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <StatefulComponent/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find inputs
							 | 
						||
| 
								 | 
							
								    const renderedDOMMaskedInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'masked-input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find buttons
							 | 
						||
| 
								 | 
							
								    const renderedDOMButtonShowMaskOn =
							 | 
						||
| 
								 | 
							
								      ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'showMask-on-button')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Check showMask changing
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.click(renderedDOMButtonShowMaskOn)
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(___) ___-____')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('works if guide prop was changed', () => {
							 | 
						||
| 
								 | 
							
								    const statefulComponent = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <StatefulComponent/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find inputs
							 | 
						||
| 
								 | 
							
								    const renderedDOMUserInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'user-input')
							 | 
						||
| 
								 | 
							
								    const renderedDOMMaskedInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'masked-input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find buttons
							 | 
						||
| 
								 | 
							
								    const renderedDOMButtonGuideOn =
							 | 
						||
| 
								 | 
							
								      ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'guide-on-button')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Check guide on changing
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: '(123) '}})
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) ')
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.click(renderedDOMButtonGuideOn)
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) ___-____')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('works if placeholderChar prop was changed', () => {
							 | 
						||
| 
								 | 
							
								    const statefulComponent = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <StatefulComponent/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find inputs
							 | 
						||
| 
								 | 
							
								    const renderedDOMUserInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'user-input')
							 | 
						||
| 
								 | 
							
								    const renderedDOMMaskedInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'masked-input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find buttons
							 | 
						||
| 
								 | 
							
								    const renderedDOMButtonGuideOn =
							 | 
						||
| 
								 | 
							
								      ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'guide-on-button')
							 | 
						||
| 
								 | 
							
								    const renderedDOMButtonPlaceholderChar =
							 | 
						||
| 
								 | 
							
								      ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'placeholderChar-button')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Check placeholderChar changing
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.click(renderedDOMButtonGuideOn)
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: '(123) ___-____'}})
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) ___-____')
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.click(renderedDOMButtonPlaceholderChar)
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) ***-****')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('works if mask as array prop was changed', () => {
							 | 
						||
| 
								 | 
							
								    const statefulComponent = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <StatefulComponent/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find inputs
							 | 
						||
| 
								 | 
							
								    const renderedDOMUserInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'user-input')
							 | 
						||
| 
								 | 
							
								    const renderedDOMMaskedInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'masked-input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find buttons
							 | 
						||
| 
								 | 
							
								    const renderedDOMButtonMaskArray =
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'mask-array-button')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Check mask as array changing
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: '(123) 456-7890'}})
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) 456-7890')
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.click(renderedDOMButtonMaskArray)
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) 456-78-90')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('works if mask as function prop was changed', () => {
							 | 
						||
| 
								 | 
							
								    const statefulComponent = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <StatefulComponent/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find inputs
							 | 
						||
| 
								 | 
							
								    const renderedDOMUserInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'user-input')
							 | 
						||
| 
								 | 
							
								    const renderedDOMMaskedInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'masked-input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find buttons
							 | 
						||
| 
								 | 
							
								    const renderedDOMButtonMaskFunction =
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'mask-function-button')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Check mask as function changing
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: '(123) 456-7890'}})
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) 456-7890')
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.click(renderedDOMButtonMaskFunction)
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('123 456-7890')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('works if pipe prop was changed', () => {
							 | 
						||
| 
								 | 
							
								    const statefulComponent = ReactTestUtils.renderIntoDocument(
							 | 
						||
| 
								 | 
							
								      <StatefulComponent/>
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find inputs
							 | 
						||
| 
								 | 
							
								    const renderedDOMUserInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'user-input')
							 | 
						||
| 
								 | 
							
								    const renderedDOMMaskedInput = ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'masked-input')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Find buttons
							 | 
						||
| 
								 | 
							
								    const renderedDOMButtonPipeOn =
							 | 
						||
| 
								 | 
							
								      ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'pipe-on-button')
							 | 
						||
| 
								 | 
							
								    const renderedDOMButtonPipeOff =
							 | 
						||
| 
								 | 
							
								      ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'pipe-off-button')
							 | 
						||
| 
								 | 
							
								    const renderedDOMButtonPipeAnother =
							 | 
						||
| 
								 | 
							
								      ReactTestUtils.findRenderedDOMComponentWithClass(statefulComponent, 'pipe-another-button')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Check pipe changing
							 | 
						||
| 
								 | 
							
								    // `pipe` undefined to function
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: '(123) 456-7890'}})
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) 456-7890')
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.click(renderedDOMButtonPipeOn)
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('Tel. (123) 456-7890')
							 | 
						||
| 
								 | 
							
								    // `pipe` function to another function
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: 'Tel. (123) 456-7890'}})
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.click(renderedDOMButtonPipeAnother)
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('Tel: (123) 456-7890')
							 | 
						||
| 
								 | 
							
								    // `pipe` function to undefined
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.change(renderedDOMUserInput, {target: {value: 'Tel: (123) 456-7890'}})
							 | 
						||
| 
								 | 
							
								    ReactTestUtils.Simulate.click(renderedDOMButtonPipeOff)
							 | 
						||
| 
								 | 
							
								    expect(renderedDOMMaskedInput.value).to.equal('(123) 456-7890')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('conformToMask', () => {
							 | 
						||
| 
								 | 
							
								  it('is a function', () => {
							 | 
						||
| 
								 | 
							
								    expect(typeof conformToMask).to.equal('function')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 |