From cd9218444d5cb6f69ac0d6869062249f1a2db266 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sat, 3 Mar 2018 17:36:45 +0100
Subject: [PATCH] refactor: move node package lookup to node helper

---
 .../engines.js => _helpers/node/package.js}   | 19 +++++++++----------
 lib/manager/npm/package.js                    |  8 ++++++--
 .../node/package.spec.js}                     | 14 +++++++-------
 test/manager/npm/package.spec.js              | 10 +++++++++-
 4 files changed, 31 insertions(+), 20 deletions(-)
 rename lib/manager/{npm/engines.js => _helpers/node/package.js} (78%)
 rename test/manager/{npm/engines.spec.js => _helpers/node/package.spec.js} (64%)

diff --git a/lib/manager/npm/engines.js b/lib/manager/_helpers/node/package.js
similarity index 78%
rename from lib/manager/npm/engines.js
rename to lib/manager/_helpers/node/package.js
index 350f62dea3..84960e757f 100644
--- a/lib/manager/npm/engines.js
+++ b/lib/manager/_helpers/node/package.js
@@ -1,14 +1,11 @@
 const semver = require('semver');
-const { getRepoReleases, semverSort } = require('../../datasource/github');
+const { getRepoReleases, semverSort } = require('../../../datasource/github');
 
-async function renovateEngines(config) {
-  const { currentVersion, depName: dependency } = config;
-  logger.debug({ dependency, currentVersion }, 'Found engines');
-  if (config.depName !== 'node') {
-    logger.debug('Skipping non-node engine');
-    return [];
-  }
-  logger.info('Checking node engine');
+async function getPackageUpdates(config) {
+  logger.debug('getPackageUpdates()');
+  logger.trace({ config });
+  const { currentVersion } = config;
+  logger.info('Checking for nvmrc updates');
   if (!semver.valid(currentVersion)) {
     logger.info({ currentVersion }, 'Skipping non-pinned node version');
     return [];
@@ -56,4 +53,6 @@ async function renovateEngines(config) {
   ];
 }
 
-module.exports = { renovateEngines };
+module.exports = {
+  getPackageUpdates,
+};
diff --git a/lib/manager/npm/package.js b/lib/manager/npm/package.js
index 578527d48c..f4b0dd4f1b 100644
--- a/lib/manager/npm/package.js
+++ b/lib/manager/npm/package.js
@@ -1,6 +1,6 @@
 const npmApi = require('../../datasource/npm');
 const versions = require('../../workers/package/versions');
-const { renovateEngines } = require('./engines');
+const nodeManager = require('../_helpers/node/package');
 
 module.exports = {
   getPackageUpdates,
@@ -8,7 +8,11 @@ module.exports = {
 
 async function getPackageUpdates(config) {
   if (config.depType === 'engines') {
-    return renovateEngines(config);
+    if (config.depName !== 'node') {
+      logger.debug('Skipping non-node engine');
+      return [];
+    }
+    return nodeManager.getPackageUpdates(config);
   }
   let results = [];
   if (config.currentVersion.startsWith('file:')) {
diff --git a/test/manager/npm/engines.spec.js b/test/manager/_helpers/node/package.spec.js
similarity index 64%
rename from test/manager/npm/engines.spec.js
rename to test/manager/_helpers/node/package.spec.js
index 2c65d9c9e7..f24a89b2af 100644
--- a/test/manager/npm/engines.spec.js
+++ b/test/manager/_helpers/node/package.spec.js
@@ -1,7 +1,7 @@
-const engines = require('../../../lib/manager/npm/engines');
-const { getRepoReleases } = require('../../../lib/datasource/github');
+const nodeManager = require('../../../../lib/manager/_helpers/node/package');
+const { getRepoReleases } = require('../../../../lib/datasource/github');
 
-jest.mock('../../../lib/datasource/github');
+jest.mock('../../../../lib/datasource/github');
 
 describe('manager/npm/engines', () => {
   let config;
@@ -12,26 +12,26 @@ describe('manager/npm/engines', () => {
   });
   it('skips non-pinned versions', async () => {
     config.currentVersion = '8';
-    const res = await engines.renovateEngines(config);
+    const res = await nodeManager.getPackageUpdates(config);
     expect(res).toEqual([]);
   });
   it('returns empty', async () => {
     config.currentVersion = '8.9.0';
     getRepoReleases.mockReturnValueOnce([]);
-    const res = await engines.renovateEngines(config);
+    const res = await nodeManager.getPackageUpdates(config);
     expect(res).toEqual([]);
   });
   it('filters v', async () => {
     config.currentVersion = '8.9.0';
     getRepoReleases.mockReturnValueOnce(['v8.0.0', 'v8.9.1']);
-    const res = await engines.renovateEngines(config);
+    const res = await nodeManager.getPackageUpdates(config);
     expect(res).toHaveLength(1);
     expect(res[0].newVersion).toEqual('8.9.1');
   });
   it('skips major versions', async () => {
     config.currentVersion = '8.9.0';
     getRepoReleases.mockReturnValueOnce(['v9.4.0']);
-    const res = await engines.renovateEngines(config);
+    const res = await nodeManager.getPackageUpdates(config);
     expect(res).toHaveLength(0);
   });
 });
diff --git a/test/manager/npm/package.spec.js b/test/manager/npm/package.spec.js
index 912bf7b095..9e7f2f3f39 100644
--- a/test/manager/npm/package.spec.js
+++ b/test/manager/npm/package.spec.js
@@ -4,6 +4,7 @@ const npm = require('../../../lib/manager/npm/package');
 const defaultConfig = require('../../../lib/config/defaults').getConfig();
 
 jest.mock('../../../lib/datasource/npm');
+jest.mock('../../../lib/manager/_helpers/node/package');
 npmApi.getDependency = jest.fn();
 
 describe('lib/workers/package/npm', () => {
@@ -17,11 +18,18 @@ describe('lib/workers/package/npm', () => {
         currentVersion: '1.0.0',
       };
     });
-    it('calls engines function', async () => {
+    it('skips non-node engines', async () => {
       config.depType = 'engines';
       const res = await npm.getPackageUpdates(config);
       expect(res).toHaveLength(0);
     });
+    it('calls node for node engines', async () => {
+      config.depType = 'engines';
+      config.depName = 'node';
+      config.currentVersion = '8.9.0';
+      const res = await npm.getPackageUpdates(config);
+      expect(res).toBeUndefined();
+    });
     it('returns if using a file reference', async () => {
       config.currentVersion = 'file:../sibling/package.json';
       const res = await npm.getPackageUpdates(config);
-- 
GitLab