From 9400d6f7c1f18ad1b4f606f5b963a8030a4bd80e Mon Sep 17 00:00:00 2001 From: printempw Date: Sat, 11 Aug 2018 16:52:06 +0800 Subject: [PATCH] Retrieve plugin dependencies from datatable --- app/Http/Controllers/PluginController.php | 3 -- .../assets/src/js/__tests__/admin.test.js | 29 ++++++++++--------- resources/assets/src/js/admin/plugins.js | 10 +++---- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/app/Http/Controllers/PluginController.php b/app/Http/Controllers/PluginController.php index a3fde505..f4eaca94 100644 --- a/app/Http/Controllers/PluginController.php +++ b/app/Http/Controllers/PluginController.php @@ -71,9 +71,6 @@ class PluginController extends Controller return json(trans('admin.plugins.operations.enabled', ['plugin' => $plugin->title]), 0); - case 'requirements': - return json($this->getPluginDependencies($plugin)); - case 'disable': $plugins->disable($name); diff --git a/resources/assets/src/js/__tests__/admin.test.js b/resources/assets/src/js/__tests__/admin.test.js index 5871cff7..84f6a5eb 100644 --- a/resources/assets/src/js/__tests__/admin.test.js +++ b/resources/assets/src/js/__tests__/admin.test.js @@ -407,16 +407,18 @@ describe('tests for "plugins" module', () => { it('enable a plugin', async () => { const fetch = jest.fn() - .mockReturnValueOnce(Promise.resolve({ requirements: [] })) - .mockReturnValueOnce(Promise.resolve({ requirements: [] })) .mockReturnValueOnce(Promise.resolve({ errno: 0, msg: 'success' })) - .mockReturnValueOnce(Promise.resolve({ - isRequirementsSatisfied: false, - requirements: { 'a': '^1.1.0', 'b': '^2.1.0', 'c': '^3.3.0' }, - unsatisfiedRequirements: { 'c': '^3.3.0' } - })) .mockReturnValueOnce(Promise.resolve({ errno: 1, msg: 'notice', reason: ['reason1', 'reason2'] })) .mockReturnValueOnce(Promise.reject()); + const getPluginDependencies = jest.fn() + .mockReturnValueOnce({ dependencies: { requirements: [] } }) + .mockReturnValue({ + dependencies: { + isRequirementsSatisfied: false, + requirements: { 'a': '^1.1.0', 'b': '^2.1.0', 'c': '^3.3.0' }, + unsatisfiedRequirements: { 'c': '^3.3.0' } + } + }); const url = jest.fn(path => path); const swal = jest.fn() .mockReturnValueOnce(Promise.reject()) @@ -435,23 +437,22 @@ describe('tests for "plugins" module', () => { $.pluginsTable = { ajax: { reload: reloadTable - } + }, + row: () => ({ + data: getPluginDependencies + }) }; const enablePlugin = require(modulePath).enablePlugin; await enablePlugin('plugin'); - expect(fetch).toBeCalledWith({ - type: 'POST', - url: 'admin/plugins/manage?action=requirements&name=plugin', - dataType: 'json' - }); + expect(getPluginDependencies).toBeCalled(); expect(swal).toBeCalledWith({ text: 'admin.noDependenciesNotice', type: 'warning', showCancelButton: true }); - expect(fetch.mock.calls.length).toBe(1); + expect(fetch).not.toBeCalled(); await enablePlugin('plugin'); expect(fetch).toBeCalledWith({ diff --git a/resources/assets/src/js/admin/plugins.js b/resources/assets/src/js/admin/plugins.js index 43993106..d0d85a4a 100644 --- a/resources/assets/src/js/admin/plugins.js +++ b/resources/assets/src/js/admin/plugins.js @@ -82,12 +82,10 @@ const pluginsTableColumnDefs = [ ]; async function enablePlugin(name) { + const dataTable = $.pluginsTable || $.marketTable; + try { - const { requirements } = await fetch({ - type: 'POST', - url: url(`admin/plugins/manage?action=requirements&name=${name}`), - dataType: 'json' - }); + const { requirements } = dataTable.row(`#plugin-${name}`).data().dependencies; if (requirements.length === 0) { await swal({ @@ -106,7 +104,7 @@ async function enablePlugin(name) { if (errno === 0) { toastr.success(msg); - $.pluginsTable.ajax.reload(null, false); + dataTable.ajax.reload(null, false); } else { swal({ type: 'warning', html: `

${msg}

` }); }