diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-14 09:07:03 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-14 09:07:03 +0300 |
commit | 4fc8a5035217a603a5af54aab09bb7c1bfea7626 (patch) | |
tree | 760de5425c0064a744fb21aa18aecf720b85dc8e /spec | |
parent | 27715675e849d90937a5d3e2db3c4997018f7832 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
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 |