Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-05-09 15:15:13 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-05-09 15:15:13 +0300
commit0b4adad74b76b34855e9a6d943f9b9188c3914fa (patch)
tree1084ffd8336bc8e9af6f7042a093bf78e0852ac3 /spec/frontend
parentece36a21699c2a218b8bd14b22bea47d22218354 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend')
-rw-r--r--spec/frontend/__mocks__/file_mock.js2
-rw-r--r--spec/frontend/authentication/password/components/password_input_spec.js23
-rw-r--r--spec/frontend/comment_templates/components/__snapshots__/list_item_spec.js.snap2
-rw-r--r--spec/frontend/fixtures/users.rb10
-rw-r--r--spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap12
-rw-r--r--spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/pypi_installation_spec.js.snap4
-rw-r--r--spec/frontend/profile/components/user_achievements_spec.js24
-rw-r--r--spec/frontend/vue_shared/components/__snapshots__/expand_button_spec.js.snap8
-rw-r--r--spec/frontend/vue_shared/issuable/__snapshots__/issuable_blocked_icon_spec.js.snap2
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\\">