department-of-veterans-affairs/vets-website

View on GitHub
src/applications/edu-benefits/1995/config/submit-transformer.js

Summary

Maintainability
A
3 hrs
Test Coverage
import _ from 'lodash';
import { transformForSubmit } from 'platform/forms-system/src/js/helpers';

export function transform(formConfig, form) {
  const newSchoolTransform = formData => {
    let clonedData = _.cloneDeep(formData);

    delete clonedData.newSchoolName;
    delete clonedData.newSchoolAddress;

    clonedData = {
      ...clonedData,
      newSchool: {
        ...clonedData.newSchool,
        name: formData.newSchoolName,
        address: formData.newSchoolAddress,
      },
    };
    return clonedData;
  };

  const fryScholarshipTransform = formData => {
    const clonedData = _.cloneDeep(formData);
    if (clonedData.benefit === 'fryScholarship') {
      clonedData.benefit = 'chapter33FryScholarship';
    }
    if (clonedData.benefit === 'chapter33') {
      clonedData.benefit = 'chapter33Post911';
    }
    if (clonedData.benefitUpdate === 'fryScholarship') {
      clonedData.benefitUpdate = 'chapter33FryScholarship';
    }
    if (clonedData.benefitUpdate === 'chapter33') {
      clonedData.benefitUpdate = 'chapter33Post911';
    }
    if (clonedData.benefitAppliedFor === 'fryScholarship') {
      clonedData.benefitAppliedFor = 'chapter33FryScholarship';
    }
    if (clonedData.benefitAppliedFor === 'chapter33') {
      clonedData.benefitAppliedFor = 'chapter33Post911';
    }
    return clonedData;
  };

  // This needs to be last function call in array below
  const usFormTransform = formData =>
    transformForSubmit(formConfig, { ...form, data: formData });

  const contactInfoTransform = formData => ({
    ...formData,
    email: _.get(formData, 'view:otherContactInfo.email', undefined),
    homePhone: _.get(formData, 'view:otherContactInfo.homePhone', undefined),
  });

  const transformedData = [
    newSchoolTransform,
    fryScholarshipTransform,
    contactInfoTransform,
    usFormTransform, // This needs to be last function call in array
  ].reduce((formData, transformer) => transformer(formData), form.data);

  return JSON.stringify({
    educationBenefitsClaim: {
      form: transformedData,
    },
  });
}