From 997904cc6339c07f9e373b393a25b93c9ba3d246 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Wed, 18 Jul 2018 20:10:50 +0200
Subject: [PATCH] refactor: branch files plus tests

---
 lib/workers/branch/index.js       |  6 ++++-
 test/workers/branch/index.spec.js | 39 +++++++++++++++----------------
 2 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/lib/workers/branch/index.js b/lib/workers/branch/index.js
index d0cc407158..b3b634c7fd 100644
--- a/lib/workers/branch/index.js
+++ b/lib/workers/branch/index.js
@@ -146,7 +146,11 @@ async function processBranch(branchConfig, packageFiles) {
     } else {
       logger.debug('No package files need updating');
     }
-    Object.assign(config, await getAdditionalFiles(config, packageFiles));
+    const additionalFiles = await getAdditionalFiles(config, packageFiles);
+    config.lockFileErrors = additionalFiles.lockFileErrors;
+    config.updatedLockFiles = (config.updatedLockFiles || []).concat(
+      additionalFiles.updatedLockFiles
+    );
     if (config.updatedLockFiles && config.updatedLockFiles.length) {
       logger.debug(
         { updatedLockFiles: config.updatedLockFiles.map(f => f.name) },
diff --git a/test/workers/branch/index.spec.js b/test/workers/branch/index.spec.js
index 7acadcf3da..5f0590fc3e 100644
--- a/test/workers/branch/index.spec.js
+++ b/test/workers/branch/index.spec.js
@@ -136,7 +136,7 @@ describe('workers/branch', () => {
         updatedPackageFiles: [],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [],
         updatedLockFiles: [],
       });
       platform.branchExists.mockReturnValue(false);
@@ -150,7 +150,7 @@ describe('workers/branch', () => {
         updatedPackageFiles: [],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [],
         updatedLockFiles: [],
       });
       platform.branchExists.mockReturnValueOnce(false);
@@ -161,7 +161,7 @@ describe('workers/branch', () => {
         updatedPackageFiles: [{}],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [],
         updatedLockFiles: [{}],
       });
       platform.branchExists.mockReturnValueOnce(true);
@@ -176,7 +176,7 @@ describe('workers/branch', () => {
         updatedPackageFiles: [{}],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [],
         updatedLockFiles: [{}],
       });
       platform.branchExists.mockReturnValueOnce(true);
@@ -193,14 +193,13 @@ describe('workers/branch', () => {
         updatedPackageFiles: [{}],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [{}],
         updatedLockFiles: [{}],
       });
       platform.branchExists.mockReturnValueOnce(true);
       automerge.tryBranchAutomerge.mockReturnValueOnce('failed');
       prWorker.ensurePr.mockReturnValueOnce({});
       prWorker.checkAutoMerge.mockReturnValueOnce(true);
-      config.lockFileErrors = [{}];
       await branchWorker.processBranch(config);
       expect(platform.ensureComment.mock.calls).toHaveLength(1);
       expect(platform.ensureCommentRemoval.mock.calls).toHaveLength(0);
@@ -212,14 +211,13 @@ describe('workers/branch', () => {
         updatedPackageFiles: [{}],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [{}],
         updatedLockFiles: [{}],
       });
       platform.branchExists.mockReturnValueOnce(true);
       automerge.tryBranchAutomerge.mockReturnValueOnce('failed');
       prWorker.ensurePr.mockReturnValueOnce({});
       prWorker.checkAutoMerge.mockReturnValueOnce(true);
-      config.lockFileErrors = [{}];
       config.releaseTimestamp = '2018-04-26T05:15:51.877Z';
       await branchWorker.processBranch(config);
       expect(platform.ensureComment.mock.calls).toHaveLength(1);
@@ -232,14 +230,13 @@ describe('workers/branch', () => {
         updatedPackageFiles: [{}],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [{}],
         updatedLockFiles: [{}],
       });
       platform.branchExists.mockReturnValueOnce(true);
       automerge.tryBranchAutomerge.mockReturnValueOnce('failed');
       prWorker.ensurePr.mockReturnValueOnce({});
       prWorker.checkAutoMerge.mockReturnValueOnce(true);
-      config.lockFileErrors = [{}];
       config.releaseTimestamp = new Date().toISOString();
       await branchWorker.processBranch(config);
       expect(platform.ensureComment.mock.calls).toHaveLength(1);
@@ -247,30 +244,33 @@ describe('workers/branch', () => {
       expect(prWorker.ensurePr.mock.calls).toHaveLength(1);
       expect(prWorker.checkAutoMerge.mock.calls).toHaveLength(0);
     });
-    it('throws error if lock file errors and new releaseTimestamp', () => {
+    it('throws error if lock file errors and new releaseTimestamp', async () => {
       getUpdated.getUpdatedPackageFiles.mockReturnValueOnce({
         updatedPackageFiles: [{}],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [{}],
         updatedLockFiles: [{}],
       });
       platform.branchExists.mockReturnValueOnce(false);
       automerge.tryBranchAutomerge.mockReturnValueOnce('failed');
       prWorker.ensurePr.mockReturnValueOnce({});
       prWorker.checkAutoMerge.mockReturnValueOnce(true);
-      config.lockFileErrors = [{}];
       config.releaseTimestamp = new Date().toISOString();
-      expect(branchWorker.processBranch(config)).rejects.toThrow(
-        'lockfile-error'
-      );
+      let e;
+      try {
+        await branchWorker.processBranch(config);
+      } catch (err) {
+        e = err;
+      }
+      expect(e.message).toEqual('lockfile-error');
     });
     it('ensures PR and adds lock file error comment recreate closed', async () => {
       getUpdated.getUpdatedPackageFiles.mockReturnValueOnce({
         updatedPackageFiles: [{}],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [{}],
         updatedLockFiles: [{}],
       });
       config.recreateClosed = true;
@@ -278,7 +278,6 @@ describe('workers/branch', () => {
       automerge.tryBranchAutomerge.mockReturnValueOnce('failed');
       prWorker.ensurePr.mockReturnValueOnce({});
       prWorker.checkAutoMerge.mockReturnValueOnce(true);
-      config.lockFileErrors = [{}];
       await branchWorker.processBranch(config);
       expect(platform.ensureComment.mock.calls).toHaveLength(1);
       expect(platform.ensureCommentRemoval.mock.calls).toHaveLength(0);
@@ -296,7 +295,7 @@ describe('workers/branch', () => {
         updatedPackageFiles: [{}],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: true,
+        lockFileErrors: [{}],
         updatedLockFiles: [{}],
       });
       await branchWorker.processBranch(config);
@@ -306,7 +305,7 @@ describe('workers/branch', () => {
         updatedPackageFiles: [{}],
       });
       npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
-        lockFileError: false,
+        lockFileErrors: [],
         updatedLockFiles: [{}],
       });
       platform.branchExists.mockReturnValueOnce(true);
-- 
GitLab