From f165af9a1c641da0be53a75f14f6a759a871c7cd Mon Sep 17 00:00:00 2001
From: Kenneth Sundqvist <kenneth@kesu.se>
Date: Mon, 30 Dec 2019 13:23:07 +0100
Subject: [PATCH] Allow node_modules to be mocked as described in the Jest
 documentation

---
 .../react-scripts/scripts/utils/createJestConfig.js  | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/packages/react-scripts/scripts/utils/createJestConfig.js b/packages/react-scripts/scripts/utils/createJestConfig.js
index 5c17ad69a..7b18f47a6 100644
--- a/packages/react-scripts/scripts/utils/createJestConfig.js
+++ b/packages/react-scripts/scripts/utils/createJestConfig.js
@@ -8,6 +8,7 @@
 'use strict';
 
 const fs = require('fs');
+const path = require('path');
 const chalk = require('react-dev-utils/chalk');
 const paths = require('../../config/paths');
 const modules = require('../../config/modules');
@@ -22,8 +23,17 @@ module.exports = (resolve, rootDir, isEjecting) => {
     ? `<rootDir>/src/setupTests.${setupTestsFileExtension}`
     : undefined;
 
+  const roots = ['<rootDir>/src'];
+
+  const nodeMocksRootPath = path.join(rootDir || paths.appPath, '__mocks__');
+  const nodeMocksRootStats =
+    fs.existsSync(nodeMocksRootPath) && fs.statSync(nodeMocksRootPath);
+  if (nodeMocksRootStats && nodeMocksRootStats.isDirectory()) {
+    roots.push('<rootDir>/__mocks__');
+  }
+
   const config = {
-    roots: ['<rootDir>/src'],
+    roots,
 
     collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}', '!src/**/*.d.ts'],
 
-- 
GitLab