From 576f38efdcb0ffdb161fe1fa72176d065c7f7d49 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Fri, 16 Feb 2018 16:10:58 +0100
Subject: [PATCH] fix: use isUmergeable instead of mergeable

---
 lib/platform/github/index.js                          |  4 ++--
 lib/workers/pr/index.js                               |  2 +-
 test/platform/github/__snapshots__/index.spec.js.snap |  2 ++
 test/platform/github/index.spec.js                    | 10 ++++++++--
 test/workers/pr/index.spec.js                         |  6 +-----
 5 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/lib/platform/github/index.js b/lib/platform/github/index.js
index cc72538a07..8ae4bc5270 100644
--- a/lib/platform/github/index.js
+++ b/lib/platform/github/index.js
@@ -766,8 +766,8 @@ async function getPr(prNo) {
   // Harmonise PR values
   pr.displayNumber = `Pull Request #${pr.number}`;
   if (pr.state === 'open') {
-    if (pr.mergeable_state === 'dirty') {
-      logger.debug(`PR mergeable state is dirty`);
+    if (!pr.mergeable || pr.mergeable_state === 'dirty') {
+      logger.debug(`PR is not mergeable`);
       pr.isUnmergeable = true;
     }
     if (pr.commits === 1) {
diff --git a/lib/workers/pr/index.js b/lib/workers/pr/index.js
index 6c49115cbb..cccab2c7ce 100644
--- a/lib/workers/pr/index.js
+++ b/lib/workers/pr/index.js
@@ -335,7 +335,7 @@ async function checkAutoMerge(pr, config) {
   if (config.automerge) {
     logger.info('PR is configured for automerge');
     // Return if PR not ready for automerge
-    if (pr.mergeable !== true) {
+    if (pr.isUnmergeable) {
       logger.info('PR is not mergeable');
       logger.debug({ pr });
       return false;
diff --git a/test/platform/github/__snapshots__/index.spec.js.snap b/test/platform/github/__snapshots__/index.spec.js.snap
index 8ac0e42395..a4ae36f632 100644
--- a/test/platform/github/__snapshots__/index.spec.js.snap
+++ b/test/platform/github/__snapshots__/index.spec.js.snap
@@ -435,6 +435,7 @@ Object {
     "sha": "1234",
   },
   "displayNumber": "Pull Request #1",
+  "mergeable": true,
   "number": 1,
   "state": "closed",
 }
@@ -464,6 +465,7 @@ Object {
   "commits": 1,
   "displayNumber": "Pull Request #1",
   "isStale": true,
+  "mergeable": true,
   "number": 1,
   "state": "open",
 }
diff --git a/test/platform/github/index.spec.js b/test/platform/github/index.spec.js
index f91dee47a3..7b840d9568 100644
--- a/test/platform/github/index.spec.js
+++ b/test/platform/github/index.spec.js
@@ -1164,7 +1164,7 @@ describe('platform/github', () => {
       expect(pr).toBe(null);
     });
     [
-      { number: 1, state: 'closed', base: { sha: '1234' } },
+      { number: 1, state: 'closed', base: { sha: '1234' }, mergeable: true },
       {
         number: 1,
         state: 'open',
@@ -1172,7 +1172,13 @@ describe('platform/github', () => {
         base: { sha: '1234' },
         commits: 1,
       },
-      { number: 1, state: 'open', base: { sha: '5678' }, commits: 1 },
+      {
+        number: 1,
+        state: 'open',
+        base: { sha: '5678' },
+        commits: 1,
+        mergeable: true,
+      },
     ].forEach((body, i) => {
       it(`should return a PR object - ${i}`, async () => {
         await initRepo({ repository: 'some/repo', token: 'token' });
diff --git a/test/workers/pr/index.spec.js b/test/workers/pr/index.spec.js
index 8f6c684d32..076221c848 100644
--- a/test/workers/pr/index.spec.js
+++ b/test/workers/pr/index.spec.js
@@ -48,7 +48,6 @@ describe('workers/pr', () => {
     it('should automerge if enabled and pr is mergeable', async () => {
       config.automerge = true;
       pr.canRebase = true;
-      pr.mergeable = true;
       platform.getBranchStatus.mockReturnValueOnce('success');
       await prWorker.checkAutoMerge(pr, config);
       expect(platform.mergePr.mock.calls.length).toBe(1);
@@ -56,28 +55,25 @@ describe('workers/pr', () => {
     it('should not automerge if enabled and pr is mergeable but cannot rebase', async () => {
       config.automerge = true;
       pr.canRebase = false;
-      pr.mergeable = true;
       platform.getBranchStatus.mockReturnValueOnce('success');
       await prWorker.checkAutoMerge(pr, config);
       expect(platform.mergePr.mock.calls.length).toBe(0);
     });
     it('should not automerge if enabled and pr is mergeable but branch status is not success', async () => {
       config.automerge = true;
-      pr.mergeable = true;
       platform.getBranchStatus.mockReturnValueOnce('pending');
       await prWorker.checkAutoMerge(pr, config);
       expect(platform.mergePr.mock.calls.length).toBe(0);
     });
     it('should not automerge if enabled and pr is mergeable but unstable', async () => {
       config.automerge = true;
-      pr.mergeable = true;
       pr.mergeable_state = 'unstable';
       await prWorker.checkAutoMerge(pr, config);
       expect(platform.mergePr.mock.calls.length).toBe(0);
     });
     it('should not automerge if enabled and pr is unmergeable', async () => {
       config.automerge = true;
-      pr.mergeable = false;
+      pr.isUnmergeable = true;
       await prWorker.checkAutoMerge(pr, config);
       expect(platform.mergePr.mock.calls.length).toBe(0);
     });
-- 
GitLab