summaryrefslogtreecommitdiff
path: root/spec/frontend/static_site_editor/services/submit_content_changes_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/static_site_editor/services/submit_content_changes_spec.js')
-rw-r--r--spec/frontend/static_site_editor/services/submit_content_changes_spec.js261
1 files changed, 0 insertions, 261 deletions
diff --git a/spec/frontend/static_site_editor/services/submit_content_changes_spec.js b/spec/frontend/static_site_editor/services/submit_content_changes_spec.js
deleted file mode 100644
index 757611166d7..00000000000
--- a/spec/frontend/static_site_editor/services/submit_content_changes_spec.js
+++ /dev/null
@@ -1,261 +0,0 @@
-import { mockTracking, unmockTracking } from 'helpers/tracking_helper';
-import Api from '~/api';
-import { convertObjectPropsToSnakeCase } from '~/lib/utils/common_utils';
-
-import {
- SUBMIT_CHANGES_BRANCH_ERROR,
- SUBMIT_CHANGES_COMMIT_ERROR,
- SUBMIT_CHANGES_MERGE_REQUEST_ERROR,
- TRACKING_ACTION_CREATE_COMMIT,
- TRACKING_ACTION_CREATE_MERGE_REQUEST,
- SERVICE_PING_TRACKING_ACTION_CREATE_COMMIT,
- SERVICE_PING_TRACKING_ACTION_CREATE_MERGE_REQUEST,
- DEFAULT_FORMATTING_CHANGES_COMMIT_MESSAGE,
- DEFAULT_FORMATTING_CHANGES_COMMIT_DESCRIPTION,
-} from '~/static_site_editor/constants';
-import generateBranchName from '~/static_site_editor/services/generate_branch_name';
-import submitContentChanges from '~/static_site_editor/services/submit_content_changes';
-
-import {
- username,
- projectId,
- commitBranchResponse,
- commitMultipleResponse,
- createMergeRequestResponse,
- mergeRequestMeta,
- sourcePath,
- branch as targetBranch,
- sourceContentYAML as content,
- trackingCategory,
- images,
-} from '../mock_data';
-
-jest.mock('~/static_site_editor/services/generate_branch_name');
-
-describe('submitContentChanges', () => {
- const sourceBranch = 'branch-name';
- let trackingSpy;
- let origPage;
-
- const buildPayload = (overrides = {}) => ({
- username,
- projectId,
- sourcePath,
- targetBranch,
- content,
- images,
- mergeRequestMeta,
- ...overrides,
- });
-
- beforeEach(() => {
- jest.spyOn(Api, 'createBranch').mockResolvedValue({ data: commitBranchResponse });
- jest.spyOn(Api, 'commitMultiple').mockResolvedValue({ data: commitMultipleResponse });
- jest
- .spyOn(Api, 'createProjectMergeRequest')
- .mockResolvedValue({ data: createMergeRequestResponse });
-
- generateBranchName.mockReturnValue(sourceBranch);
-
- origPage = document.body.dataset.page;
- document.body.dataset.page = trackingCategory;
- trackingSpy = mockTracking(document.body.dataset.page, undefined, jest.spyOn);
- });
-
- afterEach(() => {
- document.body.dataset.page = origPage;
- unmockTracking();
- });
-
- it('creates a branch named after the username and target branch', () => {
- return submitContentChanges(buildPayload()).then(() => {
- expect(Api.createBranch).toHaveBeenCalledWith(projectId, {
- ref: targetBranch,
- branch: sourceBranch,
- });
- });
- });
-
- it('notifies error when branch could not be created', () => {
- Api.createBranch.mockRejectedValueOnce();
-
- return expect(submitContentChanges(buildPayload())).rejects.toThrow(
- SUBMIT_CHANGES_BRANCH_ERROR,
- );
- });
-
- describe('committing markdown formatting changes', () => {
- const formattedMarkdown = `formatted ${content}`;
- const commitPayload = {
- branch: sourceBranch,
- commit_message: `${DEFAULT_FORMATTING_CHANGES_COMMIT_MESSAGE}\n\n${DEFAULT_FORMATTING_CHANGES_COMMIT_DESCRIPTION}`,
- actions: [
- {
- action: 'update',
- file_path: sourcePath,
- content: formattedMarkdown,
- },
- ],
- };
-
- it('commits markdown formatting changes in a separate commit', () => {
- return submitContentChanges(buildPayload({ formattedMarkdown })).then(() => {
- expect(Api.commitMultiple).toHaveBeenCalledWith(projectId, commitPayload);
- });
- });
-
- it('does not commit markdown formatting changes when there are none', () => {
- return submitContentChanges(buildPayload()).then(() => {
- expect(Api.commitMultiple.mock.calls).toHaveLength(1);
- expect(Api.commitMultiple.mock.calls[0][1]).not.toMatchObject({
- actions: commitPayload.actions,
- });
- });
- });
- });
-
- it('commits the content changes to the branch when creating branch succeeds', () => {
- return submitContentChanges(buildPayload()).then(() => {
- expect(Api.commitMultiple).toHaveBeenCalledWith(projectId, {
- branch: sourceBranch,
- commit_message: mergeRequestMeta.title,
- actions: [
- {
- action: 'update',
- file_path: sourcePath,
- content,
- },
- {
- action: 'create',
- content: 'image1-content',
- encoding: 'base64',
- file_path: 'path/to/image1.png',
- },
- ],
- });
- });
- });
-
- it('does not commit an image if it has been removed from the content', () => {
- const contentWithoutImages = '## Content without images';
- const payload = buildPayload({ content: contentWithoutImages });
- return submitContentChanges(payload).then(() => {
- expect(Api.commitMultiple).toHaveBeenCalledWith(projectId, {
- branch: sourceBranch,
- commit_message: mergeRequestMeta.title,
- actions: [
- {
- action: 'update',
- file_path: sourcePath,
- content: contentWithoutImages,
- },
- ],
- });
- });
- });
-
- it('notifies error when content could not be committed', () => {
- Api.commitMultiple.mockRejectedValueOnce();
-
- return expect(submitContentChanges(buildPayload())).rejects.toThrow(
- SUBMIT_CHANGES_COMMIT_ERROR,
- );
- });
-
- it('creates a merge request when committing changes succeeds', () => {
- return submitContentChanges(buildPayload()).then(() => {
- const { title, description } = mergeRequestMeta;
- expect(Api.createProjectMergeRequest).toHaveBeenCalledWith(
- projectId,
- convertObjectPropsToSnakeCase({
- title,
- description,
- targetBranch,
- sourceBranch,
- }),
- );
- });
- });
-
- it('notifies error when merge request could not be created', () => {
- Api.createProjectMergeRequest.mockRejectedValueOnce();
-
- return expect(submitContentChanges(buildPayload())).rejects.toThrow(
- SUBMIT_CHANGES_MERGE_REQUEST_ERROR,
- );
- });
-
- describe('when changes are submitted successfully', () => {
- let result;
-
- beforeEach(() => {
- return submitContentChanges(buildPayload()).then((_result) => {
- result = _result;
- });
- });
-
- it('returns the branch name', () => {
- expect(result).toMatchObject({ branch: { label: sourceBranch } });
- });
-
- it('returns commit short id and web url', () => {
- expect(result).toMatchObject({
- commit: {
- label: commitMultipleResponse.short_id,
- url: commitMultipleResponse.web_url,
- },
- });
- });
-
- it('returns merge request iid and web url', () => {
- expect(result).toMatchObject({
- mergeRequest: {
- label: createMergeRequestResponse.iid,
- url: createMergeRequestResponse.web_url,
- },
- });
- });
- });
-
- describe('sends the correct tracking event', () => {
- beforeEach(() => {
- return submitContentChanges(buildPayload());
- });
-
- it('for committing changes', () => {
- expect(trackingSpy).toHaveBeenCalledWith(
- document.body.dataset.page,
- TRACKING_ACTION_CREATE_COMMIT,
- );
- });
-
- it('for creating a merge request', () => {
- expect(trackingSpy).toHaveBeenCalledWith(
- document.body.dataset.page,
- TRACKING_ACTION_CREATE_MERGE_REQUEST,
- );
- });
- });
-
- describe('sends the correct Service Ping tracking event', () => {
- beforeEach(() => {
- jest.spyOn(Api, 'trackRedisCounterEvent').mockResolvedValue({ data: '' });
- });
-
- it('for commiting changes', () => {
- return submitContentChanges(buildPayload()).then(() => {
- expect(Api.trackRedisCounterEvent).toHaveBeenCalledWith(
- SERVICE_PING_TRACKING_ACTION_CREATE_COMMIT,
- );
- });
- });
-
- it('for creating a merge request', () => {
- return submitContentChanges(buildPayload()).then(() => {
- expect(Api.trackRedisCounterEvent).toHaveBeenCalledWith(
- SERVICE_PING_TRACKING_ACTION_CREATE_MERGE_REQUEST,
- );
- });
- });
- });
-});