Skip to content

Commit b200156

Browse files
authored
Plugins: Show update buttons when instance version is different (#85486)
1 parent 0bdb965 commit b200156

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

public/app/features/plugins/admin/helpers.test.ts

+29
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,35 @@ describe('Plugins/Helpers', () => {
136136
config.featureToggles.managedPluginsInstall = oldFeatureTogglesManagedPluginsInstall;
137137
config.pluginAdminExternalManageEnabled = oldPluginAdminExternalManageEnabled;
138138
});
139+
140+
test('plugins should have update when instance version is different from remote version', () => {
141+
const oldFeatureTogglesManagedPluginsInstall = config.featureToggles.managedPluginsInstall;
142+
const oldPluginAdminExternalManageEnabled = config.pluginAdminExternalManageEnabled;
143+
144+
config.featureToggles.managedPluginsInstall = true;
145+
config.pluginAdminExternalManageEnabled = true;
146+
147+
const pluginId = 'plugin-1';
148+
const remotePlugin = getRemotePluginMock({ slug: pluginId, version: '1.0.0' });
149+
const instancePlugin = {
150+
pluginSlug: pluginId,
151+
version: '0.0.9',
152+
};
153+
154+
const merged = mergeLocalsAndRemotes({
155+
local: [],
156+
remote: [remotePlugin],
157+
instance: [instancePlugin],
158+
});
159+
const findMerged = (mergedId: string) => merged.find(({ id }) => id === mergedId);
160+
161+
expect(merged).toHaveLength(1);
162+
expect(findMerged(pluginId)).not.toBeUndefined();
163+
expect(findMerged(pluginId)?.hasUpdate).toBe(true);
164+
165+
config.featureToggles.managedPluginsInstall = oldFeatureTogglesManagedPluginsInstall;
166+
config.pluginAdminExternalManageEnabled = oldPluginAdminExternalManageEnabled;
167+
});
139168
});
140169

141170
describe('mergeLocalAndRemote()', () => {

public/app/features/plugins/admin/helpers.ts

+4
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ export function mergeLocalsAndRemotes({
7676
catalogPlugin.hasUpdate &&
7777
catalogPlugin.installedVersion !== instancePlugin?.version;
7878

79+
if (instancePlugin?.version && instancePlugin?.version !== remotePlugin.version) {
80+
catalogPlugin.hasUpdate = true;
81+
}
82+
7983
catalogPlugin.isUninstallingFromInstance = Boolean(localCounterpart) && !instancesMap.has(remotePlugin.slug);
8084
}
8185

0 commit comments

Comments
 (0)