department-of-veterans-affairs/vets-website

View on GitHub
src/applications/personalization/dashboard/mocks/server.js

Summary

Maintainability
A
0 mins
Test Coverage
const delay = require('mocker-api/lib/delay');
const {
  generateFeatureToggles,
} = require('../../common/mocks/feature-toggles');
const user = require('../../common/mocks/users');
const notifications = require('../../common/mocks/notifications');
const { createSuccessPayment } = require('./payment-history');
const { createAppealsSuccess } = require('./appeals');
const { createDebtsSuccess, createNoDebtsSuccess } = require('./debts');
const { createClaimsSuccess } = require('./claims');
const { createHealthCareStatusSuccess } = require('./health-care');
const { createApplications } = require('./benefit-applications');
const { allFoldersWithUnreadMessages } = require('./messaging');
const { user81Copays } = require('./medical-copays');
const { v2 } = require('./appointments');
const mockLocalDSOT = require('../../common/mocks/script/drupal-vamc-data/mockLocalDSOT');
const { boot } = require('../../common/mocks/script/utils');

// set to true to simulate a user with debts for /v0/debts endpoint
const hasDebts = false;

/* eslint-disable camelcase */
const responses = {
  'GET /v0/feature_toggles': generateFeatureToggles(
    {
      authExpVbaDowntimeMessage: false,
      myVaUseExperimental: false,
      veteranOnboardingBetaFlow: false,
      myVaFormSubmissionStatuses: true,
      veteranOnboardingShowWelcomeMessageToNewUsers: true,
    },
    true,
  ),
  'GET /v0/user': user.simpleUser,
  'OPTIONS /v0/maintenance_windows': 'OK',
  'GET /v0/maintenance_windows': { data: [] },
  'GET /v0/medical_copays': user81Copays,
  'GET /v0/profile/payment_history': createSuccessPayment(false),
  'GET /v0/profile/service_history': {
    data: {
      id: '',
      type: 'arrays',
      attributes: {
        dataSource: 'api.va_profile',
        serviceHistory: [
          {
            branchOfService: 'Air Force',
            beginDate: '2009-04-12',
            endDate: '2013-04-11',
            periodOfServiceTypeCode: 'V',
            periodOfServiceTypeText: 'Reserve member',
            characterOfDischargeCode: 'A',
          },
        ],
      },
    },
  },
  'GET /v0/appeals': createAppealsSuccess(),
  'GET /v0/benefits_claims': createClaimsSuccess(),
  'GET /v0/health_care_applications/enrollment_status': createHealthCareStatusSuccess(),
  'GET /my_health/v1/messaging/folders': allFoldersWithUnreadMessages,
  'GET /v0/my_va/submission_statuses': createApplications(),
  'GET /v0/profile/full_name': {
    id: '',
    type: 'hashes',
    attributes: {
      first: 'Mitchell',
      middle: 'G',
      last: 'Jenkins',
      suffix: null,
    },
  },
  'GET /v0/debts': hasDebts ? createDebtsSuccess() : createNoDebtsSuccess(),
  'GET /v0/onsite_notifications': notifications.hasMultiple,
  // TODO: put id into a constant file when we get more notification types
  'PATCH /v0/onsite_notifications/:id': (req, res) => {
    const { id } = req.params;

    if (
      id === 'e4213b12-eb44-4b2f-bac5-3384fbde0b7a' ||
      id === 'f9947b27-df3b-4b09-875c-7f76594d766d'
    ) {
      return res.json(notifications.createDismissalSuccessResponse(id));
    }
    if (!id) {
      return notifications.hasError;
    }

    return res.json({ data: [] });
  },
  'GET /v0/disability_compensation_form/rating_info': {
    data: {
      id: '',
      type: 'evss_disability_compensation_form_rating_info_responses',
      attributes: {
        userPercentOfDisability: 40,
      },
    },
  },
  'GET /vaos/v2/appointments': (_req, res) => {
    const rv = v2.createAppointmentSuccess({ startsInDays: [31] });
    return res.status(200).json(rv);
  },
};

// here we can run anything that needs to happen before the mock server starts up
// this runs every time a file is mocked
// but the single boot function will only run once
const generateMockResponses = () => {
  boot(mockLocalDSOT);

  // set DELAY=1000 when running mock server script
  // to add 1 sec delay to all responses
  const responseDelay = process?.env?.DELAY || 0;

  return responseDelay > 0 ? delay(responses, responseDelay) : responses;
};

module.exports = generateMockResponses();