department-of-veterans-affairs/vets-website

View on GitHub
src/applications/discharge-wizard/reducers/v2/discharge-upgrade-wizard.js

Summary

Maintainability
A
1 hr
Test Coverage
import {
  DUW_VIEWED_INTRO_PAGE,
  DUW_UPDATE_SERVICE_BRANCH,
  DUW_UPDATE_DISCHARGE_YEAR,
  DUW_UPDATE_DISCHARGE_MONTH,
  DUW_UPDATE_REASON,
  DUW_UPDATE_DISCHARGE_TYPE,
  DUW_UPDATE_INTENTION,
  DUW_UPDATE_COURT_MARTIAL,
  DUW_UPDATE_FORM_STORE,
  DUW_UPDATE_PREV_APPLICATION,
  DUW_UPDATE_PREV_APPLICATION_TYPE,
  DUW_UPDATE_PREV_APPLICATION_YEAR,
  DUW_UPDATE_PRIOR_SERVICE,
  DUW_UPDATE_FAILURE_TO_EXHAUST,
  DUW_EDIT_MODE,
  DUW_QUESTION_FLOW_CHANGED,
  DUW_ANSWER_CHANGED,
  DUW_ROUTE_MAP,
  ROUTES,
  DUW_QUESTION_SELECTED_TO_EDIT,
} from '../../constants';

import { SHORT_NAME_MAP } from '../../constants/question-data-map';
import { createFormStore, updateFormValue } from './utilities';

const {
  SERVICE_BRANCH,
  DISCHARGE_YEAR,
  DISCHARGE_MONTH,
  REASON,
  DISCHARGE_TYPE,
  COURT_MARTIAL,
  INTENTION,
  PREV_APPLICATION,
  PREV_APPLICATION_TYPE,
  PREV_APPLICATION_YEAR,
  PRIOR_SERVICE,
  FAILURE_TO_EXHAUST,
} = SHORT_NAME_MAP;

const initialState = {
  form: createFormStore(SHORT_NAME_MAP),
  viewedIntroPage: false,
  editMode: false,
  questionFlowChanged: false,
  answerChanged: false,
  routeMap: [ROUTES.HOME, ROUTES.SERVICE_BRANCH],
  questionSelectedToEdit: '',
};

export default (state = initialState, action) => {
  switch (action.type) {
    case DUW_UPDATE_SERVICE_BRANCH:
      return updateFormValue(SERVICE_BRANCH, state, action);
    case DUW_UPDATE_DISCHARGE_YEAR:
      return updateFormValue(DISCHARGE_YEAR, state, action);
    case DUW_UPDATE_DISCHARGE_MONTH:
      return updateFormValue(DISCHARGE_MONTH, state, action);
    case DUW_UPDATE_REASON:
      return updateFormValue(REASON, state, action);
    case DUW_UPDATE_DISCHARGE_TYPE:
      return updateFormValue(DISCHARGE_TYPE, state, action);
    case DUW_UPDATE_COURT_MARTIAL:
      return updateFormValue(COURT_MARTIAL, state, action);
    case DUW_UPDATE_INTENTION:
      return updateFormValue(INTENTION, state, action);
    case DUW_UPDATE_PREV_APPLICATION:
      return updateFormValue(PREV_APPLICATION, state, action);
    case DUW_UPDATE_PREV_APPLICATION_TYPE:
      return updateFormValue(PREV_APPLICATION_TYPE, state, action);
    case DUW_UPDATE_PREV_APPLICATION_YEAR:
      return updateFormValue(PREV_APPLICATION_YEAR, state, action);
    case DUW_UPDATE_PRIOR_SERVICE:
      return updateFormValue(PRIOR_SERVICE, state, action);
    case DUW_UPDATE_FAILURE_TO_EXHAUST:
      return updateFormValue(FAILURE_TO_EXHAUST, state, action);
    case DUW_VIEWED_INTRO_PAGE:
      return {
        ...state,
        viewedIntroPage: action.payload,
      };
    case DUW_UPDATE_FORM_STORE:
      return {
        ...state,
        form: {
          ...state.form,
          ...action.payload,
        },
      };
    case DUW_QUESTION_SELECTED_TO_EDIT:
      return {
        ...state,
        questionSelectedToEdit: action.payload,
      };
    case DUW_EDIT_MODE:
      return {
        ...state,
        editMode: action.payload,
      };
    case DUW_QUESTION_FLOW_CHANGED:
      return {
        ...state,
        questionFlowChanged: action.payload,
      };
    case DUW_ANSWER_CHANGED:
      return {
        ...state,
        answerChanged: action.payload,
      };
    case DUW_ROUTE_MAP:
      return {
        ...state,
        routeMap: action.payload,
      };

    default:
      return state;
  }
};