From 06af519348e7254062a7d03ef3e421356ff8c64a Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 9 Mar 2023 06:12:08 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../markdown/saved_replies_dropdown_spec.js | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 spec/frontend/vue_shared/components/markdown/saved_replies_dropdown_spec.js (limited to 'spec/frontend/vue_shared') diff --git a/spec/frontend/vue_shared/components/markdown/saved_replies_dropdown_spec.js b/spec/frontend/vue_shared/components/markdown/saved_replies_dropdown_spec.js new file mode 100644 index 00000000000..8ad9ad30c1d --- /dev/null +++ b/spec/frontend/vue_shared/components/markdown/saved_replies_dropdown_spec.js @@ -0,0 +1,62 @@ +import Vue from 'vue'; +import VueApollo from 'vue-apollo'; +import savedRepliesResponse from 'test_fixtures/graphql/saved_replies/saved_replies.query.graphql.json'; +import { mountExtended } from 'helpers/vue_test_utils_helper'; +import createMockApollo from 'helpers/mock_apollo_helper'; +import waitForPromises from 'helpers/wait_for_promises'; +import SavedRepliesDropdown from '~/vue_shared/components/markdown/saved_replies_dropdown.vue'; +import savedRepliesQuery from '~/vue_shared/components/markdown/saved_replies.query.graphql'; + +let wrapper; +let savedRepliesResp; + +function createMockApolloProvider(response) { + Vue.use(VueApollo); + + savedRepliesResp = jest.fn().mockResolvedValue(response); + + const requestHandlers = [[savedRepliesQuery, savedRepliesResp]]; + + return createMockApollo(requestHandlers); +} + +function createComponent(options = {}) { + const { mockApollo } = options; + + return mountExtended(SavedRepliesDropdown, { + propsData: { + newSavedRepliesPath: '/new', + }, + apolloProvider: mockApollo, + }); +} + +describe('Saved replies dropdown', () => { + it('fetches data when dropdown gets opened', async () => { + const mockApollo = createMockApolloProvider(savedRepliesResponse); + wrapper = createComponent({ mockApollo }); + + wrapper.findByTestId('saved-replies-dropdown-toggle').trigger('click'); + + await waitForPromises(); + + expect(savedRepliesResp).toHaveBeenCalled(); + }); + + it('adds markdown toolbar attributes to dropdown items', async () => { + const mockApollo = createMockApolloProvider(savedRepliesResponse); + wrapper = createComponent({ mockApollo }); + + wrapper.findByTestId('saved-replies-dropdown-toggle').trigger('click'); + + await waitForPromises(); + + expect(wrapper.findByTestId('saved-reply-dropdown-item').attributes()).toEqual( + expect.objectContaining({ + 'data-md-cursor-offset': '0', + 'data-md-prepend': 'true', + 'data-md-tag': 'Saved Reply Content', + }), + ); + }); +}); -- cgit v1.2.3