Skip to content

Commit

Permalink
test: add tests for compileNodeModules config
Browse files Browse the repository at this point in the history
  • Loading branch information
swashata committed May 26, 2021
1 parent c1636dd commit 5c884d9
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 2 deletions.
82 changes: 82 additions & 0 deletions packages/scripts/__tests__/config/WebpackConfigHelper.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,88 @@ describe('WebpackConfigHelper', () => {
}
});

test('does not set babel-loader for node_modules in dev mode per config', () => {
const newProjectConfig = { ...projectConfig };
newProjectConfig.compileNodeModules = {
dev: false,
prod: true,
};
const cwc = new WebpackConfigHelper(
newProjectConfig.files[0],
getConfigFromProjectAndServer(newProjectConfig, serverConfig),
'/foo/bar',
true
);
const modules = cwc.getModule();
if (Array.isArray(modules.rules)) {
const nmJsRules = findWpackIoBabelOnNm(modules);
expect(nmJsRules).toHaveLength(0);
} else {
throw new Error('Module is not an array');
}
});
test('does set babel-loader for node_modules in dev mode per config', () => {
const newProjectConfig = { ...projectConfig };
newProjectConfig.compileNodeModules = {
dev: true,
prod: false,
};
const cwc = new WebpackConfigHelper(
newProjectConfig.files[0],
getConfigFromProjectAndServer(newProjectConfig, serverConfig),
'/foo/bar',
true
);
const modules = cwc.getModule();
if (Array.isArray(modules.rules)) {
const nmJsRules = findWpackIoBabelOnNm(modules);
expect(nmJsRules).toHaveLength(1);
} else {
throw new Error('Module is not an array');
}
});

test('does not set babel-loader for node_modules in prod mode per config', () => {
const newProjectConfig = { ...projectConfig };
newProjectConfig.compileNodeModules = {
dev: true,
prod: false,
};
const cwc = new WebpackConfigHelper(
newProjectConfig.files[0],
getConfigFromProjectAndServer(newProjectConfig, serverConfig),
'/foo/bar',
false
);
const modules = cwc.getModule();
if (Array.isArray(modules.rules)) {
const nmJsRules = findWpackIoBabelOnNm(modules);
expect(nmJsRules).toHaveLength(0);
} else {
throw new Error('Module is not an array');
}
});
test('does set babel-loader for node_modules in prod mode per config', () => {
const newProjectConfig = { ...projectConfig };
newProjectConfig.compileNodeModules = {
dev: false,
prod: true,
};
const cwc = new WebpackConfigHelper(
newProjectConfig.files[0],
getConfigFromProjectAndServer(newProjectConfig, serverConfig),
'/foo/bar',
false
);
const modules = cwc.getModule();
if (Array.isArray(modules.rules)) {
const nmJsRules = findWpackIoBabelOnNm(modules);
expect(nmJsRules).toHaveLength(1);
} else {
throw new Error('Module is not an array');
}
});

test('obeys hasFlow & hasRect', () => {
const cwc = new WebpackConfigHelper(
projectConfig.files[0],
Expand Down
8 changes: 6 additions & 2 deletions packages/scripts/__tests__/helpers/testUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ export function getConfigFromProjectAndServer(
pCfg: ProjectConfig,
sCfg: ServerConfig
): WebpackConfigHelperConfig {
const compileNodeModules = pCfg.compileNodeModules ?? {
dev: true,
prod: true,
};
return {
appName: pCfg.appName,
type: pCfg.type,
Expand All @@ -66,8 +70,8 @@ export function getConfigFromProjectAndServer(
externals: pCfg.externals,
useBabelConfig: false,
compileNodeModules: {
dev: true,
prod: true,
dev: compileNodeModules.dev ?? true,
prod: compileNodeModules.prod ?? true,
},
useReactJsxRuntime: true,
};
Expand Down

0 comments on commit 5c884d9

Please sign in to comment.