From 5a70fa880515a02d77d3980b13a51ec1dbea976e Mon Sep 17 00:00:00 2001
From: Maksim <m.v.sharipov@gmail.com>
Date: Mon, 11 Apr 2022 18:27:56 +0200
Subject: [PATCH] refactor(migrations): gitLabAutomerge and azureAutoComplete
 (#14975)

---
 lib/config/migration.ts                       |  5 --
 .../azure-gitlab-automerge-migration.spec.ts  | 67 +++++++++++++++++++
 .../azure-gitlab-automerge-migration.ts       | 12 ++++
 lib/config/migrations/migrations-service.ts   |  2 +
 4 files changed, 81 insertions(+), 5 deletions(-)
 create mode 100644 lib/config/migrations/custom/azure-gitlab-automerge-migration.spec.ts
 create mode 100644 lib/config/migrations/custom/azure-gitlab-automerge-migration.ts

diff --git a/lib/config/migration.ts b/lib/config/migration.ts
index 38b7637d1a..d7619dbf07 100644
--- a/lib/config/migration.ts
+++ b/lib/config/migration.ts
@@ -189,11 +189,6 @@ export function migrateConfig(config: RenovateConfig): MigratedConfig {
         if (subMigrate.isMigrated) {
           migratedConfig[key] = subMigrate.migratedConfig;
         }
-      } else if (key === 'azureAutoComplete' || key === 'gitLabAutomerge') {
-        if (migratedConfig[key] !== undefined) {
-          migratedConfig.platformAutomerge = migratedConfig[key];
-        }
-        delete migratedConfig[key];
       }
 
       const migratedTemplates = {
diff --git a/lib/config/migrations/custom/azure-gitlab-automerge-migration.spec.ts b/lib/config/migrations/custom/azure-gitlab-automerge-migration.spec.ts
new file mode 100644
index 0000000000..bc581e0848
--- /dev/null
+++ b/lib/config/migrations/custom/azure-gitlab-automerge-migration.spec.ts
@@ -0,0 +1,67 @@
+import { AzureGitLabAutomergeMigration } from './azure-gitlab-automerge-migration';
+
+describe('config/migrations/custom/azure-gitlab-automerge-migration', () => {
+  it('should migrate non undefined gitLabAutomerge', () => {
+    expect(AzureGitLabAutomergeMigration).toMigrate(
+      {
+        gitLabAutomerge: true,
+      },
+      {
+        platformAutomerge: true,
+      }
+    );
+  });
+
+  it('should just remove undefined gitLabAutomerge', () => {
+    expect(AzureGitLabAutomergeMigration).toMigrate(
+      {
+        gitLabAutomerge: undefined,
+      },
+      {}
+    );
+  });
+
+  it('should override platformAutomerge when gitLabAutomerge defined', () => {
+    expect(AzureGitLabAutomergeMigration).toMigrate(
+      {
+        gitLabAutomerge: true,
+        platformAutomerge: false,
+      },
+      {
+        platformAutomerge: true,
+      }
+    );
+  });
+
+  it('should migrate non undefined azureAutoComplete', () => {
+    expect(AzureGitLabAutomergeMigration).toMigrate(
+      {
+        azureAutoComplete: true,
+      },
+      {
+        platformAutomerge: true,
+      }
+    );
+  });
+
+  it('should just remove undefined azureAutoComplete', () => {
+    expect(AzureGitLabAutomergeMigration).toMigrate(
+      {
+        azureAutoComplete: undefined,
+      },
+      {}
+    );
+  });
+
+  it('should override platformAutomerge when azureAutoComplete defined', () => {
+    expect(AzureGitLabAutomergeMigration).toMigrate(
+      {
+        azureAutoComplete: true,
+        platformAutomerge: false,
+      },
+      {
+        platformAutomerge: true,
+      }
+    );
+  });
+});
diff --git a/lib/config/migrations/custom/azure-gitlab-automerge-migration.ts b/lib/config/migrations/custom/azure-gitlab-automerge-migration.ts
new file mode 100644
index 0000000000..ee437d3c79
--- /dev/null
+++ b/lib/config/migrations/custom/azure-gitlab-automerge-migration.ts
@@ -0,0 +1,12 @@
+import { AbstractMigration } from '../base/abstract-migration';
+
+export class AzureGitLabAutomergeMigration extends AbstractMigration {
+  override readonly deprecated = true;
+  override readonly propertyName = /^azureAutoComplete$|^gitLabAutomerge$/;
+
+  override run(value: unknown): void {
+    if (value !== undefined) {
+      this.setHard('platformAutomerge', value);
+    }
+  }
+}
diff --git a/lib/config/migrations/migrations-service.ts b/lib/config/migrations/migrations-service.ts
index 2c5dda0f3b..dc4b214036 100644
--- a/lib/config/migrations/migrations-service.ts
+++ b/lib/config/migrations/migrations-service.ts
@@ -8,6 +8,7 @@ import { AutomergeMigration } from './custom/automerge-migration';
 import { AutomergeMinorMigration } from './custom/automerge-minor-migration';
 import { AutomergePatchMigration } from './custom/automerge-patch-migration';
 import { AutomergeTypeMigration } from './custom/automerge-type-migration';
+import { AzureGitLabAutomergeMigration } from './custom/azure-gitlab-automerge-migration';
 import { BaseBranchMigration } from './custom/base-branch-migration';
 import { BinarySourceMigration } from './custom/binary-source-migration';
 import { BranchNameMigration } from './custom/branch-name-migration';
@@ -77,6 +78,7 @@ export class MigrationsService {
     AutomergeMinorMigration,
     AutomergePatchMigration,
     AutomergeTypeMigration,
+    AzureGitLabAutomergeMigration,
     BaseBranchMigration,
     BinarySourceMigration,
     BranchNameMigration,
-- 
GitLab