From 2dfae8337d9c0825f2407aa207ef140403f00bc0 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Thu, 12 Apr 2018 14:01:57 +0200
Subject: [PATCH] refactor: enhance repository result details
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

renovateRepository now returns “res” - the result of the current renovation, and “status” - the overall status of the repository.
---
 lib/workers/repository/index.js               | 28 ++++++++++++++++++-
 .../__snapshots__/index.spec.js.snap          | 21 ++++++++++++--
 test/workers/repository/index.spec.js         |  4 +--
 3 files changed, 47 insertions(+), 6 deletions(-)

diff --git a/lib/workers/repository/index.js b/lib/workers/repository/index.js
index 07303cbdca..0c7e57ff74 100644
--- a/lib/workers/repository/index.js
+++ b/lib/workers/repository/index.js
@@ -21,6 +21,7 @@ async function renovateRepository(repoConfig) {
   logger.trace({ config }, 'renovateRepository()');
   let commonConfig;
   let res;
+  let status;
   try {
     config = await initApis(config);
     config = await initRepo(config);
@@ -93,5 +94,30 @@ async function renovateRepository(repoConfig) {
       'Error pruning/cleaning repository'
     );
   }
-  return res;
+  const disabledStatuses = [
+    'archived',
+    'blocked',
+    'disabled',
+    'forbidden',
+    'fork',
+    'no-package-files',
+    'not-found',
+    'renamed',
+    'uninitiated',
+  ];
+  const errorStatuses = ['config-validation', 'error', 'unknown-error'];
+  // istanbul ignore next
+  if (disabledStatuses.includes(res)) {
+    status = 'disabled';
+  } else if (errorStatuses.includes(res)) {
+    status = 'error';
+  } else if (config.repoIsOnboarded) {
+    status = 'enabled';
+  } else {
+    status = 'onboarding';
+    if (res === 'onboarding') {
+      res = 'done';
+    }
+  }
+  return { res, status };
 }
diff --git a/test/workers/repository/__snapshots__/index.spec.js.snap b/test/workers/repository/__snapshots__/index.spec.js.snap
index 4f6c03c792..05596f40b3 100644
--- a/test/workers/repository/__snapshots__/index.spec.js.snap
+++ b/test/workers/repository/__snapshots__/index.spec.js.snap
@@ -1,6 +1,11 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`workers/repository renovateRepository() ensures onboarding pr 1`] = `"onboarding"`;
+exports[`workers/repository renovateRepository() ensures onboarding pr 1`] = `
+Object {
+  "res": "done",
+  "status": "onboarding",
+}
+`;
 
 exports[`workers/repository renovateRepository() ensures onboarding pr 2`] = `
 Array [
@@ -19,6 +24,16 @@ Array [
 ]
 `;
 
-exports[`workers/repository renovateRepository() handles baseBranches 1`] = `"onboarded"`;
+exports[`workers/repository renovateRepository() handles baseBranches 1`] = `
+Object {
+  "res": "done",
+  "status": "enabled",
+}
+`;
 
-exports[`workers/repository renovateRepository() writes 1`] = `"onboarded"`;
+exports[`workers/repository renovateRepository() writes 1`] = `
+Object {
+  "res": "done",
+  "status": "enabled",
+}
+`;
diff --git a/test/workers/repository/index.spec.js b/test/workers/repository/index.spec.js
index 9fd95d8855..722675c5f5 100644
--- a/test/workers/repository/index.spec.js
+++ b/test/workers/repository/index.spec.js
@@ -30,7 +30,7 @@ describe('workers/repository', () => {
         repoIsOnboarded: true,
         branches: [{ type: 'minor' }, { type: 'pin' }],
       });
-      writeUpdates.mockReturnValueOnce('onboarded');
+      writeUpdates.mockReturnValueOnce('done');
       const res = await renovateRepository(config, 'some-token');
       expect(res).toMatchSnapshot();
     });
@@ -64,7 +64,7 @@ describe('workers/repository', () => {
         repoIsOnboarded: true,
         branches: [],
       });
-      writeUpdates.mockReturnValueOnce('onboarded');
+      writeUpdates.mockReturnValueOnce('done');
       const res = await renovateRepository(config, 'some-token');
       expect(res).toMatchSnapshot();
     });
-- 
GitLab