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-07-12 09:10:10 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-07-12 09:10:10 +0300
commit09acddd7fd2b59afa69eca95b1e34739e1f1b31b (patch)
tree3376c27fb8183ad2af565706677736d267281c83 /spec/frontend
parentbb01b338bfbc6e17996696145e6c495694b8f745 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend')
-rw-r--r--spec/frontend/dropzone_input_spec.js2
-rw-r--r--spec/frontend/fixtures/milestones.rb43
-rw-r--r--spec/frontend/fixtures/static/textarea.html27
-rw-r--r--spec/frontend/packages_and_registries/package_registry/components/list/package_list_row_spec.js13
-rw-r--r--spec/frontend/packages_and_registries/package_registry/components/list/packages_list_spec.js26
5 files changed, 59 insertions, 52 deletions
diff --git a/spec/frontend/dropzone_input_spec.js b/spec/frontend/dropzone_input_spec.js
index 57debf79c7b..ba4d838e44b 100644
--- a/spec/frontend/dropzone_input_spec.js
+++ b/spec/frontend/dropzone_input_spec.js
@@ -1,6 +1,5 @@
import MockAdapter from 'axios-mock-adapter';
import $ from 'jquery';
-import htmlNewMilestone from 'test_fixtures/milestones/new-milestone.html';
import mock from 'xhr-mock';
import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures';
import waitForPromises from 'helpers/wait_for_promises';
@@ -9,6 +8,7 @@ import PasteMarkdownTable from '~/behaviors/markdown/paste_markdown_table';
import dropzoneInput from '~/dropzone_input';
import axios from '~/lib/utils/axios_utils';
import { HTTP_STATUS_BAD_REQUEST, HTTP_STATUS_OK } from '~/lib/utils/http_status';
+import htmlNewMilestone from 'test_fixtures_static/textarea.html';
const TEST_FILE = new File([], 'somefile.jpg');
TEST_FILE.upload = {};
diff --git a/spec/frontend/fixtures/milestones.rb b/spec/frontend/fixtures/milestones.rb
deleted file mode 100644
index 5e39dcf190a..00000000000
--- a/spec/frontend/fixtures/milestones.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Projects::MilestonesController, '(JavaScript fixtures)', :with_license, feature_category: :team_planning, type: :controller do
- include JavaScriptFixturesHelpers
-
- let_it_be(:user) { create(:user, feed_token: 'feedtoken:coldfeed') }
- let_it_be(:namespace) { create(:namespace, name: 'frontend-fixtures') }
- let_it_be(:project) { create(:project_empty_repo, namespace: namespace, path: 'milestones-project') }
-
- render_views
-
- before do
- project.add_maintainer(user)
- sign_in(user)
- end
-
- after do
- remove_repository(project)
- end
-
- it 'milestones/new-milestone.html' do
- get :new, params: {
- namespace_id: project.namespace.to_param,
- project_id: project
- }
-
- expect(response).to be_successful
- end
-
- private
-
- def render_milestone(milestone)
- get :show, params: {
- namespace_id: project.namespace.to_param,
- project_id: project,
- id: milestone.to_param
- }
-
- expect(response).to be_successful
- end
-end
diff --git a/spec/frontend/fixtures/static/textarea.html b/spec/frontend/fixtures/static/textarea.html
new file mode 100644
index 00000000000..68d5a0f2d4d
--- /dev/null
+++ b/spec/frontend/fixtures/static/textarea.html
@@ -0,0 +1,27 @@
+<body>
+<meta charset="utf-8">
+<title>Document with Textarea</title>
+<form class="milestone-form common-note-form js-quick-submit js-requires-input" id="new_milestone"
+ action="http://test.host/frontend-fixtures/milestones-project/-/milestones"
+ accept-charset="UTF-8" method="post">
+ <div class="form-group">
+ <div class="md-write-holder">
+ <div class="zen-backdrop">
+ <textarea class="note-textarea js-gfm-input js-autosize markdown-area"
+ placeholder="Write milestone description..." dir="auto"
+ data-supports-quick-actions="false" data-supports-autocomplete="true"
+ data-qa-selector="milestone_description_field" data-autofocus="false"
+ name="milestone[description]"
+ id="milestone_description"></textarea>
+ <a class="zen-control zen-control-leave js-zen-leave gl-text-gray-500"
+ href="#">
+ <svg class="s16" data-testid="minimize-icon">
+ <use href="http://test.host/assets/icons-b8c5a9711f73b1de3c81754da0aca72f43b0e6844aa06dd03092b601a493f45b.svg#minimize"></use>
+ </svg>
+ </a>
+ </div>
+ </div>
+ </div>
+</form>
+
+</body>
diff --git a/spec/frontend/packages_and_registries/package_registry/components/list/package_list_row_spec.js b/spec/frontend/packages_and_registries/package_registry/components/list/package_list_row_spec.js
index 7a96ddc7afc..523d5f855fc 100644
--- a/spec/frontend/packages_and_registries/package_registry/components/list/package_list_row_spec.js
+++ b/spec/frontend/packages_and_registries/package_registry/components/list/package_list_row_spec.js
@@ -27,11 +27,11 @@ describe('packages_list_row', () => {
const defaultProvide = {
isGroupPage: false,
+ canDeletePackages: true,
};
const packageWithoutTags = { ...packageData(), project: packageProject(), ...linksData };
const packageWithTags = { ...packageWithoutTags, tags: { nodes: packageTags() } };
- const packageCannotDestroy = { ...packageData(), ...linksData, canDestroy: false };
const findPackageTags = () => wrapper.findComponent(PackageTags);
const findDeleteDropdown = () => wrapper.findByTestId('action-delete');
@@ -105,7 +105,9 @@ describe('packages_list_row', () => {
describe('delete button', () => {
it('does not exist when package cannot be destroyed', () => {
- mountComponent({ packageEntity: packageCannotDestroy });
+ mountComponent({
+ packageEntity: { ...packageWithoutTags, canDestroy: false },
+ });
expect(findDeleteDropdown().exists()).toBe(false);
});
@@ -168,7 +170,10 @@ describe('packages_list_row', () => {
describe('left action template', () => {
it('does not render checkbox if not permitted', () => {
mountComponent({
- packageEntity: { ...packageWithoutTags, canDestroy: false },
+ provide: {
+ ...defaultProvide,
+ canDeletePackages: false,
+ },
});
expect(findBulkDeleteAction().exists()).toBe(false);
@@ -248,6 +253,7 @@ describe('packages_list_row', () => {
it('if the package is published through CI show the project and author name', () => {
mountComponent({
provide: {
+ ...defaultProvide,
isGroupPage: true,
},
packageEntity: { ...packageWithoutTags, pipelines: { nodes: packagePipelines() } },
@@ -261,6 +267,7 @@ describe('packages_list_row', () => {
it('if the package is published manually dont show project and the author name', () => {
mountComponent({
provide: {
+ ...defaultProvide,
isGroupPage: true,
},
packageEntity: { ...packageWithoutTags },
diff --git a/spec/frontend/packages_and_registries/package_registry/components/list/packages_list_spec.js b/spec/frontend/packages_and_registries/package_registry/components/list/packages_list_spec.js
index 483b7a9383d..fad8863e3d9 100644
--- a/spec/frontend/packages_and_registries/package_registry/components/list/packages_list_spec.js
+++ b/spec/frontend/packages_and_registries/package_registry/components/list/packages_list_spec.js
@@ -41,6 +41,10 @@ describe('packages_list', () => {
groupSettings: defaultPackageGroupSettings,
};
+ const defaultProvide = {
+ canDeletePackages: true,
+ };
+
const EmptySlotStub = { name: 'empty-slot-stub', template: '<div>bar</div>' };
const findPackagesListLoader = () => wrapper.findComponent(PackagesListLoader);
@@ -52,8 +56,9 @@ describe('packages_list', () => {
const showMock = jest.fn();
- const mountComponent = (props) => {
+ const mountComponent = ({ props = {}, provide = defaultProvide } = {}) => {
wrapper = shallowMountExtended(PackagesList, {
+ provide,
propsData: {
...defaultProps,
...props,
@@ -75,7 +80,7 @@ describe('packages_list', () => {
describe('when is loading', () => {
beforeEach(() => {
- mountComponent({ isLoading: true });
+ mountComponent({ props: { isLoading: true } });
});
it('shows skeleton loader', () => {
@@ -109,6 +114,7 @@ describe('packages_list', () => {
title: '2 packages',
items: defaultProps.list,
pagination: defaultProps.pageInfo,
+ hiddenDelete: false,
isLoading: false,
});
});
@@ -137,6 +143,16 @@ describe('packages_list', () => {
});
});
+ describe('when the user does not have permission to destroy packages', () => {
+ beforeEach(() => {
+ mountComponent({ provide: { canDeletePackages: false } });
+ });
+
+ it('sets the hidden delete prop of registry list to true', () => {
+ expect(findRegistryList().props('hiddenDelete')).toBe(true);
+ });
+ });
+
describe.each`
description | finderFunction | deletePayload
${'when the user can destroy the package'} | ${findPackagesListRow} | ${firstPackage}
@@ -262,7 +278,7 @@ describe('packages_list', () => {
describe('when an error package is present', () => {
beforeEach(() => {
- mountComponent({ list: [firstPackage, errorPackage] });
+ mountComponent({ props: { list: [firstPackage, errorPackage] } });
return nextTick();
});
@@ -290,7 +306,7 @@ describe('packages_list', () => {
describe('when the list is empty', () => {
beforeEach(() => {
- mountComponent({ list: [] });
+ mountComponent({ props: { list: [] } });
});
it('show the empty slot', () => {
@@ -301,7 +317,7 @@ describe('packages_list', () => {
describe('pagination', () => {
beforeEach(() => {
- mountComponent({ pageInfo: { hasPreviousPage: true } });
+ mountComponent({ props: { pageInfo: { hasPreviousPage: true } } });
});
it('emits prev-page events when the prev event is fired', () => {