From b200156a01d95c8d1891dbbbe944c602451ab74d Mon Sep 17 00:00:00 2001 From: Hugo Kiyodi Oshiro Date: Tue, 9 Apr 2024 10:32:34 +0200 Subject: [PATCH] Plugins: Show update buttons when instance version is different (#85486) --- .../features/plugins/admin/helpers.test.ts | 29 +++++++++++++++++++ public/app/features/plugins/admin/helpers.ts | 4 +++ 2 files changed, 33 insertions(+) diff --git a/public/app/features/plugins/admin/helpers.test.ts b/public/app/features/plugins/admin/helpers.test.ts index d09682882ab..28771ea77bc 100644 --- a/public/app/features/plugins/admin/helpers.test.ts +++ b/public/app/features/plugins/admin/helpers.test.ts @@ -136,6 +136,35 @@ describe('Plugins/Helpers', () => { config.featureToggles.managedPluginsInstall = oldFeatureTogglesManagedPluginsInstall; config.pluginAdminExternalManageEnabled = oldPluginAdminExternalManageEnabled; }); + + test('plugins should have update when instance version is different from remote version', () => { + const oldFeatureTogglesManagedPluginsInstall = config.featureToggles.managedPluginsInstall; + const oldPluginAdminExternalManageEnabled = config.pluginAdminExternalManageEnabled; + + config.featureToggles.managedPluginsInstall = true; + config.pluginAdminExternalManageEnabled = true; + + const pluginId = 'plugin-1'; + const remotePlugin = getRemotePluginMock({ slug: pluginId, version: '1.0.0' }); + const instancePlugin = { + pluginSlug: pluginId, + version: '0.0.9', + }; + + const merged = mergeLocalsAndRemotes({ + local: [], + remote: [remotePlugin], + instance: [instancePlugin], + }); + const findMerged = (mergedId: string) => merged.find(({ id }) => id === mergedId); + + expect(merged).toHaveLength(1); + expect(findMerged(pluginId)).not.toBeUndefined(); + expect(findMerged(pluginId)?.hasUpdate).toBe(true); + + config.featureToggles.managedPluginsInstall = oldFeatureTogglesManagedPluginsInstall; + config.pluginAdminExternalManageEnabled = oldPluginAdminExternalManageEnabled; + }); }); describe('mergeLocalAndRemote()', () => { diff --git a/public/app/features/plugins/admin/helpers.ts b/public/app/features/plugins/admin/helpers.ts index a6e7b5dff09..a3ad9c38a8d 100644 --- a/public/app/features/plugins/admin/helpers.ts +++ b/public/app/features/plugins/admin/helpers.ts @@ -76,6 +76,10 @@ export function mergeLocalsAndRemotes({ catalogPlugin.hasUpdate && catalogPlugin.installedVersion !== instancePlugin?.version; + if (instancePlugin?.version && instancePlugin?.version !== remotePlugin.version) { + catalogPlugin.hasUpdate = true; + } + catalogPlugin.isUninstallingFromInstance = Boolean(localCounterpart) && !instancesMap.has(remotePlugin.slug); }