diff --git a/__tests__/api.test.js b/__tests__/api.test.js index 31b69913b5..a6e12ecdba 100644 --- a/__tests__/api.test.js +++ b/__tests__/api.test.js @@ -138,4 +138,36 @@ describe('APIClient (api.js)', () => { done(); }); + + test('associateInstanceGroup calls expected http method with expected data', async (done) => { + const createPromise = () => Promise.resolve(); + const mockHttp = ({ post: jest.fn(createPromise) }); + + const api = new APIClient(mockHttp); + const url = 'foo/bar/'; + const id = 1; + await api.associateInstanceGroup(url, id); + + expect(mockHttp.post).toHaveBeenCalledTimes(1); + expect(mockHttp.post.mock.calls[0][0]).toEqual(url); + expect(mockHttp.post.mock.calls[0][1]).toEqual({ id }); + + done(); + }); + + test('disassociateInstanceGroup calls expected http method with expected data', async (done) => { + const createPromise = () => Promise.resolve(); + const mockHttp = ({ post: jest.fn(createPromise) }); + + const api = new APIClient(mockHttp); + const url = 'foo/bar/'; + const id = 1; + await api.disassociateInstanceGroup(url, id); + + expect(mockHttp.post).toHaveBeenCalledTimes(1); + expect(mockHttp.post.mock.calls[0][0]).toEqual(url); + expect(mockHttp.post.mock.calls[0][1]).toEqual({ id, disassociate: true }); + + done(); + }); }); diff --git a/src/api.js b/src/api.js index 1bbb68ce2f..1dc6d5a74b 100644 --- a/src/api.js +++ b/src/api.js @@ -70,6 +70,12 @@ class APIClient { return this.http.get(endpoint); } + updateOrganizationDetails (id, data) { + const endpoint = `${API_ORGANIZATIONS}${id}/`; + + return this.http.patch(endpoint, data); + } + getOrganizationInstanceGroups (id, params = {}) { const endpoint = `${API_ORGANIZATIONS}${id}/instance_groups/`; @@ -113,6 +119,10 @@ class APIClient { associateInstanceGroup (url, id) { return this.http.post(url, { id }); } + + disassociateInstanceGroup (url, id) { + return this.http.post(url, { id, disassociate: true }); + } } export default APIClient;