18F/e-QIP-prototype

View on GitHub
src/validators/foreignborndocument.js

Summary

Maintainability
A
1 hr
Test Coverage
import { validateModel } from 'models/validate'
import foreignBornDocument from 'models/foreignBornDocument'
import store from 'services/store'
import * as formTypes from 'constants/formTypes'
import { requireRelationshipMaritalForeignBornDocExpiration } from 'helpers/branches'

export const validateForeignBornDocument = (data, formType = formTypes.SF86) => {
  const isForeignBornDocExpirationRequired = requireRelationshipMaritalForeignBornDocExpiration(formType)
  return validateModel(
    data,
    foreignBornDocument,
    { requireForeignBornDocExpiration: isForeignBornDocExpirationRequired }
  )
}

export default class ForeignBornDocumentValidator {
  constructor(data = {}) {
    const state = store.getState()
    const { formType } = state.application.Settings

    this.data = data
    this.formType = formType
  }

  validDocumentType() {
    return validateModel(this.data, {
      DocumentType: foreignBornDocument.DocumentType,
    }) === true
  }

  validDocumentExplanation() {
    return validateModel(this.data, {
      OtherExplanation: foreignBornDocument.OtherExplanation,
    }) === true
  }

  validDocumentExpiration() {
    return validateModel(this.data, {
      DocumentExpiration: foreignBornDocument.DocumentExpiration,
    }) === true
  }

  isValid() {
    return validateForeignBornDocument(this.data, this.formType) === true
  }
}