Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/projects/settings_service_desk/services/service_desk_service_spec.js')
-rw-r--r--spec/frontend/projects/settings_service_desk/services/service_desk_service_spec.js129
1 files changed, 129 insertions, 0 deletions
diff --git a/spec/frontend/projects/settings_service_desk/services/service_desk_service_spec.js b/spec/frontend/projects/settings_service_desk/services/service_desk_service_spec.js
new file mode 100644
index 00000000000..f9e4d55245a
--- /dev/null
+++ b/spec/frontend/projects/settings_service_desk/services/service_desk_service_spec.js
@@ -0,0 +1,129 @@
+import AxiosMockAdapter from 'axios-mock-adapter';
+import ServiceDeskService from '~/projects/settings_service_desk/services/service_desk_service';
+import axios from '~/lib/utils/axios_utils';
+import httpStatusCodes from '~/lib/utils/http_status';
+
+describe('ServiceDeskService', () => {
+ const endpoint = `/gitlab-org/gitlab-test/service_desk`;
+ const dummyResponse = { message: 'Dummy response' };
+ const errorMessage = 'Network Error';
+ let axiosMock;
+ let service;
+
+ beforeEach(() => {
+ axiosMock = new AxiosMockAdapter(axios);
+ service = new ServiceDeskService(endpoint);
+ });
+
+ afterEach(() => {
+ axiosMock.restore();
+ });
+
+ describe('fetchIncomingEmail', () => {
+ it('makes a request to fetch incoming email', () => {
+ axiosMock.onGet(endpoint).replyOnce(httpStatusCodes.OK, dummyResponse);
+
+ return service.fetchIncomingEmail().then(response => {
+ expect(response.data).toEqual(dummyResponse);
+ });
+ });
+
+ it('fails on error response', () => {
+ axiosMock.onGet(endpoint).networkError();
+
+ return service.fetchIncomingEmail().catch(error => {
+ expect(error.message).toBe(errorMessage);
+ });
+ });
+ });
+
+ describe('toggleServiceDesk', () => {
+ it('makes a request to set service desk', () => {
+ axiosMock.onPut(endpoint).replyOnce(httpStatusCodes.OK, dummyResponse);
+
+ return service.toggleServiceDesk(true).then(response => {
+ expect(response.data).toEqual(dummyResponse);
+ });
+ });
+
+ it('fails on error response', () => {
+ axiosMock.onPut(endpoint).networkError();
+
+ return service.toggleServiceDesk(true).catch(error => {
+ expect(error.message).toBe(errorMessage);
+ });
+ });
+
+ it('makes a request with the expected body', () => {
+ axiosMock.onPut(endpoint).replyOnce(httpStatusCodes.OK, dummyResponse);
+
+ const spy = jest.spyOn(axios, 'put');
+
+ service.toggleServiceDesk(true);
+
+ expect(spy).toHaveBeenCalledWith(endpoint, {
+ service_desk_enabled: true,
+ });
+
+ spy.mockRestore();
+ });
+ });
+
+ describe('updateTemplate', () => {
+ it('makes a request to update template', () => {
+ axiosMock.onPut(endpoint).replyOnce(httpStatusCodes.OK, dummyResponse);
+
+ return service
+ .updateTemplate(
+ {
+ selectedTemplate: 'Bug',
+ outgoingName: 'GitLab Support Bot',
+ },
+ true,
+ )
+ .then(response => {
+ expect(response.data).toEqual(dummyResponse);
+ });
+ });
+
+ it('fails on error response', () => {
+ axiosMock.onPut(endpoint).networkError();
+
+ return service
+ .updateTemplate(
+ {
+ selectedTemplate: 'Bug',
+ outgoingName: 'GitLab Support Bot',
+ },
+ true,
+ )
+ .catch(error => {
+ expect(error.message).toBe(errorMessage);
+ });
+ });
+
+ it('makes a request with the expected body', () => {
+ axiosMock.onPut(endpoint).replyOnce(httpStatusCodes.OK, dummyResponse);
+
+ const spy = jest.spyOn(axios, 'put');
+
+ service.updateTemplate(
+ {
+ selectedTemplate: 'Bug',
+ outgoingName: 'GitLab Support Bot',
+ projectKey: 'key',
+ },
+ true,
+ );
+
+ expect(spy).toHaveBeenCalledWith(endpoint, {
+ issue_template_key: 'Bug',
+ outgoing_name: 'GitLab Support Bot',
+ project_key: 'key',
+ service_desk_enabled: true,
+ });
+
+ spy.mockRestore();
+ });
+ });
+});