all files / src/__tests__/ reducer.touch.spec.js

100% Statements 22/22
100% Branches 4/4
100% Functions 6/6
100% Lines 11/11
6 statements, 1 function, 3 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105                                                                                                                                                                                             
import {touch} from '../actions'
 
const describeTouch = (reducer, expect, {fromJS}) => () => {
  it('should mark fields as touched on touch', () => {
    const state = reducer(fromJS({
      foo: {
        values: {
          myField: 'value',
          myOtherField: 'otherValue'
        }
      }
    }), {
      ...touch('myField', 'myOtherField'),
      form: 'foo'
    })
    expect(state)
      .toEqualMap({
        foo: {
          values: {
            myField: 'value',
            myOtherField: 'otherValue'
          },
          fields: {
            myField: {
              touched: true
            },
            myOtherField: {
              touched: true
            }
          }
        }
      })
  })
 
  it('should mark deep fields as touched on touch', () => {
    const state = reducer(fromJS({
      foo: {
        values: {
          deep: {
            myField: 'value',
            myOtherField: 'otherValue'
          }
        }
      }
    }), {
      ...touch('deep.myField', 'deep.myOtherField'),
      form: 'foo'
    })
    expect(state)
      .toEqualMap({
        foo: {
          values: {
            deep: {
              myField: 'value',
              myOtherField: 'otherValue'
            }
          },
          fields: {
            deep: {
              myField: {
                touched: true
              },
              myOtherField: {
                touched: true
              }
            }
          }
        }
      })
  })
 
  it('should mark array fields as touched on touch', () => {
    const state = reducer(fromJS({
      foo: {
        values: {
          myFields: ['value', 'otherValue']
        }
      }
    }), {
      ...touch('myFields[0]', 'myFields[1]'),
      form: 'foo'
    })
    expect(state)
      .toEqualMap({
        foo: {
          values: {
            myFields: ['value', 'otherValue']
          },
          fields: {
            myFields: [
              {
                touched: true
              },
              {
                touched: true
              }
            ]
          }
        }
      })
  })
}
 
export default describeTouch