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
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2024-01-09 03:13:20 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2024-01-09 03:13:20 +0300
commit3f8e9ba69efda3ef8f3989c5c4d56e422367200a (patch)
tree2d9595bc11eac94c7ff11aa1c2497dd269f81054 /spec
parent5b5ff31460fc5572abbd8b7ee35f303a6f1df196 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/controllers/import/bulk_imports_controller_spec.rb24
-rw-r--r--spec/controllers/projects/packages/infrastructure_registry_controller_spec.rb2
-rw-r--r--spec/controllers/projects/packages/packages_controller_spec.rb2
-rw-r--r--spec/frontend/import_entities/import_groups/components/import_status_spec.js1
-rw-r--r--spec/frontend/pages/import/bulk_imports/history/components/bulk_imports_history_app_spec.js112
-rw-r--r--spec/frontend/performance_bar/components/performance_bar_app_spec.js3
-rw-r--r--spec/frontend/performance_bar/components/request_warning_spec.js23
-rw-r--r--spec/frontend/super_sidebar/components/create_menu_spec.js1
-rw-r--r--spec/frontend/work_items/components/work_item_assignees_spec.js3
9 files changed, 80 insertions, 91 deletions
diff --git a/spec/controllers/import/bulk_imports_controller_spec.rb b/spec/controllers/import/bulk_imports_controller_spec.rb
index 9b41089f4b8..54192f010ed 100644
--- a/spec/controllers/import/bulk_imports_controller_spec.rb
+++ b/spec/controllers/import/bulk_imports_controller_spec.rb
@@ -303,27 +303,11 @@ RSpec.describe Import::BulkImportsController, feature_category: :importers do
describe 'GET details' do
subject(:request) { get :details }
- context 'when bulk_import_details_page feature flag is enabled' do
- before do
- stub_feature_flags(bulk_import_details_page: true)
- request
- end
-
- it 'responds with a 200 and shows the template', :aggregate_failures do
- expect(response).to have_gitlab_http_status(:ok)
- expect(response).to render_template(:details)
- end
- end
+ it 'responds with a 200 and shows the template', :aggregate_failures do
+ request
- context 'when bulk_import_details_page feature flag is disabled' do
- before do
- stub_feature_flags(bulk_import_details_page: false)
- request
- end
-
- it 'responds with a 404' do
- expect(response).to have_gitlab_http_status(:not_found)
- end
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to render_template(:details)
end
end
diff --git a/spec/controllers/projects/packages/infrastructure_registry_controller_spec.rb b/spec/controllers/projects/packages/infrastructure_registry_controller_spec.rb
index fc741d0f3f6..292c4017d8e 100644
--- a/spec/controllers/projects/packages/infrastructure_registry_controller_spec.rb
+++ b/spec/controllers/projects/packages/infrastructure_registry_controller_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Projects::Packages::InfrastructureRegistryController do
+RSpec.describe Projects::Packages::InfrastructureRegistryController, feature_category: :package_registry do
let_it_be(:user) { create(:user) }
let_it_be(:project) { create(:project, :private) }
diff --git a/spec/controllers/projects/packages/packages_controller_spec.rb b/spec/controllers/projects/packages/packages_controller_spec.rb
index da9cae47c62..8570af075ad 100644
--- a/spec/controllers/projects/packages/packages_controller_spec.rb
+++ b/spec/controllers/projects/packages/packages_controller_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Projects::Packages::PackagesController do
+RSpec.describe Projects::Packages::PackagesController, feature_category: :package_registry do
let_it_be(:project) { create(:project, :public) }
let(:page) { :index }
diff --git a/spec/frontend/import_entities/import_groups/components/import_status_spec.js b/spec/frontend/import_entities/import_groups/components/import_status_spec.js
index 8d055d45dd8..e0cabb86dcf 100644
--- a/spec/frontend/import_entities/import_groups/components/import_status_spec.js
+++ b/spec/frontend/import_entities/import_groups/components/import_status_spec.js
@@ -88,7 +88,6 @@ describe('Group import status component', () => {
id: 2,
entityId: 11,
hasFailures: true,
- showDetailsLink: true,
status: STATUSES.FINISHED,
},
});
diff --git a/spec/frontend/pages/import/bulk_imports/history/components/bulk_imports_history_app_spec.js b/spec/frontend/pages/import/bulk_imports/history/components/bulk_imports_history_app_spec.js
index 3db77469d6b..1c9d8f17210 100644
--- a/spec/frontend/pages/import/bulk_imports/history/components/bulk_imports_history_app_spec.js
+++ b/spec/frontend/pages/import/bulk_imports/history/components/bulk_imports_history_app_spec.js
@@ -1,13 +1,13 @@
import { GlEmptyState, GlLoadingIcon, GlTableLite } from '@gitlab/ui';
import { mount, shallowMount } from '@vue/test-utils';
import MockAdapter from 'axios-mock-adapter';
-import { extendedWrapper } from 'helpers/vue_test_utils_helper';
import axios from '~/lib/utils/axios_utils';
import waitForPromises from 'helpers/wait_for_promises';
import { HTTP_STATUS_OK } from '~/lib/utils/http_status';
import { getParameterValues } from '~/lib/utils/url_utility';
import BulkImportsHistoryApp from '~/pages/import/bulk_imports/history/components/bulk_imports_history_app.vue';
+import ImportStatus from '~/import_entities/import_groups/components/import_status.vue';
import PaginationBar from '~/vue_shared/components/pagination_bar/pagination_bar.vue';
import LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue';
@@ -39,6 +39,7 @@ describe('BulkImportsHistoryApp', () => {
destination_slug: 'top-level-group-12',
destination_namespace: 'h5bp',
created_at: '2021-07-08T10:03:44.743Z',
+ has_failures: false,
failures: [],
},
{
@@ -56,6 +57,7 @@ describe('BulkImportsHistoryApp', () => {
project_id: null,
created_at: '2021-07-13T12:52:26.664Z',
updated_at: '2021-07-13T13:34:49.403Z',
+ has_failures: true,
failures: [
{
pipeline_class: 'BulkImports::Groups::Pipelines::GroupPipeline',
@@ -72,15 +74,19 @@ describe('BulkImportsHistoryApp', () => {
let mock;
const mockRealtimeChangesPath = '/import/realtime_changes.json';
- function createComponent({ shallow = true } = {}) {
+ function createComponent({ shallow = true, provide } = {}) {
const mountFn = shallow ? shallowMount : mount;
wrapper = mountFn(BulkImportsHistoryApp, {
- provide: { realtimeChangesPath: mockRealtimeChangesPath },
+ provide: {
+ realtimeChangesPath: mockRealtimeChangesPath,
+ ...provide,
+ },
});
}
const findLocalStorageSync = () => wrapper.findComponent(LocalStorageSync);
const findPaginationBar = () => wrapper.findComponent(PaginationBar);
+ const findImportStatusAt = (index) => wrapper.findAllComponents(ImportStatus).at(index);
beforeEach(() => {
gon.api_version = 'v4';
@@ -201,77 +207,59 @@ describe('BulkImportsHistoryApp', () => {
expect(findLocalStorageSync().props('value')).toBe(NEW_PAGE_SIZE);
});
- it('renders link to destination_full_path for destination group', async () => {
- createComponent({ shallow: false });
- await waitForPromises();
-
- expect(wrapper.find('tbody tr a').attributes().href).toBe(
- `/${DUMMY_RESPONSE[0].destination_full_path}`,
- );
- });
-
- it('renders destination as text when destination_full_path is not defined', async () => {
- const RESPONSE = [{ ...DUMMY_RESPONSE[0], destination_full_path: null }];
-
- mock.onGet(BULK_IMPORTS_API_URL).reply(HTTP_STATUS_OK, RESPONSE, DEFAULT_HEADERS);
- createComponent({ shallow: false });
- await waitForPromises();
-
- expect(wrapper.find('tbody tr a').exists()).toBe(false);
- expect(wrapper.find('tbody tr span').text()).toBe(
- `${DUMMY_RESPONSE[0].destination_namespace}/${DUMMY_RESPONSE[0].destination_slug}/`,
- );
- });
-
- it('adds slash to group urls', async () => {
- createComponent({ shallow: false });
- await waitForPromises();
-
- expect(wrapper.find('tbody tr a').text()).toBe(`${DUMMY_RESPONSE[0].destination_full_path}/`);
- });
+ describe('table rendering', () => {
+ beforeEach(async () => {
+ createComponent({ shallow: false });
+ await waitForPromises();
+ });
- it('does not prefixes project urls with slash', async () => {
- createComponent({ shallow: false });
- await waitForPromises();
+ it('renders link to destination_full_path for destination group', () => {
+ expect(wrapper.find('tbody tr a').attributes().href).toBe(
+ `/${DUMMY_RESPONSE[0].destination_full_path}`,
+ );
+ });
- expect(wrapper.findAll('tbody tr a').at(1).text()).toBe(
- DUMMY_RESPONSE[1].destination_full_path,
- );
- });
+ it('renders destination as text when destination_full_path is not defined', async () => {
+ const RESPONSE = [{ ...DUMMY_RESPONSE[0], destination_full_path: null }];
- describe('details button', () => {
- beforeEach(() => {
- mock.onGet(BULK_IMPORTS_API_URL).reply(HTTP_STATUS_OK, DUMMY_RESPONSE, DEFAULT_HEADERS);
+ mock.onGet(BULK_IMPORTS_API_URL).reply(HTTP_STATUS_OK, RESPONSE, DEFAULT_HEADERS);
createComponent({ shallow: false });
- return waitForPromises();
+ await waitForPromises();
+
+ expect(wrapper.find('tbody tr a').exists()).toBe(false);
+ expect(wrapper.find('tbody tr span').text()).toBe(
+ `${DUMMY_RESPONSE[0].destination_namespace}/${DUMMY_RESPONSE[0].destination_slug}/`,
+ );
});
- it('renders details button if relevant item has failures', () => {
- expect(
- extendedWrapper(wrapper.find('tbody').findAll('tr').at(1)).findByText('Details').exists(),
- ).toBe(true);
+ it('adds slash to group urls', () => {
+ expect(wrapper.find('tbody tr a').text()).toBe(`${DUMMY_RESPONSE[0].destination_full_path}/`);
});
- it('does not render details button if relevant item has no failures', () => {
- expect(
- extendedWrapper(wrapper.find('tbody').findAll('tr').at(0)).findByText('Details').exists(),
- ).toBe(false);
+ it('does not prefix project urls with slash', () => {
+ expect(wrapper.findAll('tbody tr a').at(1).text()).toBe(
+ DUMMY_RESPONSE[1].destination_full_path,
+ );
});
- it('expands details when details button is clicked', async () => {
- const ORIGINAL_ROW_INDEX = 1;
- await extendedWrapper(wrapper.find('tbody').findAll('tr').at(ORIGINAL_ROW_INDEX))
- .findByText('Details')
- .trigger('click');
+ it('renders finished import status', () => {
+ expect(findImportStatusAt(0).text()).toBe('Complete');
+ });
- const detailsRowContent = wrapper
- .find('tbody')
- .findAll('tr')
- .at(ORIGINAL_ROW_INDEX + 1)
- .find('pre');
+ it('renders failed import status with details link', async () => {
+ createComponent({
+ shallow: false,
+ provide: {
+ detailsPath: '/mock-details',
+ },
+ });
+ await waitForPromises();
- expect(detailsRowContent.exists()).toBe(true);
- expect(JSON.parse(detailsRowContent.text())).toStrictEqual(DUMMY_RESPONSE[1].failures);
+ const failedImportStatus = findImportStatusAt(1);
+ const failedImportStatusLink = failedImportStatus.find('a');
+ expect(failedImportStatus.text()).toContain('Failed');
+ expect(failedImportStatusLink.text()).toBe('See failures');
+ expect(failedImportStatusLink.attributes('href')).toContain('/mock-details');
});
});
diff --git a/spec/frontend/performance_bar/components/performance_bar_app_spec.js b/spec/frontend/performance_bar/components/performance_bar_app_spec.js
index 7a018236314..1ccb56a0697 100644
--- a/spec/frontend/performance_bar/components/performance_bar_app_spec.js
+++ b/spec/frontend/performance_bar/components/performance_bar_app_spec.js
@@ -17,6 +17,9 @@ describe('performance bar app', () => {
statsUrl: 'https://log.gprd.gitlab.net/app/dashboards#/view/',
peekUrl: '/-/peek/results',
},
+ stubs: {
+ GlEmoji: { template: '<div/>' },
+ },
});
};
diff --git a/spec/frontend/performance_bar/components/request_warning_spec.js b/spec/frontend/performance_bar/components/request_warning_spec.js
index a4f0d388e33..a85f83e9da7 100644
--- a/spec/frontend/performance_bar/components/request_warning_spec.js
+++ b/spec/frontend/performance_bar/components/request_warning_spec.js
@@ -1,5 +1,5 @@
import Vue from 'vue';
-import { shallowMount } from '@vue/test-utils';
+import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
import RequestWarning from '~/performance_bar/components/request_warning.vue';
Vue.config.ignoredElements = ['gl-emoji'];
@@ -8,9 +8,20 @@ describe('request warning', () => {
let wrapper;
const htmlId = 'request-123';
+ const createComponent = ({ propsData = {} } = {}) => {
+ wrapper = shallowMountExtended(RequestWarning, {
+ propsData,
+ stubs: {
+ GlEmoji: { template: `<div id="${htmlId}" />` },
+ },
+ });
+ };
+
+ const findEmoji = () => wrapper.findByTestId('warning');
+
describe('when the request has warnings', () => {
beforeEach(() => {
- wrapper = shallowMount(RequestWarning, {
+ createComponent({
propsData: {
htmlId,
warnings: ['gitaly calls: 30 over 10', 'gitaly duration: 1500 over 1000'],
@@ -19,14 +30,14 @@ describe('request warning', () => {
});
it('adds a warning emoji with the correct ID', () => {
- expect(wrapper.find('span gl-emoji[id]').attributes('id')).toEqual(htmlId);
- expect(wrapper.find('span gl-emoji[id]').element.dataset.name).toEqual('warning');
+ expect(findEmoji().attributes('id')).toEqual(htmlId);
+ expect(findEmoji().element.dataset.name).toEqual('warning');
});
});
describe('when the request does not have warnings', () => {
beforeEach(() => {
- wrapper = shallowMount(RequestWarning, {
+ createComponent({
propsData: {
htmlId,
warnings: [],
@@ -35,7 +46,7 @@ describe('request warning', () => {
});
it('does nothing', () => {
- expect(wrapper.html()).toBe('');
+ expect(findEmoji().exists()).toBe(false);
});
});
});
diff --git a/spec/frontend/super_sidebar/components/create_menu_spec.js b/spec/frontend/super_sidebar/components/create_menu_spec.js
index ffbc789d220..c2f608b4f52 100644
--- a/spec/frontend/super_sidebar/components/create_menu_spec.js
+++ b/spec/frontend/super_sidebar/components/create_menu_spec.js
@@ -31,6 +31,7 @@ describe('CreateMenu component', () => {
stubs: {
InviteMembersTrigger,
GlDisclosureDropdown,
+ GlEmoji: { template: '<div/>' },
},
directives: {
GlTooltip: createMockDirective('gl-tooltip'),
diff --git a/spec/frontend/work_items/components/work_item_assignees_spec.js b/spec/frontend/work_items/components/work_item_assignees_spec.js
index 196e19791df..6c0042bdad7 100644
--- a/spec/frontend/work_items/components/work_item_assignees_spec.js
+++ b/spec/frontend/work_items/components/work_item_assignees_spec.js
@@ -103,6 +103,9 @@ describe('WorkItemAssignees component', () => {
},
attachTo: document.body,
apolloProvider,
+ stubs: {
+ GlEmoji: { template: '<div/>' },
+ },
});
};