From f1d30708ce9b3c7a89acf9165ff00bbbd5fdfb22 Mon Sep 17 00:00:00 2001 From: Xavier Jouslin de Noray <xavier.jouslindenoray@savoirfairelinux.com> Date: Thu, 3 Aug 2023 10:01:16 -0400 Subject: [PATCH] Id: difference between id and name Change-Id: Id499dd1bf51a1303d97028f89929cbbdc54424a2 --- src/interfaces/plugins.ts | 1 + src/services/plugins_manager.service.ts | 28 ++++++++++++++----------- tests/plugins.controller.test.ts | 5 +++-- tests/plugins.manager.test.ts | 11 +++++++++- 4 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/interfaces/plugins.ts b/src/interfaces/plugins.ts index eb5ab5f..5e67d47 100644 --- a/src/interfaces/plugins.ts +++ b/src/interfaces/plugins.ts @@ -16,6 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ export interface Plugins { + id: string; name: string; version: string; description: string; diff --git a/src/services/plugins_manager.service.ts b/src/services/plugins_manager.service.ts index c896359..9128438 100644 --- a/src/services/plugins_manager.service.ts +++ b/src/services/plugins_manager.service.ts @@ -57,6 +57,7 @@ export class PluginsManager { return this.plugins .map((plugin: Plugins) => { return { + id: plugin.id, name: plugin.name, version: plugin.version, description: plugin.description, @@ -66,11 +67,12 @@ export class PluginsManager { author: plugin.author, }; }) - .filter(plugin => this.isPluginAvailable(plugin.name, arch)); + .filter(plugin => this.isPluginAvailable(plugin.id, arch)); } async getPlugin(id: string): Promise< | { + id: string; name: string; version: string; description: string; @@ -84,11 +86,12 @@ export class PluginsManager { if (this.plugins.length === 0) { await this.setPlugins(); } - const plugin = this.plugins.find((plugin: Plugins) => plugin.name === id); + const plugin = this.plugins.find((plugin: Plugins) => plugin.id === id); return plugin === undefined ? undefined : { + id: plugin.id, name: plugin.name, version: plugin.version, description: plugin.description, @@ -103,7 +106,7 @@ export class PluginsManager { if (this.plugins.length === 0) { await this.setPlugins(); } - const plugin = this.plugins.find((plugin: Plugins) => plugin.name === id); + const plugin = this.plugins.find((plugin: Plugins) => plugin.id === id); if ( plugin === undefined || !this.isPluginAvailable(id, arch) || @@ -117,11 +120,11 @@ export class PluginsManager { '/../..' + process.env.DATA_DIRECTORY + '/' + - plugin.name + + id + '/' + arch + '/' + - plugin.name + + id + '.jpl' ); } @@ -141,6 +144,7 @@ export class PluginsManager { return; } return { + id: plugin.id, name: plugin.name, version: plugin.version, description: plugin.description, @@ -159,13 +163,13 @@ export class PluginsManager { private isPluginAvailable(id: string, arch: string): boolean { const plugin = this.plugins.find((plugin: Plugins) => { - return plugin.name === id && plugin.arches.includes(arch); + return plugin.id === id && plugin.arches.includes(arch); }); return plugin !== undefined; } removePlugin(id: string): void { - this.plugins = this.plugins.filter((plugin: Plugins) => plugin.name !== id); + this.plugins = this.plugins.filter((plugin: Plugins) => plugin.id !== id); } private async readManifest(path: string): Promise<{ @@ -180,7 +184,7 @@ export class PluginsManager { await this.fileManager.readArchive(path, 'manifest.json') ); return { - id: manifest.name, + id: manifest.id === undefined ? manifest.name : manifest.id, name: manifest.name, version: manifest.version, description: manifest.description, @@ -198,7 +202,7 @@ export class PluginsManager { } const plugin = this.plugins.find( (plugin: Plugins) => - plugin.name === id && + plugin.id === id && plugin.arches.includes(arch as string) && arch !== undefined ); @@ -216,11 +220,11 @@ export class PluginsManager { '/../..' + process.env.DATA_DIRECTORY + '/' + - id + + plugin.id + '/' + arch + '/' + - id + + plugin.id + '.jpl', 'data/' + plugin.icon ); @@ -235,7 +239,7 @@ export class PluginsManager { const version = plugin.version; if (version !== undefined) { versions.push({ - id: plugin.name, + id: plugin.id, version, }); } diff --git a/tests/plugins.controller.test.ts b/tests/plugins.controller.test.ts index ac70f94..00a637b 100644 --- a/tests/plugins.controller.test.ts +++ b/tests/plugins.controller.test.ts @@ -47,6 +47,7 @@ describe('Routes', function () { it("should fetch all plugins", (done) => { const expectedPlugins = [ { + id: 'test', name: 'test', version: '', description: '', @@ -88,7 +89,7 @@ describe('Routes', function () { }); it("should fetch plugin details", (done) => { - const expectedPlugin = { name: 'test', version: '', description: '', icon: '', background: '', author: '', timestamp: '' }; + const expectedPlugin = { id: 'test', name: 'test', version: '', description: '', icon: '', author: '', timestamp: '', background: '' }; pluginsManagerServiceStub.getPlugin.resolves(expectedPlugin); request(expressApp) @@ -131,7 +132,7 @@ describe('Routes', function () { it("should download a plugin", (done) => { pluginsManagerServiceStub.getPluginPath.resolves('test'); - const expectedPlugin = { name: 'test', version: '', description: '', icon: '', author: '', timestamp: '', background: '' }; + const expectedPlugin = { id: 'test', name: 'test', version: '', description: '', icon: '', author: '', timestamp: '', background: '' }; pluginsManagerServiceStub.getPlugin.resolves(expectedPlugin); fs.writeFileSync('test', 'test'); diff --git a/tests/plugins.manager.test.ts b/tests/plugins.manager.test.ts index 79a59ff..43a427a 100644 --- a/tests/plugins.manager.test.ts +++ b/tests/plugins.manager.test.ts @@ -42,6 +42,7 @@ describe('Plugins manager service tests', function () { it('should return a list of plugins', async () => { const fakePlugin = [ { + id: 'test', name: 'test', version: '', description: '', @@ -54,6 +55,7 @@ describe('Plugins manager service tests', function () { const expectedPlugin = [ { + id: 'test', name: 'test', version: '', description: '', @@ -72,6 +74,7 @@ describe('Plugins manager service tests', function () { it('should return a plugin', async () => { const plugin = { + id: 'test', name: 'test', version: '1.0.0', description: 'test', @@ -86,7 +89,7 @@ describe('Plugins manager service tests', function () { arches: ["test"], }]; - pluginsManagerService['plugins'] = expected; + pluginsManagerService['plugins'] = expected; const actual = await pluginsManagerService.getPlugin("test"); @@ -100,6 +103,7 @@ describe('Plugins manager service tests', function () { it('should return plugin path', async () => { const plugin = { + id: 'test', name: 'test', version: '1.0.0', description: 'test', @@ -195,6 +199,7 @@ describe('Plugins manager service tests', function () { it('should return true if plugin is available', () => { const plugin = { + id: 'test', name: 'test', version: '1.0.0', description: 'test', @@ -249,6 +254,7 @@ describe('Plugins manager service tests', function () { it('should return the icon content for a valid plugin', async () => { const plugin = { + id: 'test', name: 'test', version: '1.0.0', description: 'test', @@ -285,6 +291,7 @@ describe('Plugins manager service tests', function () { it('should return an array of plugin versions', async () => { const plugins = [ { + id: 'plugin1', name: 'plugin1', version: '1.0.0', description: 'Plugin 1', @@ -295,6 +302,7 @@ describe('Plugins manager service tests', function () { author: 'author1', }, { + id: 'plugin2', name: 'plugin2', version: '2.0.0', description: 'Plugin 2', @@ -305,6 +313,7 @@ describe('Plugins manager service tests', function () { author: 'author2', }, { + id: 'plugin3', name: 'plugin3', version: '3.0.0', description: 'Plugin 3', -- GitLab