From aacb3dfc61c60d775a4f05cf8d55795c3d165f6f Mon Sep 17 00:00:00 2001
From: Artur Fedorov <afedorov@gitlab.com>
Date: Thu, 22 Jun 2023 13:09:22 +0000
Subject: [PATCH] This MR removes direct data manipulation

As part of Vue 3 migration
overriding method behavior and
direct data manipulation
should be avoided
---
 .../vue_shared/components/user_select_spec.js | 27 ++++++++++---------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/spec/frontend/vue_shared/components/user_select_spec.js b/spec/frontend/vue_shared/components/user_select_spec.js
index e881bfed35eb8..8c7657da8bc77 100644
--- a/spec/frontend/vue_shared/components/user_select_spec.js
+++ b/spec/frontend/vue_shared/components/user_select_spec.js
@@ -1,10 +1,10 @@
 import { GlSearchBoxByType } from '@gitlab/ui';
-import { shallowMount } from '@vue/test-utils';
 import { cloneDeep } from 'lodash';
 import Vue, { nextTick } from 'vue';
 import VueApollo from 'vue-apollo';
 import createMockApollo from 'helpers/mock_apollo_helper';
 import waitForPromises from 'helpers/wait_for_promises';
+import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
 import searchUsersQuery from '~/graphql_shared/queries/users_search.query.graphql';
 import searchUsersQueryOnMR from '~/graphql_shared/queries/users_search_with_mr_permissions.graphql';
 import { TYPE_MERGE_REQUEST } from '~/issues/constants';
@@ -44,20 +44,20 @@ Vue.use(VueApollo);
 describe('User select dropdown', () => {
   let wrapper;
   let fakeApollo;
+  const hideDropdownMock = jest.fn();
 
   const findSearchField = () => wrapper.findComponent(GlSearchBoxByType);
-  const findParticipantsLoading = () => wrapper.find('[data-testid="loading-participants"]');
-  const findSelectedParticipants = () => wrapper.findAll('[data-testid="selected-participant"]');
+  const findParticipantsLoading = () => wrapper.findByTestId('loading-participants');
+  const findSelectedParticipants = () => wrapper.findAllByTestId('selected-participant');
   const findSelectedParticipantByIndex = (index) =>
     findSelectedParticipants().at(index).findComponent(SidebarParticipant);
-  const findUnselectedParticipants = () =>
-    wrapper.findAll('[data-testid="unselected-participant"]');
+  const findUnselectedParticipants = () => wrapper.findAllByTestId('unselected-participant');
   const findUnselectedParticipantByIndex = (index) =>
     findUnselectedParticipants().at(index).findComponent(SidebarParticipant);
-  const findCurrentUser = () => wrapper.findAll('[data-testid="current-user"]');
-  const findIssuableAuthor = () => wrapper.findAll('[data-testid="issuable-author"]');
-  const findUnassignLink = () => wrapper.find('[data-testid="unassign"]');
-  const findEmptySearchResults = () => wrapper.find('[data-testid="empty-results"]');
+  const findCurrentUser = () => wrapper.findAllByTestId('current-user');
+  const findIssuableAuthor = () => wrapper.findAllByTestId('issuable-author');
+  const findUnassignLink = () => wrapper.findByTestId('unassign');
+  const findEmptySearchResults = () => wrapper.findAllByTestId('empty-results');
 
   const searchQueryHandlerSuccess = jest.fn().mockResolvedValue(projectMembersResponse);
   const participantsQueryHandlerSuccess = jest.fn().mockResolvedValue(participantsQueryResponse);
@@ -72,7 +72,7 @@ describe('User select dropdown', () => {
       [searchUsersQueryOnMR, jest.fn().mockResolvedValue(searchResponseOnMR)],
       [getIssueParticipantsQuery, participantsQueryHandler],
     ]);
-    wrapper = shallowMount(UserSelect, {
+    wrapper = shallowMountExtended(UserSelect, {
       apolloProvider: fakeApollo,
       propsData: {
         headerText: 'test',
@@ -97,7 +97,7 @@ describe('User select dropdown', () => {
             </div>
           `,
           methods: {
-            hide: jest.fn(),
+            hide: hideDropdownMock,
           },
         },
       },
@@ -106,6 +106,7 @@ describe('User select dropdown', () => {
 
   afterEach(() => {
     fakeApollo = null;
+    hideDropdownMock.mockClear();
   });
 
   it('renders a loading spinner if participants are loading', () => {
@@ -290,12 +291,12 @@ describe('User select dropdown', () => {
           value: [assignee],
         },
       });
-      wrapper.vm.$refs.dropdown.hide = jest.fn();
+
       await waitForPromises();
 
       findUnassignLink().trigger('click');
 
-      expect(wrapper.vm.$refs.dropdown.hide).toHaveBeenCalledTimes(1);
+      expect(hideDropdownMock).toHaveBeenCalledTimes(1);
     });
 
     it('emits an empty array after unselecting the only selected assignee', async () => {
-- 
GitLab