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>2023-06-14 09:07:03 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-14 09:07:03 +0300
commit4fc8a5035217a603a5af54aab09bb7c1bfea7626 (patch)
tree760de5425c0064a744fb21aa18aecf720b85dc8e /spec
parent27715675e849d90937a5d3e2db3c4997018f7832 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/features/merge_request/close_reopen_report_toggle_spec.rb46
-rw-r--r--spec/features/merge_request/merge_request_discussion_lock_spec.rb4
-rw-r--r--spec/features/merge_request/user_manages_subscription_spec.rb6
-rw-r--r--spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb8
-rw-r--r--spec/frontend/merge_request_spec.js17
-rw-r--r--spec/frontend/sidebar/components/lock/issuable_lock_form_spec.js8
-rw-r--r--spec/frontend/sidebar/components/subscriptions/sidebar_subscriptions_widget_spec.js5
-rw-r--r--spec/frontend/vue_shared/components/mr_more_dropdown_spec.js137
-rw-r--r--spec/frontend/vue_shared/components/paginated_table_with_search_and_tabs/paginated_table_with_search_and_tabs_spec.js22
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/count_personal_snippets_metric_spec.rb22
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/count_project_snippets_metric_spec.rb22
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/count_snippets_metric_spec.rb25
-rw-r--r--spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb4
-rw-r--r--spec/lib/gitlab/usage_data_spec.rb8
-rw-r--r--spec/support/helpers/usage_data_helpers.rb3
-rw-r--r--spec/support/rspec_order_todo.yml1
-rw-r--r--spec/support/shared_contexts/issuable/merge_request_shared_context.rb24
-rw-r--r--spec/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml_spec.rb34
-rw-r--r--spec/views/projects/merge_requests/show.html.haml_spec.rb45
19 files changed, 263 insertions, 178 deletions
diff --git a/spec/features/merge_request/close_reopen_report_toggle_spec.rb b/spec/features/merge_request/close_reopen_report_toggle_spec.rb
index 9b8e50a31e3..07d9ddde910 100644
--- a/spec/features/merge_request/close_reopen_report_toggle_spec.rb
+++ b/spec/features/merge_request/close_reopen_report_toggle_spec.rb
@@ -15,6 +15,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
before do
project.add_maintainer(user)
login_as user
+ stub_feature_flags(moved_mr_sidebar: false)
end
context 'when user has permission to update', :js do
@@ -24,15 +25,16 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
context 'close/reopen/report toggle' do
it 'opens a dropdown when toggle is clicked' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
- expect(container).to have_link("Close merge request")
- expect(container).to have_button('Report abuse to administrator')
+ expect(container).to have_button("Close merge request")
+ expect(container).to have_button('Report abuse')
end
it 'links to Report Abuse' do
- find('[data-testid="merge-request-actions"]').click
- click_button 'Report abuse to administrator'
+ find('#new-actions-header-dropdown button').click
+
+ click_button 'Report abuse'
expect(page).to have_content('Report abuse to administrator')
end
@@ -42,13 +44,13 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
let(:issuable) { create(:merge_request, :opened, source_project: project) }
it 'shows the `Edit` and `Mark as draft` buttons' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(container).to have_link('Edit')
- expect(container).to have_link('Mark as draft')
- expect(container).to have_link('Close merge request')
- expect(container).to have_button('Report abuse to administrator')
- expect(container).not_to have_link('Reopen merge request')
+ expect(container).to have_button('Mark as draft')
+ expect(container).to have_button('Close merge request')
+ expect(container).to have_button('Report abuse')
+ expect(container).not_to have_button('Reopen merge request')
end
end
@@ -56,24 +58,24 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
let(:issuable) { create(:merge_request, :closed, source_project: project) }
it 'shows both the `Edit` and `Reopen` button' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(container).to have_link('Edit')
- expect(container).to have_button('Report abuse to administrator')
- expect(container).to have_link('Reopen merge request')
- expect(container).not_to have_link('Close merge request')
+ expect(container).to have_button('Report abuse')
+ expect(container).to have_button('Reopen merge request')
+ expect(container).not_to have_button('Close merge request')
end
context 'when the merge request author is the current user' do
let(:issuable) { create(:merge_request, :closed, source_project: project, author: user) }
it 'shows both the `Edit` and `Reopen` button' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(container).to have_link('Edit')
- expect(container).to have_link('Reopen merge request')
- expect(container).not_to have_link('Close merge request')
- expect(container).not_to have_button('Report abuse to administrator')
+ expect(container).to have_button('Reopen merge request')
+ expect(container).not_to have_button('Close merge request')
+ expect(container).not_to have_button('Report abuse')
end
end
end
@@ -83,7 +85,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
it 'shows only the `Edit` button' do
expect(container).to have_link(exact_text: 'Edit')
- expect(container).not_to have_button('Report abuse to administrator')
+ expect(container).not_to have_button('Report abuse')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
end
@@ -93,7 +95,7 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
it 'shows only the `Edit` button' do
expect(container).to have_link(exact_text: 'Edit')
- expect(container).not_to have_button('Report abuse to administrator')
+ expect(container).not_to have_button('Report abuse')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
end
@@ -112,9 +114,9 @@ RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_r
end
it 'only shows a `Report abuse` button' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
- expect(container).to have_button('Report abuse to administrator')
+ expect(container).to have_button('Report abuse')
expect(container).not_to have_button('Close merge request')
expect(container).not_to have_button('Reopen merge request')
expect(container).not_to have_link(exact_text: 'Edit')
diff --git a/spec/features/merge_request/merge_request_discussion_lock_spec.rb b/spec/features/merge_request/merge_request_discussion_lock_spec.rb
index 11ec2a86b43..782c4af58ac 100644
--- a/spec/features/merge_request/merge_request_discussion_lock_spec.rb
+++ b/spec/features/merge_request/merge_request_discussion_lock_spec.rb
@@ -90,7 +90,7 @@ RSpec.describe 'Merge Request Discussion Lock', :js, feature_category: :code_rev
end
it 'the user can lock the merge_request' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(page).to have_content('Lock merge request')
end
@@ -103,7 +103,7 @@ RSpec.describe 'Merge Request Discussion Lock', :js, feature_category: :code_rev
end
it 'the user can unlock the merge_request' do
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(page).to have_content('Unlock merge request')
end
diff --git a/spec/features/merge_request/user_manages_subscription_spec.rb b/spec/features/merge_request/user_manages_subscription_spec.rb
index 3bcc8255ab7..84387965989 100644
--- a/spec/features/merge_request/user_manages_subscription_spec.rb
+++ b/spec/features/merge_request/user_manages_subscription_spec.rb
@@ -45,15 +45,15 @@ RSpec.describe 'User manages subscription', :js, feature_category: :code_review_
it 'toggles subscription' do
wait_for_requests
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
expect(page).to have_selector('.gl-toggle:not(.is-checked)')
- find('[data-testid="notifications-toggle"] .gl-toggle').click
+ find('[data-testid="notification-toggle"] .gl-toggle').click
wait_for_requests
expect(page).to have_selector('.gl-toggle.is-checked')
- find('[data-testid="notifications-toggle"] .gl-toggle').click
+ find('[data-testid="notification-toggle"] .gl-toggle').click
wait_for_requests
diff --git a/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb b/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb
index 8cbc2b975e4..70962890bc5 100644
--- a/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb
+++ b/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb
@@ -16,15 +16,15 @@ RSpec.describe 'Merge request > User marks merge request as draft', :js, feature
end
it 'toggles draft status' do
- find('[data-testid="merge-request-actions"]').click
- click_link 'Mark as draft'
+ find('#new-actions-header-dropdown button').click
+ click_button 'Mark as draft'
expect(page).to have_content("Draft: #{merge_request.title}")
- find('[data-testid="merge-request-actions"]').click
+ find('#new-actions-header-dropdown button').click
page.within('.detail-page-header-actions') do
- click_link 'Mark as ready'
+ click_button 'Mark as ready'
end
expect(page).to have_content(merge_request.title)
diff --git a/spec/frontend/merge_request_spec.js b/spec/frontend/merge_request_spec.js
index 6f80f8e6aab..a119ca8272e 100644
--- a/spec/frontend/merge_request_spec.js
+++ b/spec/frontend/merge_request_spec.js
@@ -1,7 +1,6 @@
import MockAdapter from 'axios-mock-adapter';
import $ from 'jquery';
import htmlMergeRequestWithTaskList from 'test_fixtures/merge_requests/merge_request_with_task_list.html';
-import htmlMergeRequestOfCurrentUser from 'test_fixtures/merge_requests/merge_request_of_current_user.html';
import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures';
import { TEST_HOST } from 'spec/test_constants';
import waitForPromises from 'helpers/wait_for_promises';
@@ -110,20 +109,4 @@ describe('MergeRequest', () => {
});
});
});
-
- describe('hideCloseButton', () => {
- describe('merge request of current_user', () => {
- beforeEach(() => {
- setHTMLFixture(htmlMergeRequestOfCurrentUser);
- test.el = document.querySelector('.js-issuable-actions');
- MergeRequest.hideCloseButton();
- });
-
- it('hides the close button', () => {
- const smallCloseItem = test.el.querySelector('.js-close-item');
-
- expect(smallCloseItem).toHaveClass('hidden');
- });
- });
- });
});
diff --git a/spec/frontend/sidebar/components/lock/issuable_lock_form_spec.js b/spec/frontend/sidebar/components/lock/issuable_lock_form_spec.js
index 5e766e9a41c..47f68e1fe83 100644
--- a/spec/frontend/sidebar/components/lock/issuable_lock_form_spec.js
+++ b/spec/frontend/sidebar/components/lock/issuable_lock_form_spec.js
@@ -7,6 +7,7 @@ import createStore from '~/notes/stores';
import EditForm from '~/sidebar/components/lock/edit_form.vue';
import IssuableLockForm from '~/sidebar/components/lock/issuable_lock_form.vue';
import toast from '~/vue_shared/plugins/global_toast';
+import waitForPromises from 'helpers/wait_for_promises';
import { ISSUABLE_TYPE_ISSUE, ISSUABLE_TYPE_MR } from './constants';
jest.mock('~/vue_shared/plugins/global_toast');
@@ -27,6 +28,7 @@ describe('IssuableLockForm', () => {
const findLockStatus = () => wrapper.find('[data-testid="lock-status"]');
const findEditLink = () => wrapper.find('[data-testid="edit-link"]');
const findEditForm = () => wrapper.findComponent(EditForm);
+ const findLockButton = () => wrapper.find('[data-testid="issuable-lock"]');
const findSidebarLockStatusTooltip = () =>
getBinding(findSidebarCollapseIcon().element, 'gl-tooltip');
const findIssuableLockClickable = () => wrapper.find('[data-testid="issuable-lock"]');
@@ -172,7 +174,9 @@ describe('IssuableLockForm', () => {
createComponent({ movedMrSidebar: true });
- await wrapper.find('.dropdown-item').trigger('click');
+ await findLockButton().trigger('click');
+
+ await waitForPromises();
expect(toast).toHaveBeenCalledWith(message);
});
@@ -187,7 +191,7 @@ describe('IssuableLockForm', () => {
});
describe('when the flag is on', () => {
- it('does not show the non editable lock status', () => {
+ it('shows the non editable lock status', () => {
createComponent({ movedMrSidebar: true });
expect(findIssuableLockClickable().exists()).toBe(true);
});
diff --git a/spec/frontend/sidebar/components/subscriptions/sidebar_subscriptions_widget_spec.js b/spec/frontend/sidebar/components/subscriptions/sidebar_subscriptions_widget_spec.js
index 7275557e7f2..39b80c1d886 100644
--- a/spec/frontend/sidebar/components/subscriptions/sidebar_subscriptions_widget_spec.js
+++ b/spec/frontend/sidebar/components/subscriptions/sidebar_subscriptions_widget_spec.js
@@ -1,4 +1,4 @@
-import { GlIcon, GlToggle } from '@gitlab/ui';
+import { GlDisclosureDropdownItem, GlIcon, GlToggle } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
import Vue from 'vue';
import VueApollo from 'vue-apollo';
@@ -28,6 +28,7 @@ describe('Sidebar Subscriptions Widget', () => {
const findEditableItem = () => wrapper.findComponent(SidebarEditableItem);
const findToggle = () => wrapper.findComponent(GlToggle);
const findIcon = () => wrapper.findComponent(GlIcon);
+ const findDropdownToggleItem = () => wrapper.findComponent(GlDisclosureDropdownItem);
const createComponent = ({
subscriptionsQueryHandler = jest.fn().mockResolvedValue(issueSubscriptionsResponse()),
@@ -155,7 +156,7 @@ describe('Sidebar Subscriptions Widget', () => {
});
await waitForPromises();
- await wrapper.find('[data-testid="notifications-toggle"]').vm.$emit('change');
+ await findDropdownToggleItem().vm.$emit('action');
await waitForPromises();
diff --git a/spec/frontend/vue_shared/components/mr_more_dropdown_spec.js b/spec/frontend/vue_shared/components/mr_more_dropdown_spec.js
new file mode 100644
index 00000000000..41639725f66
--- /dev/null
+++ b/spec/frontend/vue_shared/components/mr_more_dropdown_spec.js
@@ -0,0 +1,137 @@
+import { shallowMount } from '@vue/test-utils';
+import MRMoreActionsDropdown from '~/vue_shared/components/mr_more_dropdown.vue';
+
+describe('MR More actions sidebar', () => {
+ let wrapper;
+
+ const findNotificationToggle = () => wrapper.find('[data-testid="notification-toggle"]');
+ const findEditMergeRequestOption = () => wrapper.find('[data-testid="edit-merge-request"]');
+ const findMarkAsReadyAndDraftOption = () =>
+ wrapper.find('[data-testid="ready-and-draft-action"]');
+ const findCopyReferenceButton = () => wrapper.find('[data-testid="copy-reference"]');
+ const findReopenMergeRequestOption = () => wrapper.find('[data-testid="reopen-merge-request"]');
+ const findReportAbuseOption = () => wrapper.find('[data-testid="report-abuse-option"]');
+
+ const createComponent = ({
+ movedMrSidebarFlag = false,
+ isCurrentUser = true,
+ isLoggedIn = true,
+ open = false,
+ canUpdateMergeRequest = false,
+ } = {}) => {
+ wrapper = shallowMount(MRMoreActionsDropdown, {
+ propsData: {
+ mr: {
+ iid: 1,
+ },
+ isCurrentUser,
+ isLoggedIn,
+ open,
+ canUpdateMergeRequest,
+ },
+ provide: {
+ glFeatures: { movedMrSidebar: movedMrSidebarFlag },
+ },
+ });
+ };
+
+ describe('Notifications toggle', () => {
+ it.each`
+ movedMrSidebarFlag | isLoggedIn | showNotificationToggle
+ ${false} | ${false} | ${false}
+ ${false} | ${true} | ${false}
+ ${true} | ${false} | ${false}
+ ${true} | ${true} | ${true}
+ `(
+ "when the movedMrSidebar flag is '$movedMrSidebarFlag' and is isLoggedIn as '$isLoggedIn'",
+ ({ movedMrSidebarFlag, isLoggedIn, showNotificationToggle }) => {
+ createComponent({
+ isLoggedIn,
+ movedMrSidebarFlag,
+ });
+
+ expect(findNotificationToggle().exists()).toBe(showNotificationToggle);
+ },
+ );
+ });
+
+ describe('Edit/Draft/Reopen MR', () => {
+ it('should not have the edit option when `canUpdateMergeRequest` is false', () => {
+ createComponent();
+
+ expect(findEditMergeRequestOption().exists()).toBe(false);
+ });
+
+ it('should have the edit option when `canUpdateMergeRequest` is true', () => {
+ createComponent({
+ canUpdateMergeRequest: true,
+ });
+
+ expect(findEditMergeRequestOption().exists()).toBe(true);
+ });
+
+ it('should not have the ready and draft option when the the MR is open and `canUpdateMergeRequest` is false', () => {
+ createComponent({
+ open: true,
+ canUpdateMergeRequest: false,
+ });
+
+ expect(findMarkAsReadyAndDraftOption().exists()).toBe(false);
+ });
+
+ it('should have the ready and draft option when the the MR is open and `canUpdateMergeRequest` is true', () => {
+ createComponent({
+ open: true,
+ canUpdateMergeRequest: true,
+ });
+
+ expect(findMarkAsReadyAndDraftOption().exists()).toBe(true);
+ });
+
+ it('should have the reopen option when the the MR is closed and `canUpdateMergeRequest` is true', () => {
+ createComponent({
+ open: false,
+ canUpdateMergeRequest: true,
+ });
+
+ expect(findReopenMergeRequestOption().exists()).toBe(true);
+ });
+
+ it('should not have the reopen option when the the MR is closed and `canUpdateMergeRequest` is false', () => {
+ createComponent({
+ open: false,
+ canUpdateMergeRequest: false,
+ });
+
+ expect(findReopenMergeRequestOption().exists()).toBe(false);
+ });
+ });
+
+ describe('Copy reference', () => {
+ it('should not be visible by default', () => {
+ createComponent();
+
+ expect(findCopyReferenceButton().exists()).toBe(false);
+ });
+
+ it('should be visible when the movedMrSidebarFlag is on', () => {
+ createComponent({ movedMrSidebarFlag: true });
+
+ expect(findCopyReferenceButton().exists()).toBe(true);
+ });
+ });
+
+ describe('Report abuse action', () => {
+ it('should not have the option by default', () => {
+ createComponent();
+
+ expect(findReportAbuseOption().exists()).toBe(false);
+ });
+
+ it('should have the option when not the current user', () => {
+ createComponent({ isCurrentUser: false });
+
+ expect(findReportAbuseOption().exists()).toBe(true);
+ });
+ });
+});
diff --git a/spec/frontend/vue_shared/components/paginated_table_with_search_and_tabs/paginated_table_with_search_and_tabs_spec.js b/spec/frontend/vue_shared/components/paginated_table_with_search_and_tabs/paginated_table_with_search_and_tabs_spec.js
index 9b6f5ae3e38..a27877e7ba8 100644
--- a/spec/frontend/vue_shared/components/paginated_table_with_search_and_tabs/paginated_table_with_search_and_tabs_spec.js
+++ b/spec/frontend/vue_shared/components/paginated_table_with_search_and_tabs/paginated_table_with_search_and_tabs_spec.js
@@ -94,16 +94,15 @@ describe('AlertManagementEmptyState', () => {
const ItemsTable = () => wrapper.find('.gl-table');
const ErrorAlert = () => wrapper.findComponent(GlAlert);
const Pagination = () => wrapper.findComponent(GlPagination);
- const Tabs = () => wrapper.findComponent(GlTabs);
const ActionButton = () => wrapper.find('.header-actions > button');
- const Filters = () => wrapper.findComponent(FilteredSearchBar);
+ const findFilteredSearchBar = () => wrapper.findComponent(FilteredSearchBar);
const findPagination = () => wrapper.findComponent(GlPagination);
const findStatusFilterTabs = () => wrapper.findAllComponents(GlTab);
const findStatusTabs = () => wrapper.findComponent(GlTabs);
const findStatusFilterBadge = () => wrapper.findAllComponents(GlBadge);
const handleFilterItems = (filters) => {
- Filters().vm.$emit('onFilter', filters);
+ findFilteredSearchBar().vm.$emit('onFilter', filters);
return nextTick();
};
@@ -140,7 +139,7 @@ describe('AlertManagementEmptyState', () => {
},
});
- expect(Tabs().exists()).toBe(true);
+ expect(findStatusTabs().exists()).toBe(true);
});
it('renders the header action buttons if present', () => {
@@ -176,7 +175,7 @@ describe('AlertManagementEmptyState', () => {
props: { filterSearchTokens: [TOKEN_TYPE_ASSIGNEE] },
});
- expect(Filters().exists()).toBe(true);
+ expect(findFilteredSearchBar().exists()).toBe(true);
});
});
@@ -291,8 +290,9 @@ describe('AlertManagementEmptyState', () => {
});
it('renders the search component for incidents', () => {
- expect(Filters().props('searchInputPlaceholder')).toBe('Search or filter results…');
- expect(Filters().props('tokens')).toEqual([
+ const filteredSearchBar = findFilteredSearchBar();
+ expect(filteredSearchBar.props('searchInputPlaceholder')).toBe('Search or filter results…');
+ expect(filteredSearchBar.props('tokens')).toEqual([
{
type: TOKEN_TYPE_AUTHOR,
icon: 'user',
@@ -316,14 +316,14 @@ describe('AlertManagementEmptyState', () => {
fetchUsers: expect.any(Function),
},
]);
- expect(Filters().props('recentSearchesStorageKey')).toBe('items');
+ expect(filteredSearchBar.props('recentSearchesStorageKey')).toBe('items');
});
it('returns correctly applied filter search values', async () => {
const searchTerm = 'foo';
await handleFilterItems([{ type: 'filtered-search-term', value: { data: searchTerm } }]);
await nextTick();
- expect(Filters().props('initialFilterValue')).toEqual([searchTerm]);
+ expect(findFilteredSearchBar().props('initialFilterValue')).toEqual([searchTerm]);
});
it('updates props tied to getIncidents GraphQL query', async () => {
@@ -337,7 +337,7 @@ describe('AlertManagementEmptyState', () => {
value: { data: assigneeUsername },
},
searchTerm,
- ] = Filters().props('initialFilterValue');
+ ] = findFilteredSearchBar().props('initialFilterValue');
expect(authorUsername).toBe('root');
expect(assigneeUsername).toEqual('root2');
@@ -346,7 +346,7 @@ describe('AlertManagementEmptyState', () => {
it('updates props `searchTerm` and `authorUsername` with empty values when passed filters param is empty', async () => {
await handleFilterItems([]);
- expect(Filters().props('initialFilterValue')).toEqual([]);
+ expect(findFilteredSearchBar().props('initialFilterValue')).toEqual([]);
});
});
});
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_personal_snippets_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_personal_snippets_metric_spec.rb
new file mode 100644
index 00000000000..cfd2fcabae6
--- /dev/null
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_personal_snippets_metric_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountPersonalSnippetsMetric, feature_category: :service_ping do
+ before_all do
+ create(:personal_snippet, created_at: 5.days.ago)
+ create(:personal_snippet, created_at: 1.year.ago)
+ end
+
+ context 'with a time_frame of 28 days' do
+ let(:expected_value) { 1 }
+
+ it_behaves_like 'a correct instrumented metric value', { time_frame: '28d', data_source: 'database' }
+ end
+
+ context 'with a timeframe of all' do
+ let(:expected_value) { 2 }
+
+ it_behaves_like 'a correct instrumented metric value', { time_frame: 'all', data_source: 'database' }
+ end
+end
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_project_snippets_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_project_snippets_metric_spec.rb
new file mode 100644
index 00000000000..a82726ccf44
--- /dev/null
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_project_snippets_metric_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountProjectSnippetsMetric, feature_category: :service_ping do
+ before_all do
+ create(:project_snippet, created_at: 5.days.ago)
+ create(:project_snippet, created_at: 1.year.ago)
+ end
+
+ context 'with a time_frame of 28 days' do
+ let(:expected_value) { 1 }
+
+ it_behaves_like 'a correct instrumented metric value', { time_frame: '28d', data_source: 'database' }
+ end
+
+ context 'with a timeframe of all' do
+ let(:expected_value) { 2 }
+
+ it_behaves_like 'a correct instrumented metric value', { time_frame: 'all', data_source: 'database' }
+ end
+end
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_snippets_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_snippets_metric_spec.rb
new file mode 100644
index 00000000000..daacea83833
--- /dev/null
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_snippets_metric_spec.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountSnippetsMetric, feature_category: :service_ping do
+ before_all do
+ create(:personal_snippet, created_at: 5.days.ago)
+ create(:personal_snippet, created_at: 1.year.ago)
+
+ create(:project_snippet, created_at: 1.year.ago)
+ create(:project_snippet, created_at: 5.days.ago)
+ end
+
+ context 'with a time_frame of 28 days' do
+ let(:expected_value) { 2 }
+
+ it_behaves_like 'a correct instrumented metric value', { time_frame: '28d', data_source: 'database' }
+ end
+
+ context 'with a timeframe of all' do
+ let(:expected_value) { 4 }
+
+ it_behaves_like 'a correct instrumented metric value', { time_frame: 'all', data_source: 'database' }
+ end
+end
diff --git a/spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb b/spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb
index 271e9595703..5002ee7599f 100644
--- a/spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb
+++ b/spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb
@@ -68,6 +68,10 @@ RSpec.describe Gitlab::Usage::Metrics::NamesSuggestions::Generator, feature_cate
end
context 'for add metrics' do
+ before do
+ pending 'https://gitlab.com/gitlab-org/gitlab/-/issues/414887'
+ end
+
it_behaves_like 'name suggestion' do
# corresponding metric is collected with add(data[:personal_snippets], data[:project_snippets])
let(:key_path) { 'counts.snippets' }
diff --git a/spec/lib/gitlab/usage_data_spec.rb b/spec/lib/gitlab/usage_data_spec.rb
index 72147721b4e..ae3635fb5b1 100644
--- a/spec/lib/gitlab/usage_data_spec.rb
+++ b/spec/lib/gitlab/usage_data_spec.rb
@@ -574,9 +574,6 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures, feature_category: :servic
expect(count_data[:successful_deployments]).to eq(2)
expect(count_data[:failed_deployments]).to eq(2)
expect(count_data[:feature_flags]).to eq(1)
- expect(count_data[:snippets]).to eq(6)
- expect(count_data[:personal_snippets]).to eq(2)
- expect(count_data[:project_snippets]).to eq(4)
expect(count_data[:projects_creating_incidents]).to eq(2)
expect(count_data[:projects_with_packages]).to eq(2)
@@ -636,8 +633,6 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures, feature_category: :servic
deployment_options = { created_at: n.days.ago, project: env.project, environment: env }
create(:deployment, :failed, deployment_options)
create(:deployment, :success, deployment_options)
- create(:project_snippet, project: project, created_at: n.days.ago)
- create(:personal_snippet, created_at: n.days.ago)
create(:alert_management_alert, project: project, created_at: n.days.ago)
end
@@ -654,9 +649,6 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures, feature_category: :servic
expect(counts_monthly[:deployments]).to eq(2)
expect(counts_monthly[:successful_deployments]).to eq(1)
expect(counts_monthly[:failed_deployments]).to eq(1)
- expect(counts_monthly[:snippets]).to eq(2)
- expect(counts_monthly[:personal_snippets]).to eq(1)
- expect(counts_monthly[:project_snippets]).to eq(1)
expect(counts_monthly[:projects_with_alerts_created]).to eq(1)
expect(counts_monthly[:projects]).to eq(1)
expect(counts_monthly[:packages]).to eq(1)
diff --git a/spec/support/helpers/usage_data_helpers.rb b/spec/support/helpers/usage_data_helpers.rb
index a1c25338312..050a2780af4 100644
--- a/spec/support/helpers/usage_data_helpers.rb
+++ b/spec/support/helpers/usage_data_helpers.rb
@@ -70,9 +70,6 @@ module UsageDataHelpers
protected_branches_except_default
releases
remote_mirrors
- snippets
- personal_snippets
- project_snippets
suggestions
terraform_reports
terraform_states
diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml
index 96cdf5adec8..354d175d825 100644
--- a/spec/support/rspec_order_todo.yml
+++ b/spec/support/rspec_order_todo.yml
@@ -9923,7 +9923,6 @@
- './spec/views/projects/merge_requests/_commits.html.haml_spec.rb'
- './spec/views/projects/merge_requests/creations/_new_submit.html.haml_spec.rb'
- './spec/views/projects/merge_requests/edit.html.haml_spec.rb'
-- './spec/views/projects/merge_requests/show.html.haml_spec.rb'
- './spec/views/projects/milestones/index.html.haml_spec.rb'
- './spec/views/projects/notes/_more_actions_dropdown.html.haml_spec.rb'
- './spec/views/projects/pages_domains/show.html.haml_spec.rb'
diff --git a/spec/support/shared_contexts/issuable/merge_request_shared_context.rb b/spec/support/shared_contexts/issuable/merge_request_shared_context.rb
deleted file mode 100644
index 35c1511c96a..00000000000
--- a/spec/support/shared_contexts/issuable/merge_request_shared_context.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-# frozen_string_literal: true
-
-RSpec.shared_context 'merge request show action' do
- include Features::MergeRequestHelpers
-
- let_it_be(:user) { create(:user) }
- let_it_be(:project) { create(:project, :public, :repository) }
- let_it_be(:merge_request) { create(:merge_request, :opened, source_project: project, author: user) }
- let_it_be(:note) { create(:note_on_merge_request, project: project, noteable: merge_request) }
-
- before do
- allow(view).to receive(:experiment_enabled?).and_return(false)
- allow(view).to receive(:current_user).and_return(user)
- allow(view).to receive(:can_admin_project_member?)
- assign(:project, project)
- assign(:merge_request, merge_request)
- assign(:note, note)
- assign(:noteable, merge_request)
- assign(:number_of_pipelines, 0)
- assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, merge_request))
-
- preload_view_requirements(merge_request, note)
- end
-end
diff --git a/spec/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml_spec.rb b/spec/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml_spec.rb
deleted file mode 100644
index 99339e956cc..00000000000
--- a/spec/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml_spec.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'projects/merge_requests/_close_reopen_draft_report_toggle.html.haml' do
- let_it_be(:merge_request) { create(:merge_request, state: :merged) }
-
- before do
- assign(:merge_request, merge_request)
- assign(:project, merge_request.target_project)
-
- allow(view).to receive(:moved_mr_sidebar_enabled?).and_return(true)
- end
-
- describe 'notifcations toggle' do
- context 'when mr merged and logged in' do
- it 'is present' do
- allow(view).to receive(:current_user).and_return(merge_request.author)
-
- render
-
- expect(rendered).to have_css('li', class: 'js-sidebar-subscriptions-widget-root')
- end
- end
-
- context 'when mr merged and not logged in' do
- it 'is not present' do
- render
-
- expect(rendered).not_to have_css('li', class: 'js-sidebar-subscriptions-widget-root')
- end
- end
- end
-end
diff --git a/spec/views/projects/merge_requests/show.html.haml_spec.rb b/spec/views/projects/merge_requests/show.html.haml_spec.rb
deleted file mode 100644
index 86a4b25f746..00000000000
--- a/spec/views/projects/merge_requests/show.html.haml_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'projects/merge_requests/show.html.haml', :aggregate_failures do
- using RSpec::Parameterized::TableSyntax
-
- include_context 'merge request show action'
-
- before do
- merge_request.reload
- end
-
- context 'when the merge request is open' do
- it 'shows the "Mark as draft" button' do
- render
-
- expect(rendered).to have_css('a', visible: true, text: 'Mark as draft')
- expect(rendered).to have_css('a', visible: true, text: 'Close')
- end
- end
-
- context 'when the merge request is closed' do
- before do
- merge_request.close!
- end
-
- it 'shows the "Reopen" button' do
- render
-
- expect(rendered).not_to have_css('a', visible: true, text: 'Mark as draft')
- expect(rendered).to have_css('a', visible: true, text: 'Reopen')
- end
-
- context 'when source project does not exist' do
- it 'does not show the "Reopen" button' do
- allow(merge_request).to receive(:source_project).and_return(nil)
-
- render
-
- expect(rendered).not_to have_css('a', visible: false, text: 'Reopen')
- end
- end
- end
-end