diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-09 15:15:13 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-09 15:15:13 +0300 |
commit | 0b4adad74b76b34855e9a6d943f9b9188c3914fa (patch) | |
tree | 1084ffd8336bc8e9af6f7042a093bf78e0852ac3 /spec/frontend | |
parent | ece36a21699c2a218b8bd14b22bea47d22218354 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend')
9 files changed, 65 insertions, 22 deletions
diff --git a/spec/frontend/__mocks__/file_mock.js b/spec/frontend/__mocks__/file_mock.js index 08d725cd4e4..487d1d69de2 100644 --- a/spec/frontend/__mocks__/file_mock.js +++ b/spec/frontend/__mocks__/file_mock.js @@ -1 +1 @@ -export default ''; +export default 'file-mock'; diff --git a/spec/frontend/authentication/password/components/password_input_spec.js b/spec/frontend/authentication/password/components/password_input_spec.js index 623d986b36e..9960539af10 100644 --- a/spec/frontend/authentication/password/components/password_input_spec.js +++ b/spec/frontend/authentication/password/components/password_input_spec.js @@ -5,17 +5,21 @@ import { SHOW_PASSWORD, HIDE_PASSWORD } from '~/authentication/password/constant describe('PasswordInput', () => { let wrapper; + const propsData = { + title: 'This field is required', + id: 'new_user_password', + minimumPasswordLength: '8', + qaSelector: 'new_user_password_field', + autocomplete: 'new-password', + name: 'new_user', + }; const findPasswordInput = () => wrapper.findComponent(GlFormInput); const findToggleButton = () => wrapper.findComponent(GlButton); const createComponent = () => { return shallowMount(PasswordInput, { - propsData: { - resourceName: 'new_user', - minimumPasswordLength: '8', - qaSelector: 'new_user_password_field', - }, + propsData, }); }; @@ -23,6 +27,15 @@ describe('PasswordInput', () => { wrapper = createComponent(); }); + it('sets password input attributes correctly', () => { + expect(findPasswordInput().attributes('id')).toBe(propsData.id); + expect(findPasswordInput().attributes('autocomplete')).toBe(propsData.autocomplete); + expect(findPasswordInput().attributes('name')).toBe(propsData.name); + expect(findPasswordInput().attributes('minlength')).toBe(propsData.minimumPasswordLength); + expect(findPasswordInput().attributes('data-qa-selector')).toBe(propsData.qaSelector); + expect(findPasswordInput().attributes('title')).toBe(propsData.title); + }); + describe('when the show password button is clicked', () => { beforeEach(() => { findToggleButton().vm.$emit('click'); diff --git a/spec/frontend/comment_templates/components/__snapshots__/list_item_spec.js.snap b/spec/frontend/comment_templates/components/__snapshots__/list_item_spec.js.snap index 9c58090344d..0f158df6c05 100644 --- a/spec/frontend/comment_templates/components/__snapshots__/list_item_spec.js.snap +++ b/spec/frontend/comment_templates/components/__snapshots__/list_item_spec.js.snap @@ -38,7 +38,7 @@ exports[`Comment templates list item component renders list item 1`] = ` role="img" > <use - href="#ellipsis_v" + href="file-mock#ellipsis_v" /> </svg> diff --git a/spec/frontend/fixtures/users.rb b/spec/frontend/fixtures/users.rb index 6271aa87b9a..0e9d7475bf9 100644 --- a/spec/frontend/fixtures/users.rb +++ b/spec/frontend/fixtures/users.rb @@ -12,9 +12,11 @@ RSpec.describe 'Users (GraphQL fixtures)', feature_category: :user_profile do context 'for user achievements' do let_it_be(:group) { create(:group, :public) } + let_it_be(:private_group) { create(:group, :private) } let_it_be(:achievement1) { create(:achievement, namespace: group) } let_it_be(:achievement2) { create(:achievement, namespace: group) } let_it_be(:achievement3) { create(:achievement, namespace: group) } + let_it_be(:achievement_from_private_group) { create(:achievement, namespace: private_group) } let_it_be(:achievement_with_avatar_and_description) do create(:achievement, namespace: group, @@ -51,6 +53,14 @@ RSpec.describe 'Users (GraphQL fixtures)', feature_category: :user_profile do expect_graphql_errors_to_be_empty end + it 'graphql/get_user_achievements_from_private_group.json' do + create(:user_achievement, user: user, achievement: achievement_from_private_group) + + post_graphql(query, current_user: user, variables: { id: user.to_global_id }) + + expect_graphql_errors_to_be_empty + end + it "graphql/get_user_achievements_long_response.json" do [achievement1, achievement2, achievement3, achievement_with_avatar_and_description].each do |achievement| create(:user_achievement, user: user, achievement: achievement) diff --git a/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap b/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap index 6766456d09c..abd849b387e 100644 --- a/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap +++ b/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap @@ -76,7 +76,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = role="img" > <use - href="#arrow-right" + href="file-mock#arrow-right" /> </svg> </td> @@ -113,7 +113,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = role="img" > <use - href="#chevron-down" + href="file-mock#chevron-down" /> </svg> </button> @@ -144,7 +144,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = role="img" > <use - href="#search" + href="file-mock#search" /> </svg> @@ -201,7 +201,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = role="img" > <use - href="#arrow-right" + href="file-mock#arrow-right" /> </svg> </td> @@ -238,7 +238,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = role="img" > <use - href="#chevron-down" + href="file-mock#chevron-down" /> </svg> </button> @@ -269,7 +269,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = role="img" > <use - href="#search" + href="file-mock#search" /> </svg> diff --git a/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/pypi_installation_spec.js.snap b/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/pypi_installation_spec.js.snap index 5d390730ef1..b4ea6543446 100644 --- a/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/pypi_installation_spec.js.snap +++ b/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/pypi_installation_spec.js.snap @@ -42,7 +42,7 @@ exports[`PypiInstallation renders all the messages 1`] = ` role="img" > <use - href="#chevron-down" + href="file-mock#chevron-down" /> </svg> </button> @@ -122,7 +122,7 @@ exports[`PypiInstallation renders all the messages 1`] = ` role="img" > <use - href="#copy-to-clipboard" + href="file-mock#copy-to-clipboard" /> </svg> diff --git a/spec/frontend/profile/components/user_achievements_spec.js b/spec/frontend/profile/components/user_achievements_spec.js index 5b584eff362..ff6f323621a 100644 --- a/spec/frontend/profile/components/user_achievements_spec.js +++ b/spec/frontend/profile/components/user_achievements_spec.js @@ -3,12 +3,13 @@ import VueApollo from 'vue-apollo'; import getUserAchievementsEmptyResponse from 'test_fixtures/graphql/get_user_achievements_empty_response.json'; import getUserAchievementsLongResponse from 'test_fixtures/graphql/get_user_achievements_long_response.json'; import getUserAchievementsResponse from 'test_fixtures/graphql/get_user_achievements_with_avatar_and_description_response.json'; +import getUserAchievementsPrivateGroupResponse from 'test_fixtures/graphql/get_user_achievements_from_private_group.json'; import getUserAchievementsNoAvatarResponse from 'test_fixtures/graphql/get_user_achievements_without_avatar_or_description_response.json'; import createMockApollo from 'helpers/mock_apollo_helper'; import waitForPromises from 'helpers/wait_for_promises'; import UserAchievements from '~/profile/components/user_achievements.vue'; import getUserAchievements from '~/profile/components//graphql/get_user_achievements.query.graphql'; -import timeagoMixin from '~/vue_shared/mixins/timeago'; +import { getTimeago, timeagoLanguageCode } from '~/lib/utils/datetime_utility'; import { mountExtended } from 'helpers/vue_test_utils_helper'; const USER_ID = 123; @@ -62,6 +63,25 @@ describe('UserAchievements', () => { expect(wrapper.findAllByTestId('user-achievement').length).toBe(3); }); + it('renders correctly if the achievement is from a private namespace', async () => { + createComponent({ + queryHandler: jest.fn().mockResolvedValue(getUserAchievementsPrivateGroupResponse), + }); + + await waitForPromises(); + + const userAchievement = + getUserAchievementsPrivateGroupResponse.data.user.userAchievements.nodes[0]; + + expect(achievement().text()).toContain(userAchievement.achievement.name); + expect(achievement().text()).toContain( + `Awarded ${getTimeago().format( + userAchievement.createdAt, + timeagoLanguageCode, + )} by a private namespace`, + ); + }); + it('renders achievement correctly', async () => { createComponent(); @@ -69,7 +89,7 @@ describe('UserAchievements', () => { expect(achievement().text()).toContain(userAchievement1.achievement.name); expect(achievement().text()).toContain( - `Awarded ${timeagoMixin.methods.timeFormatted(userAchievement1.createdAt)} by`, + `Awarded ${getTimeago().format(userAchievement1.createdAt, timeagoLanguageCode)} by`, ); expect(achievement().text()).toContain(userAchievement1.achievement.namespace.fullPath); expect(achievement().text()).toContain(userAchievement1.achievement.description); diff --git a/spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap b/spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap index 45d34bcdd3f..b93c64efbcb 100644 --- a/spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap +++ b/spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap @@ -17,7 +17,7 @@ exports[`Expand button on click when short text is provided renders button after role="img" > <use - href="#ellipsis_h" + href="file-mock#ellipsis_h" /> </svg> @@ -47,7 +47,7 @@ exports[`Expand button on click when short text is provided renders button after role="img" > <use - href="#ellipsis_h" + href="file-mock#ellipsis_h" /> </svg> @@ -72,7 +72,7 @@ exports[`Expand button when short text is provided renders button before text 1` role="img" > <use - href="#ellipsis_h" + href="file-mock#ellipsis_h" /> </svg> @@ -102,7 +102,7 @@ exports[`Expand button when short text is provided renders button before text 1` role="img" > <use - href="#ellipsis_h" + href="file-mock#ellipsis_h" /> </svg> diff --git a/spec/frontend/vue_shared/issuable/__snapshots__/issuable_blocked_icon_spec.js.snap b/spec/frontend/vue_shared/issuable/__snapshots__/issuable_blocked_icon_spec.js.snap index dd011b9d84e..1d4aa1afeaf 100644 --- a/spec/frontend/vue_shared/issuable/__snapshots__/issuable_blocked_icon_spec.js.snap +++ b/spec/frontend/vue_shared/issuable/__snapshots__/issuable_blocked_icon_spec.js.snap @@ -2,7 +2,7 @@ exports[`IssuableBlockedIcon on mouseenter on blocked icon with more than three blocking issues matches the snapshot 1`] = ` "<div class=\\"gl-display-inline\\"><svg data-testid=\\"issuable-blocked-icon\\" role=\\"img\\" aria-hidden=\\"true\\" class=\\"issuable-blocked-icon gl-mr-2 gl-cursor-pointer gl-text-red-500 gl-icon s16\\" id=\\"blocked-icon-uniqueId\\"> - <use href=\\"#issue-block\\"></use> + <use href=\\"file-mock#issue-block\\"></use> </svg> <div class=\\"gl-popover\\"> <ul class=\\"gl-list-style-none gl-p-0 gl-mb-0\\"> |