diff options
author | Phil Hughes <me@iamphill.com> | 2019-06-19 13:21:48 +0300 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2019-06-19 13:21:48 +0300 |
commit | 778c705ffd99df0877159c10c39f0ab6964a52a7 (patch) | |
tree | c11f89870db485e6cd619036b2114ecc58e9f862 | |
parent | 8716eb0cef94dbbaab5821aa693a9d92fa9f37e8 (diff) |
Added forked projects API call function
Part of https://gitlab.com/gitlab-org/gitlab-ce/issues/58583
-rw-r--r-- | app/assets/javascripts/api.js | 16 | ||||
-rw-r--r-- | spec/frontend/api_spec.js | 23 |
2 files changed, 39 insertions, 0 deletions
diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index 7cebb88f3a4..4f66a5d080c 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -12,6 +12,7 @@ const Api = { groupProjectsPath: '/api/:version/groups/:id/projects.json', projectsPath: '/api/:version/projects.json', projectPath: '/api/:version/projects/:id', + forkedProjectsPath: '/api/:version/projects/:id/forks', projectLabelsPath: '/:namespace_path/:project_path/-/labels', projectMergeRequestsPath: '/api/:version/projects/:id/merge_requests', projectMergeRequestPath: '/api/:version/projects/:id/merge_requests/:mrid', @@ -114,6 +115,21 @@ const Api = { }, /** + * Get all projects for a forked relationship to a specified project + * @param {string} projectPath - Path or ID of a project + * @param {Object} params - Get request parameters + * @returns {Promise} - Request promise + */ + projectForks(projectPath, params) { + const url = Api.buildUrl(Api.forkedProjectsPath).replace( + ':id', + encodeURIComponent(projectPath), + ); + + return axios.get(url, { params }); + }, + + /** * Get all Merge Requests for a project, eventually filtering based on * supplied parameters * @param projectPath diff --git a/spec/frontend/api_spec.js b/spec/frontend/api_spec.js index 6010488d9e0..0188d12a57d 100644 --- a/spec/frontend/api_spec.js +++ b/spec/frontend/api_spec.js @@ -474,4 +474,27 @@ describe('Api', () => { .catch(done.fail); }); }); + + describe('projectForks', () => { + it('gets forked projects', done => { + const dummyProjectPath = 'gitlab-org/gitlab-ce'; + const expectedUrl = `${dummyUrlRoot}/api/${dummyApiVersion}/projects/${encodeURIComponent( + dummyProjectPath, + )}/forks`; + + jest.spyOn(axios, 'get'); + + mock.onGet(expectedUrl).replyOnce(200, ['fork']); + + Api.projectForks(dummyProjectPath, { visibility: 'private' }) + .then(({ data }) => { + expect(data).toEqual(['fork']); + expect(axios.get).toHaveBeenCalledWith(expectedUrl, { + params: { visibility: 'private' }, + }); + }) + .then(done) + .catch(done.fail); + }); + }); }); |