diff options
Diffstat (limited to 'spec/frontend/api_spec.js')
-rw-r--r-- | spec/frontend/api_spec.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/spec/frontend/api_spec.js b/spec/frontend/api_spec.js index 3ae0d06162d..9924525929b 100644 --- a/spec/frontend/api_spec.js +++ b/spec/frontend/api_spec.js @@ -421,6 +421,25 @@ describe('Api', () => { }); }); + describe('addProjectIssueAsTodo', () => { + it('adds issue ID as a todo', () => { + const projectId = 1; + const issueIid = 11; + const expectedUrl = `${dummyUrlRoot}/api/${dummyApiVersion}/projects/1/issues/11/todo`; + mock.onPost(expectedUrl).reply(200, { + id: 112, + project: { + id: 1, + }, + }); + + return Api.addProjectIssueAsTodo(projectId, issueIid).then(({ data }) => { + expect(data.id).toBe(112); + expect(data.project.id).toBe(projectId); + }); + }); + }); + describe('newLabel', () => { it('creates a new label', done => { const namespace = 'some namespace'; @@ -672,6 +691,27 @@ describe('Api', () => { }); }); + describe('pipelineJobs', () => { + it('fetches the jobs for a given pipeline', done => { + const projectId = 123; + const pipelineId = 456; + const expectedUrl = `${dummyUrlRoot}/api/${dummyApiVersion}/projects/${projectId}/pipelines/${pipelineId}/jobs`; + const payload = [ + { + name: 'test', + }, + ]; + mock.onGet(expectedUrl).reply(httpStatus.OK, payload); + + Api.pipelineJobs(projectId, pipelineId) + .then(({ data }) => { + expect(data).toEqual(payload); + }) + .then(done) + .catch(done.fail); + }); + }); + describe('createBranch', () => { it('creates new branch', done => { const ref = 'master'; @@ -1152,4 +1192,44 @@ describe('Api', () => { }); }); }); + + describe('trackRedisHllUserEvent', () => { + const expectedUrl = `${dummyUrlRoot}/api/${dummyApiVersion}/usage_data/increment_unique_users`; + + const event = 'dummy_event'; + const postData = { event }; + const headers = { + 'Content-Type': 'application/json', + }; + + describe('when usage data increment unique users is called with feature flag disabled', () => { + beforeEach(() => { + gon.features = { ...gon.features, usageDataApi: false }; + }); + + it('returns null', () => { + jest.spyOn(axios, 'post'); + mock.onPost(expectedUrl).replyOnce(httpStatus.OK, true); + + expect(axios.post).toHaveBeenCalledTimes(0); + expect(Api.trackRedisHllUserEvent(event)).toEqual(null); + }); + }); + + describe('when usage data increment unique users is called', () => { + beforeEach(() => { + gon.features = { ...gon.features, usageDataApi: true }; + }); + + it('resolves the Promise', () => { + jest.spyOn(axios, 'post'); + mock.onPost(expectedUrl, { event }).replyOnce(httpStatus.OK, true); + + return Api.trackRedisHllUserEvent(event).then(({ data }) => { + expect(data).toEqual(true); + expect(axios.post).toHaveBeenCalledWith(expectedUrl, postData, { headers }); + }); + }); + }); + }); }); |