18F/identity-idp

View on GitHub
app/javascript/packages/test-helpers/use-property-value.ts

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * Temporarily override a property value for the duration of a test, restoring the original value
 * after the current test scope.
 *
 * @param object Object on which to override property.
 * @param property Property key.
 * @param value Temporary property value.
 */
function usePropertyValue<O extends object>(object: O, property: keyof O, value: any) {
  let wasDefined: boolean;
  let originalValue;
  before(() => {
    wasDefined = property in object;
    originalValue = object[property];
    object[property] = value;
  });

  after(() => {
    if (wasDefined) {
      object[property] = originalValue;
    } else {
      delete object[property];
    }
  });
}

export default usePropertyValue;