diff options
Diffstat (limited to 'spec/frontend/design_management/components/design_notes/design_discussion_spec.js')
-rw-r--r-- | spec/frontend/design_management/components/design_notes/design_discussion_spec.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/spec/frontend/design_management/components/design_notes/design_discussion_spec.js b/spec/frontend/design_management/components/design_notes/design_discussion_spec.js index 9335d800a16..e816a05ba53 100644 --- a/spec/frontend/design_management/components/design_notes/design_discussion_spec.js +++ b/spec/frontend/design_management/components/design_notes/design_discussion_spec.js @@ -1,7 +1,9 @@ import { GlLoadingIcon } from '@gitlab/ui'; import { mount } from '@vue/test-utils'; +import { ApolloMutation } from 'vue-apollo'; import DesignDiscussion from '~/design_management/components/design_notes/design_discussion.vue'; import DesignNote from '~/design_management/components/design_notes/design_note.vue'; +import DesignNoteSignedOut from '~/design_management/components/design_notes/design_note_signed_out.vue'; import DesignReplyForm from '~/design_management/components/design_notes/design_reply_form.vue'; import ToggleRepliesWidget from '~/design_management/components/design_notes/toggle_replies_widget.vue'; import createNoteMutation from '~/design_management/graphql/mutations/create_note.mutation.graphql'; @@ -20,6 +22,7 @@ const defaultMockDiscussion = { const DEFAULT_TODO_COUNT = 2; describe('Design discussions component', () => { + const originalGon = window.gon; let wrapper; const findDesignNotes = () => wrapper.findAll(DesignNote); @@ -31,6 +34,7 @@ describe('Design discussions component', () => { const findResolvedMessage = () => wrapper.find('[data-testid="resolved-message"]'); const findResolveLoadingIcon = () => wrapper.find(GlLoadingIcon); const findResolveCheckbox = () => wrapper.find('[data-testid="resolve-checkbox"]'); + const findApolloMutation = () => wrapper.findComponent(ApolloMutation); const mutationVariables = { mutation: createNoteMutation, @@ -42,6 +46,8 @@ describe('Design discussions component', () => { }, }, }; + const registerPath = '/users/sign_up?redirect_to_referer=yes'; + const signInPath = '/users/sign_in?redirect_to_referer=yes'; const mutate = jest.fn().mockResolvedValue({ data: { createNote: { errors: [] } } }); const readQuery = jest.fn().mockReturnValue({ project: { @@ -62,6 +68,8 @@ describe('Design discussions component', () => { designId: 'design-id', discussionIndex: 1, discussionWithOpenForm: '', + registerPath, + signInPath, ...props, }, data() { @@ -88,8 +96,13 @@ describe('Design discussions component', () => { }); } + beforeEach(() => { + window.gon = { current_user_id: 1 }; + }); + afterEach(() => { wrapper.destroy(); + window.gon = originalGon; }); describe('when discussion is not resolvable', () => { @@ -349,4 +362,41 @@ describe('Design discussions component', () => { expect(wrapper.emitted('open-form')).toBeTruthy(); }); + + describe('when user is not logged in', () => { + const findDesignNoteSignedOut = () => wrapper.findComponent(DesignNoteSignedOut); + + beforeEach(() => { + window.gon = { current_user_id: null }; + createComponent( + { + discussion: { + ...defaultMockDiscussion, + }, + discussionWithOpenForm: defaultMockDiscussion.id, + }, + { discussionComment: 'test', isFormRendered: true }, + ); + }); + + it('does not render resolve discussion button', () => { + expect(findResolveButton().exists()).toBe(false); + }); + + it('does not render replace-placeholder component', () => { + expect(findReplyPlaceholder().exists()).toBe(false); + }); + + it('does not render apollo-mutation component', () => { + expect(findApolloMutation().exists()).toBe(false); + }); + + it('renders design-note-signed-out component', () => { + expect(findDesignNoteSignedOut().exists()).toBe(true); + expect(findDesignNoteSignedOut().props()).toMatchObject({ + registerPath, + signInPath, + }); + }); + }); }); |