import {useCavy, wrap} from 'cavy';
import React from 'react';

export function testable<P>(
  FunctionalComponent: React.FunctionComponent<P>,
): React.FunctionComponent<P & {testID?: string}> {
  // if (!__DEV__) {
  //   return FunctionalComponent;
  // }

  const ClassComponent = wrap(FunctionalComponent);

  return (props: P & {testID?: string}) => {
    const generateTestHook = useCavy();

    return (
      <ClassComponent
        {...props}
        ref={props.testID == null ? undefined : generateTestHook(props.testID)}
      />
    );
  };
}