diff options
-rw-r--r-- | doc/ci/environments.md | 4 | ||||
-rw-r--r-- | doc/ci/examples/deployment/README.md | 4 | ||||
-rw-r--r-- | doc/user/group/index.md | 2 | ||||
-rw-r--r-- | doc/user/project/clusters/add_remove_clusters.md | 15 | ||||
-rw-r--r-- | spec/frontend/issue_show/helpers.js | 10 | ||||
-rw-r--r-- | spec/frontend/notes/components/comment_form_spec.js | 331 | ||||
-rw-r--r-- | spec/frontend/notes/components/discussion_actions_spec.js | 2 | ||||
-rw-r--r-- | spec/frontend/notes/components/discussion_notes_spec.js | 6 | ||||
-rw-r--r-- | spec/frontend/notes/components/note_app_spec.js | 2 | ||||
-rw-r--r-- | spec/frontend/notes/mock_data.js | 1255 | ||||
-rw-r--r-- | spec/frontend/vue_shared/components/notes/placeholder_note_spec.js | 2 | ||||
-rw-r--r-- | spec/javascripts/issue_show/helpers.js | 11 | ||||
-rw-r--r-- | spec/javascripts/notes/components/comment_form_spec.js | 301 | ||||
-rw-r--r-- | spec/javascripts/notes/mock_data.js | 1256 |
14 files changed, 1621 insertions, 1580 deletions
diff --git a/doc/ci/environments.md b/doc/ci/environments.md index cd6f810674b..6d620722608 100644 --- a/doc/ci/environments.md +++ b/doc/ci/environments.md @@ -294,8 +294,8 @@ For the value of: We have used `$CI_ENVIRONMENT_SLUG` here because it is guaranteed to be unique. If you're using a workflow like [GitLab Flow](../topics/gitlab_flow.md), collisions are unlikely and you may prefer environment names to be more closely based on the - branch name. In that case, you could use `$CI_COMMIT_REF_SLUG` in `environment:url` in - the example above: `https://$CI_COMMIT_REF_SLUG.example.com`, which would give a URL + branch name. In that case, you could use `$CI_COMMIT_REF_NAME` in `environment:url` in + the example above: `https://$CI_COMMIT_REF_NAME.example.com`, which would give a URL of `https://100-do-the-thing.example.com`. NOTE: **Note:** diff --git a/doc/ci/examples/deployment/README.md b/doc/ci/examples/deployment/README.md index afe02e0a7d8..7af797f1851 100644 --- a/doc/ci/examples/deployment/README.md +++ b/doc/ci/examples/deployment/README.md @@ -35,8 +35,8 @@ apt-get install ruby-dev The Dpl provides support for vast number of services, including: Heroku, Cloud Foundry, AWS/S3, and more. To use it simply define provider and any additional parameters required by the provider. -For example if you want to use it to deploy your application to heroku, you need to specify `heroku` as provider, specify `api-key` and `app`. -There's more and all possible parameters can be found here: <https://github.com/travis-ci/dpl#heroku>. +For example if you want to use it to deploy your application to Heroku, you need to specify `heroku` as provider, specify `api-key` and `app`. +All possible parameters can be found here: <https://github.com/travis-ci/dpl#heroku-api>. ```yaml staging: diff --git a/doc/user/group/index.md b/doc/user/group/index.md index 03f5920dc37..934fbb28a6c 100644 --- a/doc/user/group/index.md +++ b/doc/user/group/index.md @@ -353,7 +353,7 @@ content. Restriction currently applies to: - UI. -- API access. +- [From GitLab 12.3](https://gitlab.com/gitlab-org/gitlab/issues/12874), API access. - [From GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/issues/32113), Git actions via SSH. To avoid accidental lock-out, admins and group owners are are able to access diff --git a/doc/user/project/clusters/add_remove_clusters.md b/doc/user/project/clusters/add_remove_clusters.md index 85f276ae5f9..549dd4dd916 100644 --- a/doc/user/project/clusters/add_remove_clusters.md +++ b/doc/user/project/clusters/add_remove_clusters.md @@ -119,7 +119,7 @@ GitLab supports: - Creating a new GKE cluster using the GitLab UI. - Providing credentials to add an [existing Kubernetes cluster](#add-existing-cluster). -Starting from [GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/issues/25925), all the GKE clusters provisioned by GitLab are [VPC-Native](https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips). +Starting from [GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/issues/25925), all the GKE clusters provisioned by GitLab are [VPC-native](https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips). NOTE: **Note:** The [Google authentication integration](../../../integration/google.md) must @@ -281,6 +281,19 @@ To add an existing Kubernetes cluster to your project: kubectl apply -f gitlab-admin-service-account.yaml ``` + You will need the `container.clusterRoleBindings.create` permission + to create cluster-level roles. If you do not have this permission, + you can alternatively enable Basic Authentication and then run the + `kubectl apply` command as an admin: + + ```bash + kubectl apply -f gitlab-admin-service-account.yaml --username=admin --password=<password> + ``` + + NOTE: **Note:** + Basic Authentication can be turned on and the password credentials + can be obtained using the Google Cloud Console. + Output: ```bash diff --git a/spec/frontend/issue_show/helpers.js b/spec/frontend/issue_show/helpers.js new file mode 100644 index 00000000000..5d2ced98ae4 --- /dev/null +++ b/spec/frontend/issue_show/helpers.js @@ -0,0 +1,10 @@ +// eslint-disable-next-line import/prefer-default-export +export const keyboardDownEvent = (code, metaKey = false, ctrlKey = false) => { + const e = new CustomEvent('keydown'); + + e.keyCode = code; + e.metaKey = metaKey; + e.ctrlKey = ctrlKey; + + return e; +}; diff --git a/spec/frontend/notes/components/comment_form_spec.js b/spec/frontend/notes/components/comment_form_spec.js new file mode 100644 index 00000000000..45b99b71e06 --- /dev/null +++ b/spec/frontend/notes/components/comment_form_spec.js @@ -0,0 +1,331 @@ +import $ from 'jquery'; +import { mount } from '@vue/test-utils'; +import MockAdapter from 'axios-mock-adapter'; +import Autosize from 'autosize'; +import axios from '~/lib/utils/axios_utils'; +import createStore from '~/notes/stores'; +import CommentForm from '~/notes/components/comment_form.vue'; +import * as constants from '~/notes/constants'; +import { refreshUserMergeRequestCounts } from '~/commons/nav/user_merge_requests'; +import { trimText } from 'helpers/text_helper'; +import { keyboardDownEvent } from '../../issue_show/helpers'; +import { + loggedOutnoteableData, + notesDataMock, + userDataMock, + noteableDataMock, +} from '../../notes/mock_data'; + +jest.mock('autosize'); +jest.mock('~/commons/nav/user_merge_requests'); +jest.mock('~/gl_form'); + +describe('issue_comment_form component', () => { + let store; + let wrapper; + let axiosMock; + + const setupStore = (userData, noteableData) => { + store.dispatch('setUserData', userData); + store.dispatch('setNoteableData', noteableData); + store.dispatch('setNotesData', notesDataMock); + }; + + const mountComponent = (noteableType = 'issue') => { + wrapper = mount(CommentForm, { + propsData: { + noteableType, + }, + store, + sync: false, + }); + }; + + beforeEach(() => { + axiosMock = new MockAdapter(axios); + store = createStore(); + }); + + afterEach(() => { + axiosMock.restore(); + wrapper.destroy(); + jest.clearAllMocks(); + }); + + describe('user is logged in', () => { + beforeEach(() => { + setupStore(userDataMock, noteableDataMock); + + mountComponent(); + }); + + it('should render user avatar with link', () => { + expect(wrapper.find('.timeline-icon .user-avatar-link').attributes('href')).toEqual( + userDataMock.path, + ); + }); + + describe('handleSave', () => { + it('should request to save note when note is entered', () => { + wrapper.vm.note = 'hello world'; + jest.spyOn(wrapper.vm, 'saveNote').mockReturnValue(new Promise(() => {})); + jest.spyOn(wrapper.vm, 'resizeTextarea'); + jest.spyOn(wrapper.vm, 'stopPolling'); + + wrapper.vm.handleSave(); + + expect(wrapper.vm.isSubmitting).toEqual(true); + expect(wrapper.vm.note).toEqual(''); + expect(wrapper.vm.saveNote).toHaveBeenCalled(); + expect(wrapper.vm.stopPolling).toHaveBeenCalled(); + expect(wrapper.vm.resizeTextarea).toHaveBeenCalled(); + }); + + it('should toggle issue state when no note', () => { + jest.spyOn(wrapper.vm, 'toggleIssueState'); + + wrapper.vm.handleSave(); + + expect(wrapper.vm.toggleIssueState).toHaveBeenCalled(); + }); + + it('should disable action button whilst submitting', done => { + const saveNotePromise = Promise.resolve(); + wrapper.vm.note = 'hello world'; + jest.spyOn(wrapper.vm, 'saveNote').mockReturnValue(saveNotePromise); + jest.spyOn(wrapper.vm, 'stopPolling'); + + const actionButton = wrapper.find('.js-action-button'); + + wrapper.vm.handleSave(); + + wrapper.vm + .$nextTick() + .then(() => { + expect(actionButton.vm.disabled).toBeTruthy(); + }) + .then(saveNotePromise) + .then(wrapper.vm.$nextTick) + .then(() => { + expect(actionButton.vm.disabled).toBeFalsy(); + }) + .then(done) + .catch(done.fail); + }); + }); + + describe('textarea', () => { + it('should render textarea with placeholder', () => { + expect(wrapper.find('.js-main-target-form textarea').attributes('placeholder')).toEqual( + 'Write a comment or drag your files here…', + ); + }); + + it('should make textarea disabled while requesting', done => { + const $submitButton = $(wrapper.find('.js-comment-submit-button').element); + wrapper.vm.note = 'hello world'; + jest.spyOn(wrapper.vm, 'stopPolling'); + jest.spyOn(wrapper.vm, 'saveNote').mockReturnValue(new Promise(() => {})); + + wrapper.vm.$nextTick(() => { + // Wait for wrapper.vm.note change triggered. It should enable $submitButton. + $submitButton.trigger('click'); + + wrapper.vm.$nextTick(() => { + // Wait for wrapper.isSubmitting triggered. It should disable textarea. + expect(wrapper.find('.js-main-target-form textarea').attributes('disabled')).toBe( + 'disabled', + ); + done(); + }); + }); + }); + + it('should support quick actions', () => { + expect( + wrapper.find('.js-main-target-form textarea').attributes('data-supports-quick-actions'), + ).toBe('true'); + }); + + it('should link to markdown docs', () => { + const { markdownDocsPath } = notesDataMock; + + expect( + wrapper + .find(`a[href="${markdownDocsPath}"]`) + .text() + .trim(), + ).toEqual('Markdown'); + }); + + it('should link to quick actions docs', () => { + const { quickActionsDocsPath } = notesDataMock; + + expect( + wrapper + .find(`a[href="${quickActionsDocsPath}"]`) + .text() + .trim(), + ).toEqual('quick actions'); + }); + + it('should resize textarea after note discarded', done => { + jest.spyOn(wrapper.vm, 'discard'); + + wrapper.vm.note = 'foo'; + wrapper.vm.discard(); + + wrapper.vm.$nextTick(() => { + expect(Autosize.update).toHaveBeenCalled(); + done(); + }); + }); + + describe('edit mode', () => { + it('should enter edit mode when arrow up is pressed', () => { + jest.spyOn(wrapper.vm, 'editCurrentUserLastNote'); + wrapper.find('.js-main-target-form textarea').value = 'Foo'; + wrapper + .find('.js-main-target-form textarea') + .element.dispatchEvent(keyboardDownEvent(38, true)); + + expect(wrapper.vm.editCurrentUserLastNote).toHaveBeenCalled(); + }); + + it('inits autosave', () => { + expect(wrapper.vm.autosave).toBeDefined(); + expect(wrapper.vm.autosave.key).toEqual(`autosave/Note/Issue/${noteableDataMock.id}`); + }); + }); + + describe('event enter', () => { + it('should save note when cmd+enter is pressed', () => { + jest.spyOn(wrapper.vm, 'handleSave'); + wrapper.find('.js-main-target-form textarea').value = 'Foo'; + wrapper + .find('.js-main-target-form textarea') + .element.dispatchEvent(keyboardDownEvent(13, true)); + + expect(wrapper.vm.handleSave).toHaveBeenCalled(); + }); + + it('should save note when ctrl+enter is pressed', () => { + jest.spyOn(wrapper.vm, 'handleSave'); + wrapper.find('.js-main-target-form textarea').value = 'Foo'; + wrapper + .find('.js-main-target-form textarea') + .element.dispatchEvent(keyboardDownEvent(13, false, true)); + + expect(wrapper.vm.handleSave).toHaveBeenCalled(); + }); + }); + }); + + describe('actions', () => { + it('should be possible to close the issue', () => { + expect( + wrapper + .find('.btn-comment-and-close') + .text() + .trim(), + ).toEqual('Close issue'); + }); + + it('should render comment button as disabled', () => { + expect(wrapper.find('.js-comment-submit-button').attributes('disabled')).toEqual( + 'disabled', + ); + }); + + it('should enable comment button if it has note', done => { + wrapper.vm.note = 'Foo'; + wrapper.vm.$nextTick(() => { + expect(wrapper.find('.js-comment-submit-button').attributes('disabled')).toBeFalsy(); + done(); + }); + }); + + it('should update buttons texts when it has note', done => { + wrapper.vm.note = 'Foo'; + wrapper.vm.$nextTick(() => { + expect( + wrapper + .find('.btn-comment-and-close') + .text() + .trim(), + ).toEqual('Comment & close issue'); + + done(); + }); + }); + + it('updates button text with noteable type', done => { + wrapper.setProps({ noteableType: constants.MERGE_REQUEST_NOTEABLE_TYPE }); + + wrapper.vm.$nextTick(() => { + expect( + wrapper + .find('.btn-comment-and-close') + .text() + .trim(), + ).toEqual('Close merge request'); + done(); + }); + }); + + describe('when clicking close/reopen button', () => { + it('should disable button and show a loading spinner', done => { + const toggleStateButton = wrapper.find('.js-action-button'); + + toggleStateButton.trigger('click'); + wrapper.vm.$nextTick(() => { + expect(toggleStateButton.element.disabled).toEqual(true); + expect(toggleStateButton.find('.js-loading-button-icon').exists()).toBe(true); + + done(); + }); + }); + }); + + describe('when toggling state', () => { + it('should update MR count', done => { + jest.spyOn(wrapper.vm, 'closeIssue').mockResolvedValue(); + + wrapper.vm.toggleIssueState(); + + wrapper.vm.$nextTick(() => { + expect(refreshUserMergeRequestCounts).toHaveBeenCalled(); + + done(); + }); + }); + }); + }); + + describe('issue is confidential', () => { + it('shows information warning', done => { + store.dispatch('setNoteableData', Object.assign(noteableDataMock, { confidential: true })); + wrapper.vm.$nextTick(() => { + expect(wrapper.find('.confidential-issue-warning')).toBeDefined(); + done(); + }); + }); + }); + }); + + describe('user is not logged in', () => { + beforeEach(() => { + setupStore(null, loggedOutnoteableData); + + mountComponent(); + }); + + it('should render signed out widget', () => { + expect(trimText(wrapper.text())).toEqual('Please register or sign in to reply'); + }); + + it('should not render submission form', () => { + expect(wrapper.find('textarea').exists()).toBe(false); + }); + }); +}); diff --git a/spec/frontend/notes/components/discussion_actions_spec.js b/spec/frontend/notes/components/discussion_actions_spec.js index d3c8cf72376..91f9dab2530 100644 --- a/spec/frontend/notes/components/discussion_actions_spec.js +++ b/spec/frontend/notes/components/discussion_actions_spec.js @@ -1,6 +1,6 @@ import createStore from '~/notes/stores'; import { shallowMount, mount, createLocalVue } from '@vue/test-utils'; -import { discussionMock } from '../../../javascripts/notes/mock_data'; +import { discussionMock } from '../../notes/mock_data'; import DiscussionActions from '~/notes/components/discussion_actions.vue'; import ReplyPlaceholder from '~/notes/components/discussion_reply_placeholder.vue'; import ResolveDiscussionButton from '~/notes/components/discussion_resolve_button.vue'; diff --git a/spec/frontend/notes/components/discussion_notes_spec.js b/spec/frontend/notes/components/discussion_notes_spec.js index 58d367077e8..f77236b14bc 100644 --- a/spec/frontend/notes/components/discussion_notes_spec.js +++ b/spec/frontend/notes/components/discussion_notes_spec.js @@ -8,11 +8,7 @@ import PlaceholderSystemNote from '~/vue_shared/components/notes/placeholder_sys import SystemNote from '~/vue_shared/components/notes/system_note.vue'; import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue'; import createStore from '~/notes/stores'; -import { - noteableDataMock, - discussionMock, - notesDataMock, -} from '../../../javascripts/notes/mock_data'; +import { noteableDataMock, discussionMock, notesDataMock } from '../../notes/mock_data'; const localVue = createLocalVue(); diff --git a/spec/frontend/notes/components/note_app_spec.js b/spec/frontend/notes/components/note_app_spec.js index a8ec47fd44f..b0271d30872 100644 --- a/spec/frontend/notes/components/note_app_spec.js +++ b/spec/frontend/notes/components/note_app_spec.js @@ -9,7 +9,7 @@ import createStore from '~/notes/stores'; import '~/behaviors/markdown/render_gfm'; import { setTestTimeout } from 'helpers/timeout'; // TODO: use generated fixture (https://gitlab.com/gitlab-org/gitlab-foss/issues/62491) -import * as mockData from '../../../javascripts/notes/mock_data'; +import * as mockData from '../../notes/mock_data'; setTestTimeout(1000); diff --git a/spec/frontend/notes/mock_data.js b/spec/frontend/notes/mock_data.js new file mode 100644 index 00000000000..dc914ce8355 --- /dev/null +++ b/spec/frontend/notes/mock_data.js @@ -0,0 +1,1255 @@ +// Copied to ee/spec/frontend/notes/mock_data.js + +export const notesDataMock = { + discussionsPath: '/gitlab-org/gitlab-foss/issues/26/discussions.json', + lastFetchedAt: 1501862675, + markdownDocsPath: '/help/user/markdown', + newSessionPath: '/users/sign_in?redirect_to_referer=yes', + notesPath: '/gitlab-org/gitlab-foss/noteable/issue/98/notes', + quickActionsDocsPath: '/help/user/project/quick_actions', + registerPath: '/users/sign_in?redirect_to_referer=yes#register-pane', + prerenderedNotesCount: 1, + closePath: '/twitter/flight/issues/9.json?issue%5Bstate_event%5D=close', + reopenPath: '/twitter/flight/issues/9.json?issue%5Bstate_event%5D=reopen', + canAwardEmoji: true, +}; + +export const userDataMock = { + avatar_url: 'mock_path', + id: 1, + name: 'Root', + path: '/root', + state: 'active', + username: 'root', +}; + +export const noteableDataMock = { + assignees: [], + author_id: 1, + branch_name: null, + confidential: false, + create_note_path: '/gitlab-org/gitlab-foss/notes?target_id=98&target_type=issue', + created_at: '2017-02-07T10:11:18.395Z', + current_user: { + can_create_note: true, + can_update: true, + can_award_emoji: true, + }, + description: '', + due_date: null, + human_time_estimate: null, + human_total_time_spent: null, + id: 98, + iid: 26, + labels: [], + lock_version: null, + milestone: null, + milestone_id: null, + moved_to_id: null, + preview_note_path: '/gitlab-org/gitlab-foss/preview_markdown?target_id=98&target_type=Issue', + project_id: 2, + state: 'opened', + time_estimate: 0, + title: '14', + total_time_spent: 0, + noteable_note_url: '/group/project/merge_requests/1#note_1', + updated_at: '2017-08-04T09:53:01.226Z', + updated_by_id: 1, + web_url: '/gitlab-org/gitlab-foss/issues/26', + noteableType: 'issue', +}; + +export const lastFetchedAt = '1501862675'; + +export const individualNote = { + expanded: true, + id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', + individual_note: true, + notes: [ + { + id: '1390', + attachment: { + url: null, + filename: null, + image: false, + }, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: 'test', + path: '/root', + }, + created_at: '2017-08-01T17: 09: 33.762Z', + updated_at: '2017-08-01T17: 09: 33.762Z', + system: false, + noteable_id: 98, + noteable_type: 'Issue', + type: null, + human_access: 'Owner', + note: 'sdfdsaf', + note_html: "<p dir='auto'>sdfdsaf</p>", + current_user: { + can_edit: true, + can_award_emoji: true, + }, + discussion_id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', + emoji_awardable: true, + award_emoji: [ + { name: 'baseball', user: { id: 1, name: 'Root', username: 'root' } }, + { name: 'art', user: { id: 1, name: 'Root', username: 'root' } }, + ], + toggle_award_path: '/gitlab-org/gitlab-foss/notes/1390/toggle_award_emoji', + noteable_note_url: '/group/project/merge_requests/1#note_1', + note_url: '/group/project/merge_requests/1#note_1', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1390&user_id=1', + path: '/gitlab-org/gitlab-foss/notes/1390', + }, + ], + reply_id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', +}; + +export const note = { + id: '546', + attachment: { + url: null, + filename: null, + image: false, + }, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2017-08-10T15:24:03.087Z', + updated_at: '2017-08-10T15:24:03.087Z', + system: false, + noteable_id: 67, + noteable_type: 'Issue', + noteable_iid: 7, + type: null, + human_access: 'Owner', + note: 'Vel id placeat reprehenderit sit numquam.', + note_html: '<p dir="auto">Vel id placeat reprehenderit sit numquam.</p>', + current_user: { + can_edit: true, + can_award_emoji: true, + }, + discussion_id: 'd3842a451b7f3d9a5dfce329515127b2d29a4cd0', + emoji_awardable: true, + award_emoji: [ + { + name: 'baseball', + user: { + id: 1, + name: 'Administrator', + username: 'root', + }, + }, + { + name: 'bath_tone3', + user: { + id: 1, + name: 'Administrator', + username: 'root', + }, + }, + ], + toggle_award_path: '/gitlab-org/gitlab-foss/notes/546/toggle_award_emoji', + note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/merge_requests/1#note_1', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F7%23note_546&user_id=1', + path: '/gitlab-org/gitlab-foss/notes/546', +}; + +export const discussionMock = { + id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', + reply_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', + expanded: true, + notes: [ + { + id: '1395', + attachment: { + url: null, + filename: null, + image: false, + }, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + created_at: '2017-08-02T10:51:58.559Z', + updated_at: '2017-08-02T10:51:58.559Z', + system: false, + noteable_id: 98, + noteable_type: 'Issue', + type: 'DiscussionNote', + human_access: 'Owner', + note: 'THIS IS A DICUSSSION!', + note_html: "<p dir='auto'>THIS IS A DICUSSSION!</p>", + current_user: { + can_edit: true, + can_award_emoji: true, + can_resolve: true, + }, + discussion_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', + emoji_awardable: true, + award_emoji: [], + noteable_note_url: '/group/project/merge_requests/1#note_1', + toggle_award_path: '/gitlab-org/gitlab-foss/notes/1395/toggle_award_emoji', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1395&user_id=1', + path: '/gitlab-org/gitlab-foss/notes/1395', + }, + { + id: '1396', + attachment: { + url: null, + filename: null, + image: false, + }, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + created_at: '2017-08-02T10:56:50.980Z', + updated_at: '2017-08-03T14:19:35.691Z', + system: false, + noteable_id: 98, + noteable_type: 'Issue', + type: 'DiscussionNote', + human_access: 'Owner', + note: 'sadfasdsdgdsf', + note_html: "<p dir='auto'>sadfasdsdgdsf</p>", + last_edited_at: '2017-08-03T14:19:35.691Z', + last_edited_by: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + current_user: { + can_edit: true, + can_award_emoji: true, + can_resolve: true, + }, + discussion_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', + emoji_awardable: true, + award_emoji: [], + toggle_award_path: '/gitlab-org/gitlab-foss/notes/1396/toggle_award_emoji', + noteable_note_url: '/group/project/merge_requests/1#note_1', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1396&user_id=1', + path: '/gitlab-org/gitlab-foss/notes/1396', + }, + { + id: '1437', + attachment: { + url: null, + filename: null, + image: false, + }, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + created_at: '2017-08-03T18:11:18.780Z', + updated_at: '2017-08-04T09:52:31.062Z', + system: false, + noteable_id: 98, + noteable_type: 'Issue', + type: 'DiscussionNote', + human_access: 'Owner', + note: 'adsfasf Should disappear', + note_html: "<p dir='auto'>adsfasf Should disappear</p>", + last_edited_at: '2017-08-04T09:52:31.062Z', + last_edited_by: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + current_user: { + can_edit: true, + can_award_emoji: true, + can_resolve: true, + }, + discussion_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', + emoji_awardable: true, + award_emoji: [], + noteable_note_url: '/group/project/merge_requests/1#note_1', + toggle_award_path: '/gitlab-org/gitlab-foss/notes/1437/toggle_award_emoji', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1437&user_id=1', + path: '/gitlab-org/gitlab-foss/notes/1437', + }, + ], + individual_note: false, + resolvable: true, + active: true, +}; + +export const loggedOutnoteableData = { + id: '98', + iid: 26, + author_id: 1, + description: '', + lock_version: 1, + milestone_id: null, + state: 'opened', + title: 'asdsa', + updated_by_id: 1, + created_at: '2017-02-07T10:11:18.395Z', + updated_at: '2017-08-08T10:22:51.564Z', + time_estimate: 0, + total_time_spent: 0, + human_time_estimate: null, + human_total_time_spent: null, + milestone: null, + labels: [], + branch_name: null, + confidential: false, + assignees: [ + { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + web_url: 'http://localhost:3000/root', + }, + ], + due_date: null, + moved_to_id: null, + project_id: 2, + web_url: '/gitlab-org/gitlab-foss/issues/26', + current_user: { + can_create_note: false, + can_update: false, + }, + noteable_note_url: '/group/project/merge_requests/1#note_1', + create_note_path: '/gitlab-org/gitlab-foss/notes?target_id=98&target_type=issue', + preview_note_path: '/gitlab-org/gitlab-foss/preview_markdown?target_id=98&target_type=Issue', +}; + +export const collapseNotesMock = [ + { + expanded: true, + id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', + individual_note: true, + notes: [ + { + id: '1390', + attachment: null, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: 'test', + path: '/root', + }, + created_at: '2018-02-26T18:07:41.071Z', + updated_at: '2018-02-26T18:07:41.071Z', + system: true, + system_note_icon_name: 'pencil', + noteable_id: 98, + noteable_type: 'Issue', + type: null, + human_access: 'Owner', + note: 'changed the description', + note_html: '<p dir="auto">changed the description</p>', + current_user: { can_edit: false }, + discussion_id: 'b97fb7bda470a65b3e009377a9032edec0a4dd05', + emoji_awardable: false, + path: '/h5bp/html5-boilerplate/notes/1057', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fh5bp%2Fhtml5-boilerplate%2Fissues%2F10%23note_1057&user_id=1', + }, + ], + }, + { + expanded: true, + id: 'ffde43f25984ad7f2b4275135e0e2846875336c0', + individual_note: true, + notes: [ + { + id: '1391', + attachment: null, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: 'test', + path: '/root', + }, + created_at: '2018-02-26T18:13:24.071Z', + updated_at: '2018-02-26T18:13:24.071Z', + system: true, + system_note_icon_name: 'pencil', + noteable_id: 99, + noteable_type: 'Issue', + type: null, + human_access: 'Owner', + note: 'changed the description', + note_html: '<p dir="auto">changed the description</p>', + current_user: { can_edit: false }, + discussion_id: '3eb958b4d81dec207ec3537a2f3bd8b9f271bb34', + emoji_awardable: false, + path: '/h5bp/html5-boilerplate/notes/1057', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fh5bp%2Fhtml5-boilerplate%2Fissues%2F10%23note_1057&user_id=1', + }, + ], + }, +]; + +export const INDIVIDUAL_NOTE_RESPONSE_MAP = { + GET: { + '/gitlab-org/gitlab-foss/issues/26/discussions.json': [ + { + id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', + reply_id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', + expanded: true, + notes: [ + { + id: '1390', + attachment: { + url: null, + filename: null, + image: false, + }, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + created_at: '2017-08-01T17:09:33.762Z', + updated_at: '2017-08-01T17:09:33.762Z', + system: false, + noteable_id: 98, + noteable_type: 'Issue', + type: null, + human_access: 'Owner', + note: 'sdfdsaf', + note_html: '\u003cp dir="auto"\u003esdfdsaf\u003c/p\u003e', + current_user: { + can_edit: true, + can_award_emoji: true, + }, + discussion_id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', + emoji_awardable: true, + award_emoji: [ + { + name: 'baseball', + user: { + id: 1, + name: 'Root', + username: 'root', + }, + }, + { + name: 'art', + user: { + id: 1, + name: 'Root', + username: 'root', + }, + }, + ], + noteable_note_url: '/group/project/merge_requests/1#note_1', + toggle_award_path: '/gitlab-org/gitlab-foss/notes/1390/toggle_award_emoji', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1390\u0026user_id=1', + path: '/gitlab-org/gitlab-foss/notes/1390', + }, + ], + individual_note: true, + }, + { + id: '70d5c92a4039a36c70100c6691c18c27e4b0a790', + reply_id: '70d5c92a4039a36c70100c6691c18c27e4b0a790', + expanded: true, + notes: [ + { + id: '1391', + attachment: { + url: null, + filename: null, + image: false, + }, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + created_at: '2017-08-02T10:51:38.685Z', + updated_at: '2017-08-02T10:51:38.685Z', + system: false, + noteable_id: 98, + noteable_type: 'Issue', + type: null, + human_access: 'Owner', + note: 'New note!', + note_html: '\u003cp dir="auto"\u003eNew note!\u003c/p\u003e', + current_user: { + can_edit: true, + can_award_emoji: true, + }, + discussion_id: '70d5c92a4039a36c70100c6691c18c27e4b0a790', + emoji_awardable: true, + award_emoji: [], + noteable_note_url: '/group/project/merge_requests/1#note_1', + toggle_award_path: '/gitlab-org/gitlab-foss/notes/1391/toggle_award_emoji', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1391\u0026user_id=1', + path: '/gitlab-org/gitlab-foss/notes/1391', + }, + ], + individual_note: true, + }, + ], + '/gitlab-org/gitlab-foss/noteable/issue/98/notes': { + last_fetched_at: 1512900838, + notes: [], + }, + }, + PUT: { + '/gitlab-org/gitlab-foss/notes/1471': { + commands_changes: null, + valid: true, + id: '1471', + attachment: null, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + created_at: '2017-08-08T16:53:00.666Z', + updated_at: '2017-12-10T11:03:21.876Z', + system: false, + noteable_id: 124, + noteable_type: 'Issue', + noteable_iid: 29, + type: 'DiscussionNote', + human_access: 'Owner', + note: 'Adding a comment', + note_html: '\u003cp dir="auto"\u003eAdding a comment\u003c/p\u003e', + last_edited_at: '2017-12-10T11:03:21.876Z', + last_edited_by: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + current_user: { + can_edit: true, + can_award_emoji: true, + }, + discussion_id: 'a3ed36e29b1957efb3b68c53e2d7a2b24b1df052', + emoji_awardable: true, + award_emoji: [], + noteable_note_url: '/group/project/merge_requests/1#note_1', + toggle_award_path: '/gitlab-org/gitlab-foss/notes/1471/toggle_award_emoji', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F29%23note_1471\u0026user_id=1', + path: '/gitlab-org/gitlab-foss/notes/1471', + }, + }, +}; + +export const DISCUSSION_NOTE_RESPONSE_MAP = { + ...INDIVIDUAL_NOTE_RESPONSE_MAP, + GET: { + ...INDIVIDUAL_NOTE_RESPONSE_MAP.GET, + '/gitlab-org/gitlab-foss/issues/26/discussions.json': [ + { + id: 'a3ed36e29b1957efb3b68c53e2d7a2b24b1df052', + reply_id: 'a3ed36e29b1957efb3b68c53e2d7a2b24b1df052', + expanded: true, + notes: [ + { + id: '1471', + attachment: { + url: null, + filename: null, + image: false, + }, + author: { + id: 1, + name: 'Root', + username: 'root', + state: 'active', + avatar_url: null, + path: '/root', + }, + created_at: '2017-08-08T16:53:00.666Z', + updated_at: '2017-08-08T16:53:00.666Z', + system: false, + noteable_id: 124, + noteable_type: 'Issue', + noteable_iid: 29, + type: 'DiscussionNote', + human_access: 'Owner', + note: 'Adding a comment', + note_html: '\u003cp dir="auto"\u003eAdding a comment\u003c/p\u003e', + current_user: { + can_edit: true, + can_award_emoji: true, + }, + discussion_id: 'a3ed36e29b1957efb3b68c53e2d7a2b24b1df052', + emoji_awardable: true, + award_emoji: [], + toggle_award_path: '/gitlab-org/gitlab-foss/notes/1471/toggle_award_emoji', + noteable_note_url: '/group/project/merge_requests/1#note_1', + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F29%23note_1471\u0026user_id=1', + path: '/gitlab-org/gitlab-foss/notes/1471', + }, + ], + individual_note: false, + }, + ], + }, +}; + +export function getIndividualNoteResponse(config) { + return [200, INDIVIDUAL_NOTE_RESPONSE_MAP[config.method.toUpperCase()][config.url]]; +} + +export function getDiscussionNoteResponse(config) { + return [200, DISCUSSION_NOTE_RESPONSE_MAP[config.method.toUpperCase()][config.url]]; +} + +export const notesWithDescriptionChanges = [ + { + id: '39b271c2033e9ed43d8edb393702f65f7a830459', + reply_id: '39b271c2033e9ed43d8edb393702f65f7a830459', + expanded: true, + notes: [ + { + id: '901', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:05:36.117Z', + updated_at: '2018-05-29T12:05:36.117Z', + system: false, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + note_html: + '<p dir="auto">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>', + current_user: { can_edit: true, can_award_emoji: true }, + resolved: false, + resolved_by: null, + discussion_id: '39b271c2033e9ed43d8edb393702f65f7a830459', + emoji_awardable: true, + award_emoji: [], + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_901&user_id=1', + human_access: 'Owner', + toggle_award_path: '/gitlab-org/gitlab-shell/notes/901/toggle_award_emoji', + path: '/gitlab-org/gitlab-shell/notes/901', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, + { + id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', + reply_id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', + expanded: true, + notes: [ + { + id: '902', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:05:58.694Z', + updated_at: '2018-05-29T12:05:58.694Z', + system: false, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: + 'Varius vel pharetra vel turpis nunc eget lorem. Ipsum dolor sit amet consectetur adipiscing.', + note_html: + '<p dir="auto">Varius vel pharetra vel turpis nunc eget lorem. Ipsum dolor sit amet consectetur adipiscing.</p>', + current_user: { can_edit: true, can_award_emoji: true }, + resolved: false, + resolved_by: null, + discussion_id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', + emoji_awardable: true, + award_emoji: [], + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_902&user_id=1', + human_access: 'Owner', + toggle_award_path: '/gitlab-org/gitlab-shell/notes/902/toggle_award_emoji', + path: '/gitlab-org/gitlab-shell/notes/902', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, + { + id: '7f1feda384083eb31763366e6392399fde6f3f31', + reply_id: '7f1feda384083eb31763366e6392399fde6f3f31', + expanded: true, + notes: [ + { + id: '903', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:06:05.772Z', + updated_at: '2018-05-29T12:06:05.772Z', + system: true, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: 'changed the description', + note_html: '<p dir="auto">changed the description</p>', + current_user: { can_edit: false, can_award_emoji: true }, + resolved: false, + resolved_by: null, + system_note_icon_name: 'pencil-square', + discussion_id: '7f1feda384083eb31763366e6392399fde6f3f31', + emoji_awardable: false, + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_903&user_id=1', + human_access: 'Owner', + path: '/gitlab-org/gitlab-shell/notes/903', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, + { + id: '091865fe3ae20f0045234a3d103e3b15e73405b5', + reply_id: '091865fe3ae20f0045234a3d103e3b15e73405b5', + expanded: true, + notes: [ + { + id: '904', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:06:16.112Z', + updated_at: '2018-05-29T12:06:16.112Z', + system: false, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: 'Ullamcorper eget nulla facilisi etiam', + note_html: '<p dir="auto">Ullamcorper eget nulla facilisi etiam</p>', + current_user: { can_edit: true, can_award_emoji: true }, + resolved: false, + resolved_by: null, + discussion_id: '091865fe3ae20f0045234a3d103e3b15e73405b5', + emoji_awardable: true, + award_emoji: [], + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_904&user_id=1', + human_access: 'Owner', + toggle_award_path: '/gitlab-org/gitlab-shell/notes/904/toggle_award_emoji', + path: '/gitlab-org/gitlab-shell/notes/904', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, + { + id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', + reply_id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', + expanded: true, + notes: [ + { + id: '905', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:06:28.851Z', + updated_at: '2018-05-29T12:06:28.851Z', + system: true, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: 'changed the description', + note_html: '<p dir="auto">changed the description</p>', + current_user: { can_edit: false, can_award_emoji: true }, + resolved: false, + resolved_by: null, + system_note_icon_name: 'pencil-square', + discussion_id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', + emoji_awardable: false, + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_905&user_id=1', + human_access: 'Owner', + path: '/gitlab-org/gitlab-shell/notes/905', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, + { + id: '70411b08cdfc01f24187a06d77daa33464cb2620', + reply_id: '70411b08cdfc01f24187a06d77daa33464cb2620', + expanded: true, + notes: [ + { + id: '906', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:20:02.925Z', + updated_at: '2018-05-29T12:20:02.925Z', + system: true, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: 'changed the description', + note_html: '<p dir="auto">changed the description</p>', + current_user: { can_edit: false, can_award_emoji: true }, + resolved: false, + resolved_by: null, + system_note_icon_name: 'pencil-square', + discussion_id: '70411b08cdfc01f24187a06d77daa33464cb2620', + emoji_awardable: false, + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_906&user_id=1', + human_access: 'Owner', + path: '/gitlab-org/gitlab-shell/notes/906', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, +]; + +export const collapsedSystemNotes = [ + { + id: '39b271c2033e9ed43d8edb393702f65f7a830459', + reply_id: '39b271c2033e9ed43d8edb393702f65f7a830459', + expanded: true, + notes: [ + { + id: '901', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:05:36.117Z', + updated_at: '2018-05-29T12:05:36.117Z', + system: false, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + note_html: + '<p dir="auto">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>', + current_user: { can_edit: true, can_award_emoji: true }, + resolved: false, + resolved_by: null, + discussion_id: '39b271c2033e9ed43d8edb393702f65f7a830459', + emoji_awardable: true, + award_emoji: [], + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_901&user_id=1', + human_access: 'Owner', + toggle_award_path: '/gitlab-org/gitlab-shell/notes/901/toggle_award_emoji', + path: '/gitlab-org/gitlab-shell/notes/901', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, + { + id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', + reply_id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', + expanded: true, + notes: [ + { + id: '902', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:05:58.694Z', + updated_at: '2018-05-29T12:05:58.694Z', + system: false, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: + 'Varius vel pharetra vel turpis nunc eget lorem. Ipsum dolor sit amet consectetur adipiscing.', + note_html: + '<p dir="auto">Varius vel pharetra vel turpis nunc eget lorem. Ipsum dolor sit amet consectetur adipiscing.</p>', + current_user: { can_edit: true, can_award_emoji: true }, + resolved: false, + resolved_by: null, + discussion_id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', + emoji_awardable: true, + award_emoji: [], + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_902&user_id=1', + human_access: 'Owner', + toggle_award_path: '/gitlab-org/gitlab-shell/notes/902/toggle_award_emoji', + path: '/gitlab-org/gitlab-shell/notes/902', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, + { + id: '091865fe3ae20f0045234a3d103e3b15e73405b5', + reply_id: '091865fe3ae20f0045234a3d103e3b15e73405b5', + expanded: true, + notes: [ + { + id: '904', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:06:16.112Z', + updated_at: '2018-05-29T12:06:16.112Z', + system: false, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: 'Ullamcorper eget nulla facilisi etiam', + note_html: '<p dir="auto">Ullamcorper eget nulla facilisi etiam</p>', + current_user: { can_edit: true, can_award_emoji: true }, + resolved: false, + resolved_by: null, + discussion_id: '091865fe3ae20f0045234a3d103e3b15e73405b5', + emoji_awardable: true, + award_emoji: [], + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_904&user_id=1', + human_access: 'Owner', + toggle_award_path: '/gitlab-org/gitlab-shell/notes/904/toggle_award_emoji', + path: '/gitlab-org/gitlab-shell/notes/904', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, + { + id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', + reply_id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', + expanded: true, + notes: [ + { + id: '905', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:06:28.851Z', + updated_at: '2018-05-29T12:06:28.851Z', + system: true, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: 'changed the description', + note_html: ' <p dir="auto">changed the description 2 times within 1 minute </p>', + current_user: { can_edit: false, can_award_emoji: true }, + resolved: false, + resolved_by: null, + system_note_icon_name: 'pencil-square', + discussion_id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', + emoji_awardable: false, + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_905&user_id=1', + human_access: 'Owner', + path: '/gitlab-org/gitlab-shell/notes/905', + times_updated: 2, + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, + { + id: '70411b08cdfc01f24187a06d77daa33464cb2620', + reply_id: '70411b08cdfc01f24187a06d77daa33464cb2620', + expanded: true, + notes: [ + { + id: '906', + type: null, + attachment: null, + author: { + id: 1, + name: 'Administrator', + username: 'root', + state: 'active', + avatar_url: + 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', + path: '/root', + }, + created_at: '2018-05-29T12:20:02.925Z', + updated_at: '2018-05-29T12:20:02.925Z', + system: true, + noteable_id: 182, + noteable_type: 'Issue', + resolvable: false, + noteable_iid: 12, + note: 'changed the description', + note_html: '<p dir="auto">changed the description</p>', + current_user: { can_edit: false, can_award_emoji: true }, + resolved: false, + resolved_by: null, + system_note_icon_name: 'pencil-square', + discussion_id: '70411b08cdfc01f24187a06d77daa33464cb2620', + emoji_awardable: false, + report_abuse_path: + '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_906&user_id=1', + human_access: 'Owner', + path: '/gitlab-org/gitlab-shell/notes/906', + }, + ], + individual_note: true, + resolvable: false, + resolved: false, + diff_discussion: false, + }, +]; + +export const discussion1 = { + id: 'abc1', + resolvable: true, + resolved: false, + active: true, + diff_file: { + file_path: 'about.md', + }, + position: { + new_line: 50, + old_line: null, + }, + notes: [ + { + created_at: '2018-07-04T16:25:41.749Z', + }, + ], +}; + +export const resolvedDiscussion1 = { + id: 'abc1', + resolvable: true, + resolved: true, + diff_file: { + file_path: 'about.md', + }, + position: { + new_line: 50, + old_line: null, + }, + notes: [ + { + created_at: '2018-07-04T16:25:41.749Z', + }, + ], +}; + +export const discussion2 = { + id: 'abc2', + resolvable: true, + resolved: false, + active: true, + diff_file: { + file_path: 'README.md', + }, + position: { + new_line: null, + old_line: 20, + }, + notes: [ + { + created_at: '2018-07-04T12:05:41.749Z', + }, + ], +}; + +export const discussion3 = { + id: 'abc3', + resolvable: true, + active: true, + resolved: false, + diff_file: { + file_path: 'README.md', + }, + position: { + new_line: 21, + old_line: null, + }, + notes: [ + { + created_at: '2018-07-05T17:25:41.749Z', + }, + ], +}; + +export const unresolvableDiscussion = { + resolvable: false, +}; + +export const discussionFiltersMock = [ + { + title: 'Show all activity', + value: 0, + }, + { + title: 'Show comments only', + value: 1, + }, + { + title: 'Show system notes only', + value: 2, + }, +]; diff --git a/spec/frontend/vue_shared/components/notes/placeholder_note_spec.js b/spec/frontend/vue_shared/components/notes/placeholder_note_spec.js index eafff7f681e..45f131194ca 100644 --- a/spec/frontend/vue_shared/components/notes/placeholder_note_spec.js +++ b/spec/frontend/vue_shared/components/notes/placeholder_note_spec.js @@ -1,7 +1,7 @@ import Vue from 'vue'; import issuePlaceholderNote from '~/vue_shared/components/notes/placeholder_note.vue'; import createStore from '~/notes/stores'; -import { userDataMock } from '../../../../javascripts/notes/mock_data'; +import { userDataMock } from '../../../notes/mock_data'; describe('issue placeholder system note component', () => { let store; diff --git a/spec/javascripts/issue_show/helpers.js b/spec/javascripts/issue_show/helpers.js index 5d2ced98ae4..951acfd4e10 100644 --- a/spec/javascripts/issue_show/helpers.js +++ b/spec/javascripts/issue_show/helpers.js @@ -1,10 +1 @@ -// eslint-disable-next-line import/prefer-default-export -export const keyboardDownEvent = (code, metaKey = false, ctrlKey = false) => { - const e = new CustomEvent('keydown'); - - e.keyCode = code; - e.metaKey = metaKey; - e.ctrlKey = ctrlKey; - - return e; -}; +export * from '../../frontend/issue_show/helpers.js'; diff --git a/spec/javascripts/notes/components/comment_form_spec.js b/spec/javascripts/notes/components/comment_form_spec.js deleted file mode 100644 index 88c86746992..00000000000 --- a/spec/javascripts/notes/components/comment_form_spec.js +++ /dev/null @@ -1,301 +0,0 @@ -import $ from 'jquery'; -import Vue from 'vue'; -import Autosize from 'autosize'; -import createStore from '~/notes/stores'; -import CommentForm from '~/notes/components/comment_form.vue'; -import * as constants from '~/notes/constants'; -import { loggedOutnoteableData, notesDataMock, userDataMock, noteableDataMock } from '../mock_data'; -import { keyboardDownEvent } from '../../issue_show/helpers'; - -describe('issue_comment_form component', () => { - let store; - let vm; - const Component = Vue.extend(CommentForm); - let mountComponent; - - beforeEach(() => { - store = createStore(); - mountComponent = (noteableType = 'issue') => - new Component({ - propsData: { - noteableType, - }, - store, - }).$mount(); - }); - - afterEach(() => { - vm.$destroy(); - }); - - describe('user is logged in', () => { - beforeEach(() => { - store.dispatch('setUserData', userDataMock); - store.dispatch('setNoteableData', noteableDataMock); - store.dispatch('setNotesData', notesDataMock); - - vm = mountComponent(); - }); - - it('should render user avatar with link', () => { - expect(vm.$el.querySelector('.timeline-icon .user-avatar-link').getAttribute('href')).toEqual( - userDataMock.path, - ); - }); - - describe('handleSave', () => { - it('should request to save note when note is entered', () => { - vm.note = 'hello world'; - spyOn(vm, 'saveNote').and.returnValue(new Promise(() => {})); - spyOn(vm, 'resizeTextarea'); - spyOn(vm, 'stopPolling'); - - vm.handleSave(); - - expect(vm.isSubmitting).toEqual(true); - expect(vm.note).toEqual(''); - expect(vm.saveNote).toHaveBeenCalled(); - expect(vm.stopPolling).toHaveBeenCalled(); - expect(vm.resizeTextarea).toHaveBeenCalled(); - }); - - it('should toggle issue state when no note', () => { - spyOn(vm, 'toggleIssueState'); - - vm.handleSave(); - - expect(vm.toggleIssueState).toHaveBeenCalled(); - }); - - it('should disable action button whilst submitting', done => { - const saveNotePromise = Promise.resolve(); - vm.note = 'hello world'; - spyOn(vm, 'saveNote').and.returnValue(saveNotePromise); - spyOn(vm, 'stopPolling'); - - const actionButton = vm.$el.querySelector('.js-action-button'); - - vm.handleSave(); - - Vue.nextTick() - .then(() => { - expect(actionButton.disabled).toBeTruthy(); - }) - .then(saveNotePromise) - .then(Vue.nextTick) - .then(() => { - expect(actionButton.disabled).toBeFalsy(); - }) - .then(done) - .catch(done.fail); - }); - }); - - describe('textarea', () => { - it('should render textarea with placeholder', () => { - expect( - vm.$el.querySelector('.js-main-target-form textarea').getAttribute('placeholder'), - ).toEqual('Write a comment or drag your files here…'); - }); - - it('should make textarea disabled while requesting', done => { - const $submitButton = $(vm.$el.querySelector('.js-comment-submit-button')); - vm.note = 'hello world'; - spyOn(vm, 'stopPolling'); - spyOn(vm, 'saveNote').and.returnValue(new Promise(() => {})); - - vm.$nextTick(() => { - // Wait for vm.note change triggered. It should enable $submitButton. - $submitButton.trigger('click'); - - vm.$nextTick(() => { - // Wait for vm.isSubmitting triggered. It should disable textarea. - expect(vm.$el.querySelector('.js-main-target-form textarea').disabled).toBeTruthy(); - done(); - }); - }); - }); - - it('should support quick actions', () => { - expect( - vm.$el - .querySelector('.js-main-target-form textarea') - .getAttribute('data-supports-quick-actions'), - ).toEqual('true'); - }); - - it('should link to markdown docs', () => { - const { markdownDocsPath } = notesDataMock; - - expect(vm.$el.querySelector(`a[href="${markdownDocsPath}"]`).textContent.trim()).toEqual( - 'Markdown', - ); - }); - - it('should link to quick actions docs', () => { - const { quickActionsDocsPath } = notesDataMock; - - expect( - vm.$el.querySelector(`a[href="${quickActionsDocsPath}"]`).textContent.trim(), - ).toEqual('quick actions'); - }); - - it('should resize textarea after note discarded', done => { - spyOn(Autosize, 'update'); - spyOn(vm, 'discard').and.callThrough(); - - vm.note = 'foo'; - vm.discard(); - - Vue.nextTick(() => { - expect(Autosize.update).toHaveBeenCalled(); - done(); - }); - }); - - describe('edit mode', () => { - it('should enter edit mode when arrow up is pressed', () => { - spyOn(vm, 'editCurrentUserLastNote').and.callThrough(); - vm.$el.querySelector('.js-main-target-form textarea').value = 'Foo'; - vm.$el - .querySelector('.js-main-target-form textarea') - .dispatchEvent(keyboardDownEvent(38, true)); - - expect(vm.editCurrentUserLastNote).toHaveBeenCalled(); - }); - - it('inits autosave', () => { - expect(vm.autosave).toBeDefined(); - expect(vm.autosave.key).toEqual(`autosave/Note/Issue/${noteableDataMock.id}`); - }); - }); - - describe('event enter', () => { - it('should save note when cmd+enter is pressed', () => { - spyOn(vm, 'handleSave').and.callThrough(); - vm.$el.querySelector('.js-main-target-form textarea').value = 'Foo'; - vm.$el - .querySelector('.js-main-target-form textarea') - .dispatchEvent(keyboardDownEvent(13, true)); - - expect(vm.handleSave).toHaveBeenCalled(); - }); - - it('should save note when ctrl+enter is pressed', () => { - spyOn(vm, 'handleSave').and.callThrough(); - vm.$el.querySelector('.js-main-target-form textarea').value = 'Foo'; - vm.$el - .querySelector('.js-main-target-form textarea') - .dispatchEvent(keyboardDownEvent(13, false, true)); - - expect(vm.handleSave).toHaveBeenCalled(); - }); - }); - }); - - describe('actions', () => { - it('should be possible to close the issue', () => { - expect(vm.$el.querySelector('.btn-comment-and-close').textContent.trim()).toEqual( - 'Close issue', - ); - }); - - it('should render comment button as disabled', () => { - expect(vm.$el.querySelector('.js-comment-submit-button').getAttribute('disabled')).toEqual( - 'disabled', - ); - }); - - it('should enable comment button if it has note', done => { - vm.note = 'Foo'; - Vue.nextTick(() => { - expect( - vm.$el.querySelector('.js-comment-submit-button').getAttribute('disabled'), - ).toEqual(null); - done(); - }); - }); - - it('should update buttons texts when it has note', done => { - vm.note = 'Foo'; - Vue.nextTick(() => { - expect(vm.$el.querySelector('.btn-comment-and-close').textContent.trim()).toEqual( - 'Comment & close issue', - ); - - done(); - }); - }); - - it('updates button text with noteable type', done => { - vm.noteableType = constants.MERGE_REQUEST_NOTEABLE_TYPE; - - Vue.nextTick(() => { - expect(vm.$el.querySelector('.btn-comment-and-close').textContent.trim()).toEqual( - 'Close merge request', - ); - done(); - }); - }); - - describe('when clicking close/reopen button', () => { - it('should disable button and show a loading spinner', done => { - const toggleStateButton = vm.$el.querySelector('.js-action-button'); - - toggleStateButton.click(); - Vue.nextTick(() => { - expect(toggleStateButton.disabled).toEqual(true); - expect(toggleStateButton.querySelector('.js-loading-button-icon')).not.toBeNull(); - - done(); - }); - }); - }); - - describe('when toggling state', () => { - it('should update MR count', done => { - spyOn(vm, 'closeIssue').and.returnValue(Promise.resolve()); - - const updateMrCountSpy = spyOnDependency(CommentForm, 'refreshUserMergeRequestCounts'); - vm.toggleIssueState(); - - Vue.nextTick(() => { - expect(updateMrCountSpy).toHaveBeenCalled(); - - done(); - }); - }); - }); - }); - - describe('issue is confidential', () => { - it('shows information warning', done => { - store.dispatch('setNoteableData', Object.assign(noteableDataMock, { confidential: true })); - Vue.nextTick(() => { - expect(vm.$el.querySelector('.confidential-issue-warning')).toBeDefined(); - done(); - }); - }); - }); - }); - - describe('user is not logged in', () => { - beforeEach(() => { - store.dispatch('setUserData', null); - store.dispatch('setNoteableData', loggedOutnoteableData); - store.dispatch('setNotesData', notesDataMock); - - vm = mountComponent(); - }); - - it('should render signed out widget', () => { - expect(vm.$el.textContent.replace(/\s+/g, ' ').trim()).toEqual( - 'Please register or sign in to reply', - ); - }); - - it('should not render submission form', () => { - expect(vm.$el.querySelector('textarea')).toEqual(null); - }); - }); -}); diff --git a/spec/javascripts/notes/mock_data.js b/spec/javascripts/notes/mock_data.js index dc914ce8355..89e4553092a 100644 --- a/spec/javascripts/notes/mock_data.js +++ b/spec/javascripts/notes/mock_data.js @@ -1,1255 +1 @@ -// Copied to ee/spec/frontend/notes/mock_data.js - -export const notesDataMock = { - discussionsPath: '/gitlab-org/gitlab-foss/issues/26/discussions.json', - lastFetchedAt: 1501862675, - markdownDocsPath: '/help/user/markdown', - newSessionPath: '/users/sign_in?redirect_to_referer=yes', - notesPath: '/gitlab-org/gitlab-foss/noteable/issue/98/notes', - quickActionsDocsPath: '/help/user/project/quick_actions', - registerPath: '/users/sign_in?redirect_to_referer=yes#register-pane', - prerenderedNotesCount: 1, - closePath: '/twitter/flight/issues/9.json?issue%5Bstate_event%5D=close', - reopenPath: '/twitter/flight/issues/9.json?issue%5Bstate_event%5D=reopen', - canAwardEmoji: true, -}; - -export const userDataMock = { - avatar_url: 'mock_path', - id: 1, - name: 'Root', - path: '/root', - state: 'active', - username: 'root', -}; - -export const noteableDataMock = { - assignees: [], - author_id: 1, - branch_name: null, - confidential: false, - create_note_path: '/gitlab-org/gitlab-foss/notes?target_id=98&target_type=issue', - created_at: '2017-02-07T10:11:18.395Z', - current_user: { - can_create_note: true, - can_update: true, - can_award_emoji: true, - }, - description: '', - due_date: null, - human_time_estimate: null, - human_total_time_spent: null, - id: 98, - iid: 26, - labels: [], - lock_version: null, - milestone: null, - milestone_id: null, - moved_to_id: null, - preview_note_path: '/gitlab-org/gitlab-foss/preview_markdown?target_id=98&target_type=Issue', - project_id: 2, - state: 'opened', - time_estimate: 0, - title: '14', - total_time_spent: 0, - noteable_note_url: '/group/project/merge_requests/1#note_1', - updated_at: '2017-08-04T09:53:01.226Z', - updated_by_id: 1, - web_url: '/gitlab-org/gitlab-foss/issues/26', - noteableType: 'issue', -}; - -export const lastFetchedAt = '1501862675'; - -export const individualNote = { - expanded: true, - id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', - individual_note: true, - notes: [ - { - id: '1390', - attachment: { - url: null, - filename: null, - image: false, - }, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: 'test', - path: '/root', - }, - created_at: '2017-08-01T17: 09: 33.762Z', - updated_at: '2017-08-01T17: 09: 33.762Z', - system: false, - noteable_id: 98, - noteable_type: 'Issue', - type: null, - human_access: 'Owner', - note: 'sdfdsaf', - note_html: "<p dir='auto'>sdfdsaf</p>", - current_user: { - can_edit: true, - can_award_emoji: true, - }, - discussion_id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', - emoji_awardable: true, - award_emoji: [ - { name: 'baseball', user: { id: 1, name: 'Root', username: 'root' } }, - { name: 'art', user: { id: 1, name: 'Root', username: 'root' } }, - ], - toggle_award_path: '/gitlab-org/gitlab-foss/notes/1390/toggle_award_emoji', - noteable_note_url: '/group/project/merge_requests/1#note_1', - note_url: '/group/project/merge_requests/1#note_1', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1390&user_id=1', - path: '/gitlab-org/gitlab-foss/notes/1390', - }, - ], - reply_id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', -}; - -export const note = { - id: '546', - attachment: { - url: null, - filename: null, - image: false, - }, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2017-08-10T15:24:03.087Z', - updated_at: '2017-08-10T15:24:03.087Z', - system: false, - noteable_id: 67, - noteable_type: 'Issue', - noteable_iid: 7, - type: null, - human_access: 'Owner', - note: 'Vel id placeat reprehenderit sit numquam.', - note_html: '<p dir="auto">Vel id placeat reprehenderit sit numquam.</p>', - current_user: { - can_edit: true, - can_award_emoji: true, - }, - discussion_id: 'd3842a451b7f3d9a5dfce329515127b2d29a4cd0', - emoji_awardable: true, - award_emoji: [ - { - name: 'baseball', - user: { - id: 1, - name: 'Administrator', - username: 'root', - }, - }, - { - name: 'bath_tone3', - user: { - id: 1, - name: 'Administrator', - username: 'root', - }, - }, - ], - toggle_award_path: '/gitlab-org/gitlab-foss/notes/546/toggle_award_emoji', - note_url: '/group/project/merge_requests/1#note_1', - noteable_note_url: '/group/project/merge_requests/1#note_1', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F7%23note_546&user_id=1', - path: '/gitlab-org/gitlab-foss/notes/546', -}; - -export const discussionMock = { - id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', - reply_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', - expanded: true, - notes: [ - { - id: '1395', - attachment: { - url: null, - filename: null, - image: false, - }, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - created_at: '2017-08-02T10:51:58.559Z', - updated_at: '2017-08-02T10:51:58.559Z', - system: false, - noteable_id: 98, - noteable_type: 'Issue', - type: 'DiscussionNote', - human_access: 'Owner', - note: 'THIS IS A DICUSSSION!', - note_html: "<p dir='auto'>THIS IS A DICUSSSION!</p>", - current_user: { - can_edit: true, - can_award_emoji: true, - can_resolve: true, - }, - discussion_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', - emoji_awardable: true, - award_emoji: [], - noteable_note_url: '/group/project/merge_requests/1#note_1', - toggle_award_path: '/gitlab-org/gitlab-foss/notes/1395/toggle_award_emoji', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1395&user_id=1', - path: '/gitlab-org/gitlab-foss/notes/1395', - }, - { - id: '1396', - attachment: { - url: null, - filename: null, - image: false, - }, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - created_at: '2017-08-02T10:56:50.980Z', - updated_at: '2017-08-03T14:19:35.691Z', - system: false, - noteable_id: 98, - noteable_type: 'Issue', - type: 'DiscussionNote', - human_access: 'Owner', - note: 'sadfasdsdgdsf', - note_html: "<p dir='auto'>sadfasdsdgdsf</p>", - last_edited_at: '2017-08-03T14:19:35.691Z', - last_edited_by: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - current_user: { - can_edit: true, - can_award_emoji: true, - can_resolve: true, - }, - discussion_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', - emoji_awardable: true, - award_emoji: [], - toggle_award_path: '/gitlab-org/gitlab-foss/notes/1396/toggle_award_emoji', - noteable_note_url: '/group/project/merge_requests/1#note_1', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1396&user_id=1', - path: '/gitlab-org/gitlab-foss/notes/1396', - }, - { - id: '1437', - attachment: { - url: null, - filename: null, - image: false, - }, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - created_at: '2017-08-03T18:11:18.780Z', - updated_at: '2017-08-04T09:52:31.062Z', - system: false, - noteable_id: 98, - noteable_type: 'Issue', - type: 'DiscussionNote', - human_access: 'Owner', - note: 'adsfasf Should disappear', - note_html: "<p dir='auto'>adsfasf Should disappear</p>", - last_edited_at: '2017-08-04T09:52:31.062Z', - last_edited_by: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - current_user: { - can_edit: true, - can_award_emoji: true, - can_resolve: true, - }, - discussion_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', - emoji_awardable: true, - award_emoji: [], - noteable_note_url: '/group/project/merge_requests/1#note_1', - toggle_award_path: '/gitlab-org/gitlab-foss/notes/1437/toggle_award_emoji', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1437&user_id=1', - path: '/gitlab-org/gitlab-foss/notes/1437', - }, - ], - individual_note: false, - resolvable: true, - active: true, -}; - -export const loggedOutnoteableData = { - id: '98', - iid: 26, - author_id: 1, - description: '', - lock_version: 1, - milestone_id: null, - state: 'opened', - title: 'asdsa', - updated_by_id: 1, - created_at: '2017-02-07T10:11:18.395Z', - updated_at: '2017-08-08T10:22:51.564Z', - time_estimate: 0, - total_time_spent: 0, - human_time_estimate: null, - human_total_time_spent: null, - milestone: null, - labels: [], - branch_name: null, - confidential: false, - assignees: [ - { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - web_url: 'http://localhost:3000/root', - }, - ], - due_date: null, - moved_to_id: null, - project_id: 2, - web_url: '/gitlab-org/gitlab-foss/issues/26', - current_user: { - can_create_note: false, - can_update: false, - }, - noteable_note_url: '/group/project/merge_requests/1#note_1', - create_note_path: '/gitlab-org/gitlab-foss/notes?target_id=98&target_type=issue', - preview_note_path: '/gitlab-org/gitlab-foss/preview_markdown?target_id=98&target_type=Issue', -}; - -export const collapseNotesMock = [ - { - expanded: true, - id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', - individual_note: true, - notes: [ - { - id: '1390', - attachment: null, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: 'test', - path: '/root', - }, - created_at: '2018-02-26T18:07:41.071Z', - updated_at: '2018-02-26T18:07:41.071Z', - system: true, - system_note_icon_name: 'pencil', - noteable_id: 98, - noteable_type: 'Issue', - type: null, - human_access: 'Owner', - note: 'changed the description', - note_html: '<p dir="auto">changed the description</p>', - current_user: { can_edit: false }, - discussion_id: 'b97fb7bda470a65b3e009377a9032edec0a4dd05', - emoji_awardable: false, - path: '/h5bp/html5-boilerplate/notes/1057', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fh5bp%2Fhtml5-boilerplate%2Fissues%2F10%23note_1057&user_id=1', - }, - ], - }, - { - expanded: true, - id: 'ffde43f25984ad7f2b4275135e0e2846875336c0', - individual_note: true, - notes: [ - { - id: '1391', - attachment: null, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: 'test', - path: '/root', - }, - created_at: '2018-02-26T18:13:24.071Z', - updated_at: '2018-02-26T18:13:24.071Z', - system: true, - system_note_icon_name: 'pencil', - noteable_id: 99, - noteable_type: 'Issue', - type: null, - human_access: 'Owner', - note: 'changed the description', - note_html: '<p dir="auto">changed the description</p>', - current_user: { can_edit: false }, - discussion_id: '3eb958b4d81dec207ec3537a2f3bd8b9f271bb34', - emoji_awardable: false, - path: '/h5bp/html5-boilerplate/notes/1057', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fh5bp%2Fhtml5-boilerplate%2Fissues%2F10%23note_1057&user_id=1', - }, - ], - }, -]; - -export const INDIVIDUAL_NOTE_RESPONSE_MAP = { - GET: { - '/gitlab-org/gitlab-foss/issues/26/discussions.json': [ - { - id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', - reply_id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', - expanded: true, - notes: [ - { - id: '1390', - attachment: { - url: null, - filename: null, - image: false, - }, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - created_at: '2017-08-01T17:09:33.762Z', - updated_at: '2017-08-01T17:09:33.762Z', - system: false, - noteable_id: 98, - noteable_type: 'Issue', - type: null, - human_access: 'Owner', - note: 'sdfdsaf', - note_html: '\u003cp dir="auto"\u003esdfdsaf\u003c/p\u003e', - current_user: { - can_edit: true, - can_award_emoji: true, - }, - discussion_id: '0fb4e0e3f9276e55ff32eb4195add694aece4edd', - emoji_awardable: true, - award_emoji: [ - { - name: 'baseball', - user: { - id: 1, - name: 'Root', - username: 'root', - }, - }, - { - name: 'art', - user: { - id: 1, - name: 'Root', - username: 'root', - }, - }, - ], - noteable_note_url: '/group/project/merge_requests/1#note_1', - toggle_award_path: '/gitlab-org/gitlab-foss/notes/1390/toggle_award_emoji', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1390\u0026user_id=1', - path: '/gitlab-org/gitlab-foss/notes/1390', - }, - ], - individual_note: true, - }, - { - id: '70d5c92a4039a36c70100c6691c18c27e4b0a790', - reply_id: '70d5c92a4039a36c70100c6691c18c27e4b0a790', - expanded: true, - notes: [ - { - id: '1391', - attachment: { - url: null, - filename: null, - image: false, - }, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - created_at: '2017-08-02T10:51:38.685Z', - updated_at: '2017-08-02T10:51:38.685Z', - system: false, - noteable_id: 98, - noteable_type: 'Issue', - type: null, - human_access: 'Owner', - note: 'New note!', - note_html: '\u003cp dir="auto"\u003eNew note!\u003c/p\u003e', - current_user: { - can_edit: true, - can_award_emoji: true, - }, - discussion_id: '70d5c92a4039a36c70100c6691c18c27e4b0a790', - emoji_awardable: true, - award_emoji: [], - noteable_note_url: '/group/project/merge_requests/1#note_1', - toggle_award_path: '/gitlab-org/gitlab-foss/notes/1391/toggle_award_emoji', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1391\u0026user_id=1', - path: '/gitlab-org/gitlab-foss/notes/1391', - }, - ], - individual_note: true, - }, - ], - '/gitlab-org/gitlab-foss/noteable/issue/98/notes': { - last_fetched_at: 1512900838, - notes: [], - }, - }, - PUT: { - '/gitlab-org/gitlab-foss/notes/1471': { - commands_changes: null, - valid: true, - id: '1471', - attachment: null, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - created_at: '2017-08-08T16:53:00.666Z', - updated_at: '2017-12-10T11:03:21.876Z', - system: false, - noteable_id: 124, - noteable_type: 'Issue', - noteable_iid: 29, - type: 'DiscussionNote', - human_access: 'Owner', - note: 'Adding a comment', - note_html: '\u003cp dir="auto"\u003eAdding a comment\u003c/p\u003e', - last_edited_at: '2017-12-10T11:03:21.876Z', - last_edited_by: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - current_user: { - can_edit: true, - can_award_emoji: true, - }, - discussion_id: 'a3ed36e29b1957efb3b68c53e2d7a2b24b1df052', - emoji_awardable: true, - award_emoji: [], - noteable_note_url: '/group/project/merge_requests/1#note_1', - toggle_award_path: '/gitlab-org/gitlab-foss/notes/1471/toggle_award_emoji', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F29%23note_1471\u0026user_id=1', - path: '/gitlab-org/gitlab-foss/notes/1471', - }, - }, -}; - -export const DISCUSSION_NOTE_RESPONSE_MAP = { - ...INDIVIDUAL_NOTE_RESPONSE_MAP, - GET: { - ...INDIVIDUAL_NOTE_RESPONSE_MAP.GET, - '/gitlab-org/gitlab-foss/issues/26/discussions.json': [ - { - id: 'a3ed36e29b1957efb3b68c53e2d7a2b24b1df052', - reply_id: 'a3ed36e29b1957efb3b68c53e2d7a2b24b1df052', - expanded: true, - notes: [ - { - id: '1471', - attachment: { - url: null, - filename: null, - image: false, - }, - author: { - id: 1, - name: 'Root', - username: 'root', - state: 'active', - avatar_url: null, - path: '/root', - }, - created_at: '2017-08-08T16:53:00.666Z', - updated_at: '2017-08-08T16:53:00.666Z', - system: false, - noteable_id: 124, - noteable_type: 'Issue', - noteable_iid: 29, - type: 'DiscussionNote', - human_access: 'Owner', - note: 'Adding a comment', - note_html: '\u003cp dir="auto"\u003eAdding a comment\u003c/p\u003e', - current_user: { - can_edit: true, - can_award_emoji: true, - }, - discussion_id: 'a3ed36e29b1957efb3b68c53e2d7a2b24b1df052', - emoji_awardable: true, - award_emoji: [], - toggle_award_path: '/gitlab-org/gitlab-foss/notes/1471/toggle_award_emoji', - noteable_note_url: '/group/project/merge_requests/1#note_1', - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F29%23note_1471\u0026user_id=1', - path: '/gitlab-org/gitlab-foss/notes/1471', - }, - ], - individual_note: false, - }, - ], - }, -}; - -export function getIndividualNoteResponse(config) { - return [200, INDIVIDUAL_NOTE_RESPONSE_MAP[config.method.toUpperCase()][config.url]]; -} - -export function getDiscussionNoteResponse(config) { - return [200, DISCUSSION_NOTE_RESPONSE_MAP[config.method.toUpperCase()][config.url]]; -} - -export const notesWithDescriptionChanges = [ - { - id: '39b271c2033e9ed43d8edb393702f65f7a830459', - reply_id: '39b271c2033e9ed43d8edb393702f65f7a830459', - expanded: true, - notes: [ - { - id: '901', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:05:36.117Z', - updated_at: '2018-05-29T12:05:36.117Z', - system: false, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - note_html: - '<p dir="auto">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>', - current_user: { can_edit: true, can_award_emoji: true }, - resolved: false, - resolved_by: null, - discussion_id: '39b271c2033e9ed43d8edb393702f65f7a830459', - emoji_awardable: true, - award_emoji: [], - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_901&user_id=1', - human_access: 'Owner', - toggle_award_path: '/gitlab-org/gitlab-shell/notes/901/toggle_award_emoji', - path: '/gitlab-org/gitlab-shell/notes/901', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, - { - id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', - reply_id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', - expanded: true, - notes: [ - { - id: '902', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:05:58.694Z', - updated_at: '2018-05-29T12:05:58.694Z', - system: false, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: - 'Varius vel pharetra vel turpis nunc eget lorem. Ipsum dolor sit amet consectetur adipiscing.', - note_html: - '<p dir="auto">Varius vel pharetra vel turpis nunc eget lorem. Ipsum dolor sit amet consectetur adipiscing.</p>', - current_user: { can_edit: true, can_award_emoji: true }, - resolved: false, - resolved_by: null, - discussion_id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', - emoji_awardable: true, - award_emoji: [], - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_902&user_id=1', - human_access: 'Owner', - toggle_award_path: '/gitlab-org/gitlab-shell/notes/902/toggle_award_emoji', - path: '/gitlab-org/gitlab-shell/notes/902', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, - { - id: '7f1feda384083eb31763366e6392399fde6f3f31', - reply_id: '7f1feda384083eb31763366e6392399fde6f3f31', - expanded: true, - notes: [ - { - id: '903', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:06:05.772Z', - updated_at: '2018-05-29T12:06:05.772Z', - system: true, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: 'changed the description', - note_html: '<p dir="auto">changed the description</p>', - current_user: { can_edit: false, can_award_emoji: true }, - resolved: false, - resolved_by: null, - system_note_icon_name: 'pencil-square', - discussion_id: '7f1feda384083eb31763366e6392399fde6f3f31', - emoji_awardable: false, - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_903&user_id=1', - human_access: 'Owner', - path: '/gitlab-org/gitlab-shell/notes/903', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, - { - id: '091865fe3ae20f0045234a3d103e3b15e73405b5', - reply_id: '091865fe3ae20f0045234a3d103e3b15e73405b5', - expanded: true, - notes: [ - { - id: '904', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:06:16.112Z', - updated_at: '2018-05-29T12:06:16.112Z', - system: false, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: 'Ullamcorper eget nulla facilisi etiam', - note_html: '<p dir="auto">Ullamcorper eget nulla facilisi etiam</p>', - current_user: { can_edit: true, can_award_emoji: true }, - resolved: false, - resolved_by: null, - discussion_id: '091865fe3ae20f0045234a3d103e3b15e73405b5', - emoji_awardable: true, - award_emoji: [], - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_904&user_id=1', - human_access: 'Owner', - toggle_award_path: '/gitlab-org/gitlab-shell/notes/904/toggle_award_emoji', - path: '/gitlab-org/gitlab-shell/notes/904', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, - { - id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', - reply_id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', - expanded: true, - notes: [ - { - id: '905', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:06:28.851Z', - updated_at: '2018-05-29T12:06:28.851Z', - system: true, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: 'changed the description', - note_html: '<p dir="auto">changed the description</p>', - current_user: { can_edit: false, can_award_emoji: true }, - resolved: false, - resolved_by: null, - system_note_icon_name: 'pencil-square', - discussion_id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', - emoji_awardable: false, - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_905&user_id=1', - human_access: 'Owner', - path: '/gitlab-org/gitlab-shell/notes/905', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, - { - id: '70411b08cdfc01f24187a06d77daa33464cb2620', - reply_id: '70411b08cdfc01f24187a06d77daa33464cb2620', - expanded: true, - notes: [ - { - id: '906', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:20:02.925Z', - updated_at: '2018-05-29T12:20:02.925Z', - system: true, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: 'changed the description', - note_html: '<p dir="auto">changed the description</p>', - current_user: { can_edit: false, can_award_emoji: true }, - resolved: false, - resolved_by: null, - system_note_icon_name: 'pencil-square', - discussion_id: '70411b08cdfc01f24187a06d77daa33464cb2620', - emoji_awardable: false, - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_906&user_id=1', - human_access: 'Owner', - path: '/gitlab-org/gitlab-shell/notes/906', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, -]; - -export const collapsedSystemNotes = [ - { - id: '39b271c2033e9ed43d8edb393702f65f7a830459', - reply_id: '39b271c2033e9ed43d8edb393702f65f7a830459', - expanded: true, - notes: [ - { - id: '901', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:05:36.117Z', - updated_at: '2018-05-29T12:05:36.117Z', - system: false, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - note_html: - '<p dir="auto">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>', - current_user: { can_edit: true, can_award_emoji: true }, - resolved: false, - resolved_by: null, - discussion_id: '39b271c2033e9ed43d8edb393702f65f7a830459', - emoji_awardable: true, - award_emoji: [], - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_901&user_id=1', - human_access: 'Owner', - toggle_award_path: '/gitlab-org/gitlab-shell/notes/901/toggle_award_emoji', - path: '/gitlab-org/gitlab-shell/notes/901', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, - { - id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', - reply_id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', - expanded: true, - notes: [ - { - id: '902', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:05:58.694Z', - updated_at: '2018-05-29T12:05:58.694Z', - system: false, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: - 'Varius vel pharetra vel turpis nunc eget lorem. Ipsum dolor sit amet consectetur adipiscing.', - note_html: - '<p dir="auto">Varius vel pharetra vel turpis nunc eget lorem. Ipsum dolor sit amet consectetur adipiscing.</p>', - current_user: { can_edit: true, can_award_emoji: true }, - resolved: false, - resolved_by: null, - discussion_id: '4852335d7dc40b9ceb8fde1a2bb9c1b67e4c7795', - emoji_awardable: true, - award_emoji: [], - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_902&user_id=1', - human_access: 'Owner', - toggle_award_path: '/gitlab-org/gitlab-shell/notes/902/toggle_award_emoji', - path: '/gitlab-org/gitlab-shell/notes/902', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, - { - id: '091865fe3ae20f0045234a3d103e3b15e73405b5', - reply_id: '091865fe3ae20f0045234a3d103e3b15e73405b5', - expanded: true, - notes: [ - { - id: '904', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:06:16.112Z', - updated_at: '2018-05-29T12:06:16.112Z', - system: false, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: 'Ullamcorper eget nulla facilisi etiam', - note_html: '<p dir="auto">Ullamcorper eget nulla facilisi etiam</p>', - current_user: { can_edit: true, can_award_emoji: true }, - resolved: false, - resolved_by: null, - discussion_id: '091865fe3ae20f0045234a3d103e3b15e73405b5', - emoji_awardable: true, - award_emoji: [], - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_904&user_id=1', - human_access: 'Owner', - toggle_award_path: '/gitlab-org/gitlab-shell/notes/904/toggle_award_emoji', - path: '/gitlab-org/gitlab-shell/notes/904', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, - { - id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', - reply_id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', - expanded: true, - notes: [ - { - id: '905', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:06:28.851Z', - updated_at: '2018-05-29T12:06:28.851Z', - system: true, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: 'changed the description', - note_html: ' <p dir="auto">changed the description 2 times within 1 minute </p>', - current_user: { can_edit: false, can_award_emoji: true }, - resolved: false, - resolved_by: null, - system_note_icon_name: 'pencil-square', - discussion_id: 'a21cf2e804acc3c60d07e37d75e395f5a9a4d044', - emoji_awardable: false, - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_905&user_id=1', - human_access: 'Owner', - path: '/gitlab-org/gitlab-shell/notes/905', - times_updated: 2, - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, - { - id: '70411b08cdfc01f24187a06d77daa33464cb2620', - reply_id: '70411b08cdfc01f24187a06d77daa33464cb2620', - expanded: true, - notes: [ - { - id: '906', - type: null, - attachment: null, - author: { - id: 1, - name: 'Administrator', - username: 'root', - state: 'active', - avatar_url: - 'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon', - path: '/root', - }, - created_at: '2018-05-29T12:20:02.925Z', - updated_at: '2018-05-29T12:20:02.925Z', - system: true, - noteable_id: 182, - noteable_type: 'Issue', - resolvable: false, - noteable_iid: 12, - note: 'changed the description', - note_html: '<p dir="auto">changed the description</p>', - current_user: { can_edit: false, can_award_emoji: true }, - resolved: false, - resolved_by: null, - system_note_icon_name: 'pencil-square', - discussion_id: '70411b08cdfc01f24187a06d77daa33464cb2620', - emoji_awardable: false, - report_abuse_path: - '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-shell%2Fissues%2F12%23note_906&user_id=1', - human_access: 'Owner', - path: '/gitlab-org/gitlab-shell/notes/906', - }, - ], - individual_note: true, - resolvable: false, - resolved: false, - diff_discussion: false, - }, -]; - -export const discussion1 = { - id: 'abc1', - resolvable: true, - resolved: false, - active: true, - diff_file: { - file_path: 'about.md', - }, - position: { - new_line: 50, - old_line: null, - }, - notes: [ - { - created_at: '2018-07-04T16:25:41.749Z', - }, - ], -}; - -export const resolvedDiscussion1 = { - id: 'abc1', - resolvable: true, - resolved: true, - diff_file: { - file_path: 'about.md', - }, - position: { - new_line: 50, - old_line: null, - }, - notes: [ - { - created_at: '2018-07-04T16:25:41.749Z', - }, - ], -}; - -export const discussion2 = { - id: 'abc2', - resolvable: true, - resolved: false, - active: true, - diff_file: { - file_path: 'README.md', - }, - position: { - new_line: null, - old_line: 20, - }, - notes: [ - { - created_at: '2018-07-04T12:05:41.749Z', - }, - ], -}; - -export const discussion3 = { - id: 'abc3', - resolvable: true, - active: true, - resolved: false, - diff_file: { - file_path: 'README.md', - }, - position: { - new_line: 21, - old_line: null, - }, - notes: [ - { - created_at: '2018-07-05T17:25:41.749Z', - }, - ], -}; - -export const unresolvableDiscussion = { - resolvable: false, -}; - -export const discussionFiltersMock = [ - { - title: 'Show all activity', - value: 0, - }, - { - title: 'Show comments only', - value: 1, - }, - { - title: 'Show system notes only', - value: 2, - }, -]; +export * from '../../frontend/notes/mock_data.js'; |