diff options
| author | Zog | 2017-12-28 11:22:41 +0100 | 
|---|---|---|
| committer | Zog | 2017-12-28 11:22:43 +0100 | 
| commit | 09dcd818d83a1dddef4e4f2e3fd800fb228c51c0 (patch) | |
| tree | dd32f2131c15dc8d79ab3c927d9ec9a79f4f8495 | |
| parent | d6b14504f350e4bf5de3d7a68928c433fef70de7 (diff) | |
| download | chouette-core-09dcd818d83a1dddef4e4f2e3fd800fb228c51c0.tar.bz2 | |
Refs #5435 @0.5h; Fix EditModal validation in VehicleJourneys#index
| -rw-r--r-- | app/javascript/vehicle_journeys/actions/index.js | 30 | ||||
| -rw-r--r-- | app/javascript/vehicle_journeys/components/VehicleJourney.js | 2 | ||||
| -rw-r--r-- | spec/javascript/vehicle_journeys/actions_spec.js | 58 | 
3 files changed, 61 insertions, 29 deletions
| diff --git a/app/javascript/vehicle_journeys/actions/index.js b/app/javascript/vehicle_journeys/actions/index.js index 4f8e134e0..55938c10a 100644 --- a/app/javascript/vehicle_journeys/actions/index.js +++ b/app/javascript/vehicle_journeys/actions/index.js @@ -188,26 +188,18 @@ const actions = {    resetValidation: (target) => {      $(target).parent().removeClass('has-error').children('.help-block').remove()    }, -  validateFields : (...fields) => { -    const test = [] - -    Object.keys(fields).map(function(key) { -      test.push(fields[key].validity.valid) +  validateFields : (fields) => { +    let valid = true +    Object.keys(fields).forEach((key) => { +      let field = fields[key] +      if(field.validity && !field.validity.valid){ +        valid = false +        $(field).parent().addClass('has-error').children('.help-block').remove() +        $(field).parent().append("<span class='small help-block'>" + field.validationMessage + "</span>") +      }      }) -    if(test.indexOf(false) >= 0) { -      // Form is invalid -      test.map(function(item, i) { -        if(item == false) { -          const k = Object.keys(fields)[i] -          $(fields[k]).parent().addClass('has-error').children('.help-block').remove() -          $(fields[k]).parent().append("<span class='small help-block'>" + fields[k].validationMessage + "</span>") -        } -      }) -      return false -    } else { -      // Form is valid -      return true -    } + +    return valid    },    toggleArrivals : () => ({      type: 'TOGGLE_ARRIVALS', diff --git a/app/javascript/vehicle_journeys/components/VehicleJourney.js b/app/javascript/vehicle_journeys/components/VehicleJourney.js index 30b329896..5f6281487 100644 --- a/app/javascript/vehicle_journeys/components/VehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/VehicleJourney.js @@ -64,7 +64,7 @@ export default class VehicleJourney extends Component {          <div            className='th'            onClick={(e) => -            ($(e.target).parents("a").length == 0) && this.props.editMode && this.props.onSelectVehicleJourney(this.props.index) +            ($(e.target).parents("a").length == 0) && this.props.onSelectVehicleJourney(this.props.index)            }            >            <div className='strong mb-xs'>{this.props.value.short_id || '-'}</div> diff --git a/spec/javascript/vehicle_journeys/actions_spec.js b/spec/javascript/vehicle_journeys/actions_spec.js index 3af19ebc3..2f1daf0da 100644 --- a/spec/javascript/vehicle_journeys/actions_spec.js +++ b/spec/javascript/vehicle_journeys/actions_spec.js @@ -174,15 +174,55 @@ describe('when clicking on validate button inside shifting modal', () => {    })  })  describe('when clicking on validate button inside editing modal', () => { -  it('should create an action to update a vehiclejourney', () => { -    const data = {} -    const selectedCompany = {} -    const expectedAction = { -      type: 'EDIT_VEHICLEJOURNEY', -      data, -      selectedCompany -    } -    expect(actions.editVehicleJourney(data, selectedCompany)).toEqual(expectedAction) +  context("with invalid data", () => { +    it('should not validate the data', () => { +      const data = { +        foo: { +          validity: { valid: false } +        }, +        bar: { +          validity: { valid: true } +        } +      } + +      expect(actions.validateFields(data)).toBeFalsy +    }) +  }) + +  context("with data not needing validation", () => { +    it('should validate the data', () => { +      const data = { +        foo: {} +      } + +      expect(actions.validateFields(data)).toBeTruthy +    }) +  }) +  context("with valid data", () => { +    it('should validate the data', () => { +      const data = { +        foo: { +          validity: { valid: true } +        }, +        bar: { +          validity: { valid: true } +        } +      } + +      expect(actions.validateFields(data)).toBeTruthy +    }) +  }) +  context("once the data has been validated", () => { +    it('should create an action to update a vehiclejourney', () => { +      const data = {} +      const selectedCompany = {} +      const expectedAction = { +        type: 'EDIT_VEHICLEJOURNEY', +        data, +        selectedCompany +      } +      expect(actions.editVehicleJourney(data, selectedCompany)).toEqual(expectedAction) +    })    })  })  describe('when clicking on validate button inside duplicating modal', () => { | 
