diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-17 15:09:01 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-17 15:09:01 +0000 |
commit | b304a72312465ed4c0a568ee6a6ea5e97f705c9b (patch) | |
tree | a2f25dbea26c81e88b169c55a6275e3969323e82 /spec | |
parent | b84eeb256c4a780d902faee1f99ca9a711b3214a (diff) | |
download | gitlab-ce-b304a72312465ed4c0a568ee6a6ea5e97f705c9b.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
52 files changed, 544 insertions, 270 deletions
diff --git a/spec/frontend/diffs/components/diff_file_row_spec.js b/spec/frontend/diffs/components/diff_file_row_spec.js index 3e95d1d55bd..bd5b3afdc05 100644 --- a/spec/frontend/diffs/components/diff_file_row_spec.js +++ b/spec/frontend/diffs/components/diff_file_row_spec.js @@ -1,6 +1,7 @@ import { shallowMount } from '@vue/test-utils'; import DiffFileRow from '~/diffs/components/diff_file_row.vue'; import FileRow from '~/vue_shared/components/file_row.vue'; +import FileRowStats from '~/diffs/components/file_row_stats.vue'; describe('Diff File Row component', () => { let wrapper; @@ -16,10 +17,42 @@ describe('Diff File Row component', () => { }); it('renders file row component', () => { - createComponent({ + const sharedProps = { level: 4, file: {}, + }; + + const diffFileRowProps = { + hideFileStats: false, + }; + + createComponent({ + ...sharedProps, + ...diffFileRowProps, + }); + + expect(wrapper.find(FileRow).props()).toEqual( + expect.objectContaining({ + ...sharedProps, + }), + ); + }); + + describe('FileRowStats components', () => { + it.each` + type | hideFileStats | value | desc + ${'blob'} | ${false} | ${true} | ${'is shown if file type is blob'} + ${'tree'} | ${false} | ${false} | ${'is hidden if file is not blob'} + ${'blob'} | ${true} | ${false} | ${'is hidden if hideFileStats is true'} + `('$desc', ({ type, value, hideFileStats }) => { + createComponent({ + level: 4, + file: { + type, + }, + hideFileStats, + }); + expect(wrapper.find(FileRowStats).exists()).toEqual(value); }); - expect(wrapper.find(FileRow).exists()).toEqual(true); }); }); diff --git a/spec/frontend/helpers/dom_shims/element_scroll_into_view.js b/spec/frontend/helpers/dom_shims/element_scroll_into_view.js new file mode 100644 index 00000000000..a7262d04db0 --- /dev/null +++ b/spec/frontend/helpers/dom_shims/element_scroll_into_view.js @@ -0,0 +1 @@ +Element.prototype.scrollIntoView = jest.fn(); diff --git a/spec/frontend/helpers/dom_shims/index.js b/spec/frontend/helpers/dom_shims/index.js index 95a28f8bfbd..63850b62ff7 100644 --- a/spec/frontend/helpers/dom_shims/index.js +++ b/spec/frontend/helpers/dom_shims/index.js @@ -1,3 +1,4 @@ +import './element_scroll_into_view'; import './get_client_rects'; import './inner_text'; import './window_scroll_to'; diff --git a/spec/frontend/ide/components/ide_file_row_spec.js b/spec/frontend/ide/components/ide_file_row_spec.js index 7531bc3e144..c00ad7c8365 100644 --- a/spec/frontend/ide/components/ide_file_row_spec.js +++ b/spec/frontend/ide/components/ide_file_row_spec.js @@ -1,25 +1,117 @@ -import { shallowMount } from '@vue/test-utils'; +import { createLocalVue, mount } from '@vue/test-utils'; +import Vuex from 'vuex'; import IdeFileRow from '~/ide/components/ide_file_row.vue'; import FileRow from '~/vue_shared/components/file_row.vue'; +import FileRowExtra from '~/ide/components/file_row_extra.vue'; +import { createStore } from '~/ide/stores'; + +const localVue = createLocalVue(); +localVue.use(Vuex); + +const TEST_EXTRA_PROPS = { + testattribute: 'abc', +}; + +const defaultComponentProps = (type = 'tree') => ({ + level: 4, + file: { + type, + name: 'js', + }, +}); describe('Ide File Row component', () => { let wrapper; - const createComponent = (props = {}) => { - wrapper = shallowMount(IdeFileRow, { - propsData: { ...props }, + const createComponent = (props = {}, options = {}) => { + wrapper = mount(IdeFileRow, { + propsData: { + ...defaultComponentProps(), + ...props, + }, + store: createStore(), + localVue, + ...options, }); }; afterEach(() => { wrapper.destroy(); + wrapper = null; }); - it('renders file row component', () => { - createComponent({ - level: 4, - file: {}, + const findFileRowExtra = () => wrapper.find(FileRowExtra); + const findFileRow = () => wrapper.find(FileRow); + const hasDropdownOpen = () => findFileRowExtra().props('dropdownOpen'); + + it('fileRow component has listeners', () => { + const toggleTreeOpen = jest.fn(); + createComponent( + {}, + { + listeners: { + toggleTreeOpen, + }, + }, + ); + + findFileRow().vm.$emit('toggleTreeOpen'); + + return wrapper.vm.$nextTick().then(() => { + expect(toggleTreeOpen).toHaveBeenCalled(); + }); + }); + + describe('default', () => { + beforeEach(() => { + createComponent(TEST_EXTRA_PROPS); + }); + + it('renders file row component', () => { + const fileRow = findFileRow(); + + expect(fileRow.props()).toEqual(expect.objectContaining(defaultComponentProps())); + expect(fileRow.attributes()).toEqual(expect.objectContaining(TEST_EXTRA_PROPS)); + }); + + it('renders file row extra', () => { + const extra = findFileRowExtra(); + + expect(extra.exists()).toBe(true); + expect(extra.props()).toEqual({ + file: defaultComponentProps().file, + dropdownOpen: false, + }); + }); + }); + + describe('with open dropdown', () => { + beforeEach(() => { + createComponent(); + + findFileRowExtra().vm.$emit('toggle', true); + + return wrapper.vm.$nextTick(); + }); + + it('shows open dropdown', () => { + expect(hasDropdownOpen()).toBe(true); + }); + + it('hides dropdown when mouseleave', () => { + findFileRow().vm.$emit('mouseleave'); + + return wrapper.vm.$nextTick().then(() => { + expect(hasDropdownOpen()).toEqual(false); + }); + }); + + it('hides dropdown on toggle', () => { + findFileRowExtra().vm.$emit('toggle', false); + + return wrapper.vm.$nextTick().then(() => { + expect(hasDropdownOpen()).toEqual(false); + }); }); - expect(wrapper.find(FileRow).exists()).toEqual(true); }); }); diff --git a/spec/frontend/vue_mr_widget/components/mr_widget_suggest_pipeline_spec.js b/spec/frontend/vue_mr_widget/components/mr_widget_suggest_pipeline_spec.js new file mode 100644 index 00000000000..77293a5b187 --- /dev/null +++ b/spec/frontend/vue_mr_widget/components/mr_widget_suggest_pipeline_spec.js @@ -0,0 +1,52 @@ +import { mount } from '@vue/test-utils'; +import { GlLink } from '@gitlab/ui'; +import suggestPipelineComponent from '~/vue_merge_request_widget/components/mr_widget_suggest_pipeline.vue'; +import MrWidgetIcon from '~/vue_merge_request_widget/components/mr_widget_icon.vue'; + +describe('MRWidgetHeader', () => { + let wrapper; + const pipelinePath = '/foo/bar/add/pipeline/path'; + const iconName = 'status_notfound'; + + beforeEach(() => { + wrapper = mount(suggestPipelineComponent, { + propsData: { pipelinePath }, + }); + }); + + afterEach(() => { + wrapper.destroy(); + }); + + describe('template', () => { + it('renders add pipeline file link', () => { + const link = wrapper.find(GlLink); + + return wrapper.vm.$nextTick().then(() => { + expect(link.exists()).toBe(true); + expect(link.attributes().href).toBe(pipelinePath); + }); + }); + + it('renders the expected text', () => { + const messageText = /\s*No pipeline\s*Add the .gitlab-ci.yml file\s*to create one./; + + return wrapper.vm.$nextTick().then(() => { + expect(wrapper.text()).toMatch(messageText); + }); + }); + + it('renders widget icon', () => { + const icon = wrapper.find(MrWidgetIcon); + + return wrapper.vm.$nextTick().then(() => { + expect(icon.exists()).toBe(true); + expect(icon.props()).toEqual( + expect.objectContaining({ + name: iconName, + }), + ); + }); + }); + }); +}); diff --git a/spec/javascripts/vue_mr_widget/mock_data.js b/spec/javascripts/vue_mr_widget/mock_data.js index 4db6b421200..2eaba46cdce 100644 --- a/spec/javascripts/vue_mr_widget/mock_data.js +++ b/spec/javascripts/vue_mr_widget/mock_data.js @@ -16,6 +16,7 @@ export default { updated_at: '2017-04-07T15:39:25.852Z', time_estimate: 0, total_time_spent: 0, + human_access: 'Maintainer', human_time_estimate: null, human_total_time_spent: null, in_progress_merge_commit_sha: null, @@ -34,6 +35,7 @@ export default { target_branch: 'master', target_project_id: 19, target_project_full_path: '/group2/project2', + merge_request_add_ci_config_path: '/group2/project2/new/pipeline', metrics: { merged_by: { name: 'Administrator', diff --git a/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js b/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js index 296be43f793..35c1495be58 100644 --- a/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js +++ b/spec/javascripts/vue_mr_widget/mr_widget_options_spec.js @@ -94,6 +94,61 @@ describe('mrWidgetOptions', () => { }); }); + describe('shouldSuggestPipelines', () => { + describe('given suggestPipeline feature flag is enabled', () => { + beforeEach(() => { + gon.features = { suggestPipeline: true }; + vm = mountComponent(MrWidgetOptions, { + mrData: { ...mockData }, + }); + }); + + afterEach(() => { + gon.features = {}; + }); + + it('should suggest pipelines when none exist', () => { + vm.mr.mergeRequestAddCiConfigPath = 'some/path'; + vm.mr.hasCI = false; + + expect(vm.shouldSuggestPipelines).toBeTruthy(); + }); + + it('should not suggest pipelines when they exist', () => { + vm.mr.mergeRequestAddCiConfigPath = null; + vm.mr.hasCI = false; + + expect(vm.shouldSuggestPipelines).toBeFalsy(); + }); + + it('should not suggest pipelines hasCI is true', () => { + vm.mr.mergeRequestAddCiConfigPath = 'some/path'; + vm.mr.hasCI = true; + + expect(vm.shouldSuggestPipelines).toBeFalsy(); + }); + }); + + describe('given suggestPipeline feature flag is not enabled', () => { + beforeEach(() => { + gon.features = { suggestPipeline: false }; + vm = mountComponent(MrWidgetOptions, { + mrData: { ...mockData }, + }); + }); + + afterEach(() => { + gon.features = {}; + }); + + it('should not suggest pipelines', () => { + vm.mr.mergeRequestAddCiConfigPath = null; + + expect(vm.shouldSuggestPipelines).toBeFalsy(); + }); + }); + }); + describe('shouldRenderRelatedLinks', () => { it('should return false for the initial data', () => { expect(vm.shouldRenderRelatedLinks).toBeFalsy(); diff --git a/spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js b/spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js index e2cd0f084fd..272f6cad5fc 100644 --- a/spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js +++ b/spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js @@ -83,4 +83,18 @@ describe('MergeRequestStore', () => { }); }); }); + + describe('setPaths', () => { + it('should set the add ci config path', () => { + store.setData({ ...mockData }); + + expect(store.mergeRequestAddCiConfigPath).toEqual('/group2/project2/new/pipeline'); + }); + + it('should set humanAccess=Maintainer when user has that role', () => { + store.setData({ ...mockData }); + + expect(store.humanAccess).toEqual('Maintainer'); + }); + }); }); diff --git a/spec/javascripts/vue_shared/components/file_row_spec.js b/spec/javascripts/vue_shared/components/file_row_spec.js index 071a09f8b93..11fcb9b89c1 100644 --- a/spec/javascripts/vue_shared/components/file_row_spec.js +++ b/spec/javascripts/vue_shared/components/file_row_spec.js @@ -1,7 +1,6 @@ import Vue from 'vue'; import { file } from 'spec/ide/helpers'; import FileRow from '~/vue_shared/components/file_row.vue'; -import FileRowExtra from '~/ide/components/file_row_extra.vue'; import mountComponent from '../../helpers/vue_mount_component_helper'; describe('File row component', () => { @@ -17,9 +16,6 @@ describe('File row component', () => { vm.$destroy(); }); - const findNewDropdown = () => vm.$el.querySelector('.ide-new-btn .dropdown'); - const findNewDropdownButton = () => vm.$el.querySelector('.ide-new-btn .dropdown button'); - it('renders name', () => { createComponent({ file: file('t4'), @@ -88,59 +84,4 @@ describe('File row component', () => { expect(vm.$el.classList).toContain('js-file-row-header'); }); - - describe('new dropdown', () => { - beforeEach(() => { - createComponent({ - file: file('t5'), - level: 1, - extraComponent: FileRowExtra, - }); - }); - - it('renders in extra component', () => { - expect(findNewDropdown()).not.toBe(null); - }); - - it('is hidden at start', () => { - expect(findNewDropdown()).not.toHaveClass('show'); - }); - - it('is opened when button is clicked', done => { - expect(vm.dropdownOpen).toBe(false); - findNewDropdownButton().dispatchEvent(new Event('click')); - - vm.$nextTick() - .then(() => { - expect(vm.dropdownOpen).toBe(true); - expect(findNewDropdown()).toHaveClass('show'); - }) - .then(done) - .catch(done.fail); - }); - - describe('when opened', () => { - beforeEach(() => { - vm.dropdownOpen = true; - }); - - it('stays open when button triggers mouseout', () => { - findNewDropdownButton().dispatchEvent(new Event('mouseout')); - - expect(vm.dropdownOpen).toBe(true); - }); - - it('stays open when button triggers mouseleave', () => { - findNewDropdownButton().dispatchEvent(new Event('mouseleave')); - - expect(vm.dropdownOpen).toBe(true); - }); - - it('closes when row triggers mouseleave', () => { - vm.$el.dispatchEvent(new Event('mouseleave')); - - expect(vm.dropdownOpen).toBe(false); - }); - }); - }); }); diff --git a/spec/lib/gitlab/import_export/group_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/group_tree_restorer_spec.rb index d6bda7507c6..b2c8398d358 100644 --- a/spec/lib/gitlab/import_export/group_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/group_tree_restorer_spec.rb @@ -82,8 +82,6 @@ describe Gitlab::ImportExport::GroupTreeRestorer do shared_examples 'excluded attributes' do excluded_attributes = %w[ id - name - path owner_id parent_id created_at diff --git a/spec/lib/gitlab/import_export/group_tree_saver_spec.rb b/spec/lib/gitlab/import_export/group_tree_saver_spec.rb index d5ab8ca1e8d..7f49c7af8fa 100644 --- a/spec/lib/gitlab/import_export/group_tree_saver_spec.rb +++ b/spec/lib/gitlab/import_export/group_tree_saver_spec.rb @@ -160,8 +160,6 @@ describe Gitlab::ImportExport::GroupTreeSaver do shared_examples 'excluded attributes' do excluded_attributes = %w[ id - name - path owner_id parent_id created_at diff --git a/spec/migrations/migrate_store_security_reports_sidekiq_queue_spec.rb b/spec/migrations/migrate_store_security_reports_sidekiq_queue_spec.rb new file mode 100644 index 00000000000..ddffa036af1 --- /dev/null +++ b/spec/migrations/migrate_store_security_reports_sidekiq_queue_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' +require Rails.root.join('db', 'post_migrate', '20200213220159_migrate_store_security_reports_sidekiq_queue.rb') + +describe MigrateStoreSecurityReportsSidekiqQueue, :redis do + include Gitlab::Database::MigrationHelpers + include StubWorker + + context 'when there are jobs in the queue' do + it 'migrates queue when migrating up' do + Sidekiq::Testing.disable! do + stub_worker(queue: 'pipeline_default:store_security_reports').perform_async(1, 5) + + described_class.new.up + + expect(sidekiq_queue_length('pipeline_default:store_security_reports')).to eq 0 + expect(sidekiq_queue_length('security_scans:store_security_reports')).to eq 1 + end + end + + it 'migrates queue when migrating down' do + Sidekiq::Testing.disable! do + stub_worker(queue: 'security_scans:store_security_reports').perform_async(1, 5) + + described_class.new.down + + expect(sidekiq_queue_length('pipeline_default:store_security_reports')).to eq 1 + expect(sidekiq_queue_length('security_scans:store_security_reports')).to eq 0 + end + end + end +end diff --git a/spec/migrations/migrate_sync_security_reports_to_report_approval_rules_sidekiq_queue_spec.rb b/spec/migrations/migrate_sync_security_reports_to_report_approval_rules_sidekiq_queue_spec.rb new file mode 100644 index 00000000000..6dfaff06ddb --- /dev/null +++ b/spec/migrations/migrate_sync_security_reports_to_report_approval_rules_sidekiq_queue_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' +require Rails.root.join('db', 'post_migrate', '20200213220211_migrate_sync_security_reports_to_report_approval_rules_sidekiq_queue.rb') + +describe MigrateSyncSecurityReportsToReportApprovalRulesSidekiqQueue, :redis do + include Gitlab::Database::MigrationHelpers + include StubWorker + + context 'when there are jobs in the queue' do + it 'migrates queue when migrating up' do + Sidekiq::Testing.disable! do + stub_worker(queue: 'pipeline_default:sync_security_reports_to_report_approval_rules').perform_async(1, 5) + + described_class.new.up + + expect(sidekiq_queue_length('pipeline_default:sync_security_reports_to_report_approval_rules')).to eq 0 + expect(sidekiq_queue_length('security_scans:sync_security_reports_to_report_approval_rules')).to eq 1 + end + end + + it 'migrates queue when migrating down' do + Sidekiq::Testing.disable! do + stub_worker(queue: 'security_scans:sync_security_reports_to_report_approval_rules').perform_async(1, 5) + + described_class.new.down + + expect(sidekiq_queue_length('pipeline_default:sync_security_reports_to_report_approval_rules')).to eq 1 + expect(sidekiq_queue_length('security_scans:sync_security_reports_to_report_approval_rules')).to eq 0 + end + end + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 36ddb624cba..cd84bf54e8f 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -303,6 +303,20 @@ describe User, :do_not_mock_admin_mode do end end + context 'bad regex' do + before do + allow_any_instance_of(ApplicationSetting).to receive(:domain_whitelist).and_return(['([a-zA-Z0-9]+)+\.com']) + end + + it 'does not hang on evil input' do + user = build(:user, email: 'user@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!.com') + + expect do + Timeout.timeout(2.seconds) { user.valid? } + end.not_to raise_error + end + end + context 'when a signup domain is whitelisted and subdomains are allowed' do before do allow_any_instance_of(ApplicationSetting).to receive(:domain_whitelist).and_return(['example.com', '*.example.com']) @@ -356,6 +370,20 @@ describe User, :do_not_mock_admin_mode do allow_any_instance_of(ApplicationSetting).to receive(:domain_blacklist).and_return(['example.com']) end + context 'bad regex' do + before do + allow_any_instance_of(ApplicationSetting).to receive(:domain_blacklist).and_return(['([a-zA-Z0-9]+)+\.com']) + end + + it 'does not hang on evil input' do + user = build(:user, email: 'user@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!.com') + + expect do + Timeout.timeout(2.seconds) { user.valid? } + end.not_to raise_error + end + end + context 'when a signup domain is blacklisted' do it 'accepts info@test.com' do user = build(:user, email: 'info@test.com') diff --git a/spec/requests/api/access_requests_spec.rb b/spec/requests/api/access_requests_spec.rb index 3bfca00776f..17f4cde5b8c 100644 --- a/spec/requests/api/access_requests_spec.rb +++ b/spec/requests/api/access_requests_spec.rb @@ -3,12 +3,12 @@ require 'spec_helper' describe API::AccessRequests do - set(:maintainer) { create(:user) } - set(:developer) { create(:user) } - set(:access_requester) { create(:user) } - set(:stranger) { create(:user) } + let_it_be(:maintainer) { create(:user) } + let_it_be(:developer) { create(:user) } + let_it_be(:access_requester) { create(:user) } + let_it_be(:stranger) { create(:user) } - set(:project) do + let_it_be(:project) do create(:project, :public, creator_id: maintainer.id, namespace: maintainer.namespace) do |project| project.add_developer(developer) project.add_maintainer(maintainer) @@ -16,7 +16,7 @@ describe API::AccessRequests do end end - set(:group) do + let_it_be(:group) do create(:group, :public) do |group| group.add_developer(developer) group.add_owner(maintainer) diff --git a/spec/requests/api/award_emoji_spec.rb b/spec/requests/api/award_emoji_spec.rb index 19a34314bb8..4a830f2b449 100644 --- a/spec/requests/api/award_emoji_spec.rb +++ b/spec/requests/api/award_emoji_spec.rb @@ -3,14 +3,13 @@ require 'spec_helper' describe API::AwardEmoji do - set(:user) { create(:user) } - set(:project) { create(:project) } - set(:issue) { create(:issue, project: project) } - set(:award_emoji) { create(:award_emoji, awardable: issue, user: user) } - let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } - let!(:downvote) { create(:award_emoji, :downvote, awardable: merge_request, user: user) } - - set(:note) { create(:note, project: project, noteable: issue) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project) } + let_it_be(:issue) { create(:issue, project: project) } + let_it_be(:award_emoji) { create(:award_emoji, awardable: issue, user: user) } + let_it_be(:note) { create(:note, project: project, noteable: issue) } + let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } + let!(:downvote) { create(:award_emoji, :downvote, awardable: merge_request, user: user) } before do project.add_maintainer(user) diff --git a/spec/requests/api/boards_spec.rb b/spec/requests/api/boards_spec.rb index 510ef9d7d0a..f53bfedb49a 100644 --- a/spec/requests/api/boards_spec.rb +++ b/spec/requests/api/boards_spec.rb @@ -3,35 +3,35 @@ require 'spec_helper' describe API::Boards do - set(:user) { create(:user) } - set(:non_member) { create(:user) } - set(:guest) { create(:user) } - set(:admin) { create(:user, :admin) } - set(:board_parent) { create(:project, :public, creator_id: user.id, namespace: user.namespace ) } + let_it_be(:user) { create(:user) } + let_it_be(:non_member) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:admin) { create(:user, :admin) } + let_it_be(:board_parent, reload: true) { create(:project, :public, creator_id: user.id, namespace: user.namespace ) } - set(:dev_label) do + let_it_be(:dev_label) do create(:label, title: 'Development', color: '#FFAABB', project: board_parent) end - set(:test_label) do + let_it_be(:test_label) do create(:label, title: 'Testing', color: '#FFAACC', project: board_parent) end - set(:ux_label) do + let_it_be(:ux_label) do create(:label, title: 'UX', color: '#FF0000', project: board_parent) end - set(:dev_list) do + let_it_be(:dev_list) do create(:list, label: dev_label, position: 1) end - set(:test_list) do + let_it_be(:test_list) do create(:list, label: test_label, position: 2) end - set(:milestone) { create(:milestone, project: board_parent) } - set(:board_label) { create(:label, project: board_parent) } - set(:board) { create(:board, project: board_parent, lists: [dev_list, test_list]) } + let_it_be(:milestone) { create(:milestone, project: board_parent) } + let_it_be(:board_label) { create(:label, project: board_parent) } + let_it_be(:board) { create(:board, project: board_parent, lists: [dev_list, test_list]) } it_behaves_like 'group and project boards', "/projects/:id/boards" @@ -66,11 +66,11 @@ describe API::Boards do end describe "POST /groups/:id/boards/lists" do - set(:group) { create(:group) } - set(:board_parent) { create(:group, parent: group ) } + let_it_be(:group) { create(:group) } + let_it_be(:board_parent) { create(:group, parent: group ) } let(:url) { "/groups/#{board_parent.id}/boards/#{board.id}/lists" } - set(:board) { create(:board, group: board_parent) } + let_it_be(:board) { create(:board, group: board_parent) } it 'creates a new board list for ancestor group labels' do group.add_developer(user) diff --git a/spec/requests/api/branches_spec.rb b/spec/requests/api/branches_spec.rb index d4deb049ea7..046ec40f218 100644 --- a/spec/requests/api/branches_spec.rb +++ b/spec/requests/api/branches_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe API::Branches do - set(:user) { create(:user) } + let_it_be(:user) { create(:user) } let(:project) { create(:project, :repository, creator: user, path: 'my.project') } let(:guest) { create(:user).tap { |u| project.add_guest(u) } } let(:branch_name) { 'feature' } diff --git a/spec/requests/api/broadcast_messages_spec.rb b/spec/requests/api/broadcast_messages_spec.rb index 163479226e3..7d71b83e147 100644 --- a/spec/requests/api/broadcast_messages_spec.rb +++ b/spec/requests/api/broadcast_messages_spec.rb @@ -3,9 +3,9 @@ require 'spec_helper' describe API::BroadcastMessages do - set(:user) { create(:user) } - set(:admin) { create(:admin) } - set(:message) { create(:broadcast_message) } + let_it_be(:user) { create(:user) } + let_it_be(:admin) { create(:admin) } + let_it_be(:message) { create(:broadcast_message) } describe 'GET /broadcast_messages' do it 'returns an Array of BroadcastMessages' do diff --git a/spec/requests/api/features_spec.rb b/spec/requests/api/features_spec.rb index dfd14f89dbf..d7b0bf881a6 100644 --- a/spec/requests/api/features_spec.rb +++ b/spec/requests/api/features_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' describe API::Features do - set(:user) { create(:user) } - set(:admin) { create(:admin) } + let_it_be(:user) { create(:user) } + let_it_be(:admin) { create(:admin) } before do Flipper.unregister_groups diff --git a/spec/requests/api/graphql/current_user_query_spec.rb b/spec/requests/api/graphql/current_user_query_spec.rb index 9db638ea59e..2b38b8e98ab 100644 --- a/spec/requests/api/graphql/current_user_query_spec.rb +++ b/spec/requests/api/graphql/current_user_query_spec.rb @@ -16,7 +16,7 @@ describe 'getting project information' do end context 'when there is a current_user' do - set(:current_user) { create(:user) } + let_it_be(:current_user) { create(:user) } it_behaves_like 'a working graphql query' diff --git a/spec/requests/api/graphql/gitlab_schema_spec.rb b/spec/requests/api/graphql/gitlab_schema_spec.rb index e10f0732852..8d020cd3a4e 100644 --- a/spec/requests/api/graphql/gitlab_schema_spec.rb +++ b/spec/requests/api/graphql/gitlab_schema_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe 'GitlabSchema configurations' do include GraphqlHelpers - set(:project) { create(:project) } + let_it_be(:project) { create(:project) } shared_examples 'imposing query limits' do describe 'timeouts' do diff --git a/spec/requests/api/graphql/mutations/award_emojis/add_spec.rb b/spec/requests/api/graphql/mutations/award_emojis/add_spec.rb index b24981873c8..3fdeccc84f9 100644 --- a/spec/requests/api/graphql/mutations/award_emojis/add_spec.rb +++ b/spec/requests/api/graphql/mutations/award_emojis/add_spec.rb @@ -5,9 +5,9 @@ require 'spec_helper' describe 'Adding an AwardEmoji' do include GraphqlHelpers - set(:current_user) { create(:user) } - set(:project) { create(:project) } - set(:awardable) { create(:note, project: project) } + let_it_be(:current_user) { create(:user) } + let_it_be(:project) { create(:project) } + let_it_be(:awardable) { create(:note, project: project) } let(:emoji_name) { 'thumbsup' } let(:mutation) do variables = { diff --git a/spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb b/spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb index 5e2c0e668a5..bc796b34db4 100644 --- a/spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb +++ b/spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb @@ -5,9 +5,9 @@ require 'spec_helper' describe 'Toggling an AwardEmoji' do include GraphqlHelpers - set(:current_user) { create(:user) } - set(:project) { create(:project) } - set(:awardable) { create(:note, project: project) } + let_it_be(:current_user) { create(:user) } + let_it_be(:project, reload: true) { create(:project) } + let_it_be(:awardable) { create(:note, project: project) } let(:emoji_name) { 'thumbsup' } let(:mutation) do variables = { diff --git a/spec/requests/api/graphql/mutations/notes/create/diff_note_spec.rb b/spec/requests/api/graphql/mutations/notes/create/diff_note_spec.rb index b04fcb9aece..4c535434faa 100644 --- a/spec/requests/api/graphql/mutations/notes/create/diff_note_spec.rb +++ b/spec/requests/api/graphql/mutations/notes/create/diff_note_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe 'Adding a DiffNote' do include GraphqlHelpers - set(:current_user) { create(:user) } + let_it_be(:current_user) { create(:user) } let(:noteable) { create(:merge_request, source_project: project, target_project: project) } let(:project) { create(:project, :repository) } let(:diff_refs) { noteable.diff_refs } diff --git a/spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb b/spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb index 3ba6c689024..0bba3e79434 100644 --- a/spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb +++ b/spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe 'Adding an image DiffNote' do include GraphqlHelpers - set(:current_user) { create(:user) } + let_it_be(:current_user) { create(:user) } let(:noteable) { create(:merge_request, source_project: project, target_project: project) } let(:project) { create(:project, :repository) } let(:diff_refs) { noteable.diff_refs } diff --git a/spec/requests/api/graphql/mutations/notes/create/note_spec.rb b/spec/requests/api/graphql/mutations/notes/create/note_spec.rb index 14aaa430ac9..9a78d44245e 100644 --- a/spec/requests/api/graphql/mutations/notes/create/note_spec.rb +++ b/spec/requests/api/graphql/mutations/notes/create/note_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe 'Adding a Note' do include GraphqlHelpers - set(:current_user) { create(:user) } + let_it_be(:current_user) { create(:user) } let(:noteable) { create(:merge_request, source_project: project, target_project: project) } let(:project) { create(:project) } let(:discussion) { nil } diff --git a/spec/requests/api/graphql/tasks/task_completion_status_spec.rb b/spec/requests/api/graphql/tasks/task_completion_status_spec.rb index 566d0fe636a..188bfa8b924 100644 --- a/spec/requests/api/graphql/tasks/task_completion_status_spec.rb +++ b/spec/requests/api/graphql/tasks/task_completion_status_spec.rb @@ -9,8 +9,8 @@ describe 'getting task completion status information' do DESCRIPTION_1_DONE = '- [x] task 1\n- [ ] task 2' DESCRIPTION_2_DONE = '- [x] task 1\n- [x] task 2' - set(:user1) { create(:user) } - set(:project) { create(:project, :repository, :public) } + let_it_be(:user1) { create(:user) } + let_it_be(:project) { create(:project, :repository, :public) } let(:fields) do <<~QUERY diff --git a/spec/requests/api/group_boards_spec.rb b/spec/requests/api/group_boards_spec.rb index 232ec9aca32..d2d10f357fe 100644 --- a/spec/requests/api/group_boards_spec.rb +++ b/spec/requests/api/group_boards_spec.rb @@ -3,42 +3,42 @@ require 'spec_helper' describe API::GroupBoards do - set(:user) { create(:user) } - set(:non_member) { create(:user) } - set(:guest) { create(:user) } - set(:admin) { create(:user, :admin) } - set(:board_parent) { create(:group, :public) } + let_it_be(:user) { create(:user) } + let_it_be(:non_member) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:admin) { create(:user, :admin) } + let_it_be(:board_parent) { create(:group, :public) } before do board_parent.add_owner(user) end - set(:project) { create(:project, :public, namespace: board_parent ) } + let_it_be(:project) { create(:project, :public, namespace: board_parent ) } - set(:dev_label) do + let_it_be(:dev_label) do create(:group_label, title: 'Development', color: '#FFAABB', group: board_parent) end - set(:test_label) do + let_it_be(:test_label) do create(:group_label, title: 'Testing', color: '#FFAACC', group: board_parent) end - set(:ux_label) do + let_it_be(:ux_label) do create(:group_label, title: 'UX', color: '#FF0000', group: board_parent) end - set(:dev_list) do + let_it_be(:dev_list) do create(:list, label: dev_label, position: 1) end - set(:test_list) do + let_it_be(:test_list) do create(:list, label: test_label, position: 2) end - set(:milestone) { create(:milestone, group: board_parent) } - set(:board_label) { create(:group_label, group: board_parent) } + let_it_be(:milestone) { create(:milestone, group: board_parent) } + let_it_be(:board_label) { create(:group_label, group: board_parent) } - set(:board) { create(:board, group: board_parent, lists: [dev_list, test_list]) } + let_it_be(:board) { create(:board, group: board_parent, lists: [dev_list, test_list]) } it_behaves_like 'group and project boards', "/groups/:id/boards", false diff --git a/spec/requests/api/issues/get_group_issues_spec.rb b/spec/requests/api/issues/get_group_issues_spec.rb index f2a1b335589..59e89a7f452 100644 --- a/spec/requests/api/issues/get_group_issues_spec.rb +++ b/spec/requests/api/issues/get_group_issues_spec.rb @@ -3,18 +3,16 @@ require 'spec_helper' describe API::Issues do - set(:user) { create(:user) } - let(:user2) { create(:user) } - let(:non_member) { create(:user) } - set(:guest) { create(:user) } - set(:author) { create(:author) } - set(:assignee) { create(:assignee) } - let(:admin) { create(:user, :admin) } - - let(:issue_title) { 'foo' } - let(:issue_description) { 'closed' } - - let(:no_milestone_title) { 'None' } + let_it_be(:user) { create(:user) } + let(:user2) { create(:user) } + let(:non_member) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:author) { create(:author) } + let_it_be(:assignee) { create(:assignee) } + let(:admin) { create(:user, :admin) } + let(:issue_title) { 'foo' } + let(:issue_description) { 'closed' } + let(:no_milestone_title) { 'None' } let(:any_milestone_title) { 'Any' } before do diff --git a/spec/requests/api/issues/get_project_issues_spec.rb b/spec/requests/api/issues/get_project_issues_spec.rb index e031cc9b0c6..edd4ae85729 100644 --- a/spec/requests/api/issues/get_project_issues_spec.rb +++ b/spec/requests/api/issues/get_project_issues_spec.rb @@ -3,18 +3,18 @@ require 'spec_helper' describe API::Issues do - set(:user) { create(:user) } - set(:project) { create(:project, :public, :repository, creator_id: user.id, namespace: user.namespace) } - set(:private_mrs_project) do + let_it_be(:user) { create(:user) } + let_it_be(:project, reload: true) { create(:project, :public, :repository, creator_id: user.id, namespace: user.namespace) } + let_it_be(:private_mrs_project) do create(:project, :public, :repository, creator_id: user.id, namespace: user.namespace, merge_requests_access_level: ProjectFeature::PRIVATE) end - let(:user2) { create(:user) } - let(:non_member) { create(:user) } - set(:guest) { create(:user) } - set(:author) { create(:author) } - set(:assignee) { create(:assignee) } - let(:admin) { create(:user, :admin) } + let(:user2) { create(:user) } + let(:non_member) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:author) { create(:author) } + let_it_be(:assignee) { create(:assignee) } + let(:admin) { create(:user, :admin) } let(:issue_title) { 'foo' } let(:issue_description) { 'closed' } let!(:closed_issue) do @@ -48,12 +48,12 @@ describe API::Issues do title: issue_title, description: issue_description end - set(:label) do + let_it_be(:label) do create(:label, title: 'label', color: '#FFAABB', project: project) end let!(:label_link) { create(:label_link, label: label, target: issue) } let(:milestone) { create(:milestone, title: '1.0.0', project: project) } - set(:empty_milestone) do + let_it_be(:empty_milestone) do create(:milestone, title: '2.0.0', project: project) end let!(:note) { create(:note_on_issue, author: user, project: project, noteable: issue) } diff --git a/spec/requests/api/issues/issues_spec.rb b/spec/requests/api/issues/issues_spec.rb index 19422d4ca39..45754736a2c 100644 --- a/spec/requests/api/issues/issues_spec.rb +++ b/spec/requests/api/issues/issues_spec.rb @@ -3,18 +3,18 @@ require 'spec_helper' describe API::Issues do - set(:user) { create(:user) } - set(:project) { create(:project, :public, :repository, creator_id: user.id, namespace: user.namespace) } - set(:private_mrs_project) do + let_it_be(:user) { create(:user) } + let_it_be(:project, reload: true) { create(:project, :public, :repository, creator_id: user.id, namespace: user.namespace) } + let_it_be(:private_mrs_project) do create(:project, :public, :repository, creator_id: user.id, namespace: user.namespace, merge_requests_access_level: ProjectFeature::PRIVATE) end - let(:user2) { create(:user) } - let(:non_member) { create(:user) } - set(:guest) { create(:user) } - set(:author) { create(:author) } - set(:assignee) { create(:assignee) } - let(:admin) { create(:user, :admin) } + let(:user2) { create(:user) } + let(:non_member) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:author) { create(:author) } + let_it_be(:assignee) { create(:assignee) } + let(:admin) { create(:user, :admin) } let(:issue_title) { 'foo' } let(:issue_description) { 'closed' } let!(:closed_issue) do @@ -48,12 +48,12 @@ describe API::Issues do title: issue_title, description: issue_description end - set(:label) do + let_it_be(:label) do create(:label, title: 'label', color: '#FFAABB', project: project) end let!(:label_link) { create(:label_link, label: label, target: issue) } let(:milestone) { create(:milestone, title: '1.0.0', project: project) } - set(:empty_milestone) do + let_it_be(:empty_milestone) do create(:milestone, title: '2.0.0', project: project) end let!(:note) { create(:note_on_issue, author: user, project: project, noteable: issue) } diff --git a/spec/requests/api/issues/post_projects_issues_spec.rb b/spec/requests/api/issues/post_projects_issues_spec.rb index 341d0e8ae6b..782eda875af 100644 --- a/spec/requests/api/issues/post_projects_issues_spec.rb +++ b/spec/requests/api/issues/post_projects_issues_spec.rb @@ -3,17 +3,17 @@ require 'spec_helper' describe API::Issues do - set(:user) { create(:user) } - set(:project) do + let_it_be(:user) { create(:user) } + let_it_be(:project, reload: true) do create(:project, :public, creator_id: user.id, namespace: user.namespace) end - let(:user2) { create(:user) } - let(:non_member) { create(:user) } - set(:guest) { create(:user) } - set(:author) { create(:author) } - set(:assignee) { create(:assignee) } - let(:admin) { create(:user, :admin) } + let(:user2) { create(:user) } + let(:non_member) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:author) { create(:author) } + let_it_be(:assignee) { create(:assignee) } + let(:admin) { create(:user, :admin) } let(:issue_title) { 'foo' } let(:issue_description) { 'closed' } let!(:closed_issue) do @@ -47,12 +47,12 @@ describe API::Issues do title: issue_title, description: issue_description end - set(:label) do + let_it_be(:label) do create(:label, title: 'label', color: '#FFAABB', project: project) end let!(:label_link) { create(:label_link, label: label, target: issue) } let(:milestone) { create(:milestone, title: '1.0.0', project: project) } - set(:empty_milestone) do + let_it_be(:empty_milestone) do create(:milestone, title: '2.0.0', project: project) end let!(:note) { create(:note_on_issue, author: user, project: project, noteable: issue) } diff --git a/spec/requests/api/issues/put_projects_issues_spec.rb b/spec/requests/api/issues/put_projects_issues_spec.rb index 8e78aca59b2..709520b6bdf 100644 --- a/spec/requests/api/issues/put_projects_issues_spec.rb +++ b/spec/requests/api/issues/put_projects_issues_spec.rb @@ -3,17 +3,17 @@ require 'spec_helper' describe API::Issues do - set(:user) { create(:user) } - set(:project) do + let_it_be(:user) { create(:user) } + let_it_be(:project, reload: true) do create(:project, :public, creator_id: user.id, namespace: user.namespace) end - let(:user2) { create(:user) } - let(:non_member) { create(:user) } - set(:guest) { create(:user) } - set(:author) { create(:author) } - set(:assignee) { create(:assignee) } - let(:admin) { create(:user, :admin) } + let(:user2) { create(:user) } + let(:non_member) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:author) { create(:author) } + let_it_be(:assignee) { create(:assignee) } + let(:admin) { create(:user, :admin) } let(:issue_title) { 'foo' } let(:issue_description) { 'closed' } let!(:closed_issue) do @@ -47,12 +47,12 @@ describe API::Issues do title: issue_title, description: issue_description end - set(:label) do + let_it_be(:label) do create(:label, title: 'label', color: '#FFAABB', project: project) end let!(:label_link) { create(:label_link, label: label, target: issue) } let(:milestone) { create(:milestone, title: '1.0.0', project: project) } - set(:empty_milestone) do + let_it_be(:empty_milestone) do create(:milestone, title: '2.0.0', project: project) end let!(:note) { create(:note_on_issue, author: user, project: project, noteable: issue) } diff --git a/spec/requests/api/jobs_spec.rb b/spec/requests/api/jobs_spec.rb index 1e1099ebcb6..652be20f1e4 100644 --- a/spec/requests/api/jobs_spec.rb +++ b/spec/requests/api/jobs_spec.rb @@ -31,11 +31,11 @@ describe API::Jobs do end end - set(:project) do + let_it_be(:project, reload: true) do create(:project, :repository, public_builds: false) end - set(:pipeline) do + let_it_be(:pipeline, reload: true) do create(:ci_empty_pipeline, project: project, sha: project.commit.id, ref: project.default_branch) diff --git a/spec/requests/api/markdown_spec.rb b/spec/requests/api/markdown_spec.rb index 99263f2fc1e..8a1e1b05c9a 100644 --- a/spec/requests/api/markdown_spec.rb +++ b/spec/requests/api/markdown_spec.rb @@ -52,8 +52,8 @@ describe API::Markdown do end context "when arguments are valid" do - set(:project) { create(:project) } - set(:issue) { create(:issue, project: project) } + let_it_be(:project) { create(:project) } + let_it_be(:issue) { create(:issue, project: project) } let(:text) { ":tada: Hello world! :100: #{issue.to_reference}" } context "when not using gfm" do diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb index 58190beb38a..862afd11b86 100644 --- a/spec/requests/api/merge_requests_spec.rb +++ b/spec/requests/api/merge_requests_spec.rb @@ -6,9 +6,9 @@ describe API::MergeRequests do include ProjectForksHelper let(:base_time) { Time.now } - set(:user) { create(:user) } - set(:user2) { create(:user) } - set(:admin) { create(:user, :admin) } + let_it_be(:user) { create(:user) } + let_it_be(:user2) { create(:user) } + let_it_be(:admin) { create(:user, :admin) } let(:project) { create(:project, :public, :repository, creator: user, namespace: user.namespace, only_allow_merge_if_pipeline_succeeds: false) } let(:milestone) { create(:milestone, title: '1.0.0', project: project) } let(:milestone1) { create(:milestone, title: '0.9', project: project) } diff --git a/spec/requests/api/pages/internal_access_spec.rb b/spec/requests/api/pages/internal_access_spec.rb index 821a210a414..91139b987df 100644 --- a/spec/requests/api/pages/internal_access_spec.rb +++ b/spec/requests/api/pages/internal_access_spec.rb @@ -6,16 +6,15 @@ describe "Internal Project Pages Access" do using RSpec::Parameterized::TableSyntax include AccessMatchers - set(:group) { create(:group) } - set(:project) { create(:project, :internal, pages_access_level: ProjectFeature::ENABLED, namespace: group) } - - set(:admin) { create(:admin) } - set(:owner) { create(:user) } - set(:master) { create(:user) } - set(:developer) { create(:user) } - set(:reporter) { create(:user) } - set(:guest) { create(:user) } - set(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:project, reload: true) { create(:project, :internal, pages_access_level: ProjectFeature::ENABLED, namespace: group) } + let_it_be(:admin) { create(:admin) } + let_it_be(:owner) { create(:user) } + let_it_be(:master) { create(:user) } + let_it_be(:developer) { create(:user) } + let_it_be(:reporter) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:user) { create(:user) } before do allow(Gitlab.config.pages).to receive(:access_control).and_return(true) diff --git a/spec/requests/api/pages/private_access_spec.rb b/spec/requests/api/pages/private_access_spec.rb index ec84762b05a..7c592ccfd43 100644 --- a/spec/requests/api/pages/private_access_spec.rb +++ b/spec/requests/api/pages/private_access_spec.rb @@ -6,16 +6,15 @@ describe "Private Project Pages Access" do using RSpec::Parameterized::TableSyntax include AccessMatchers - set(:group) { create(:group) } - set(:project) { create(:project, :private, pages_access_level: ProjectFeature::ENABLED, namespace: group) } - - set(:admin) { create(:admin) } - set(:owner) { create(:user) } - set(:master) { create(:user) } - set(:developer) { create(:user) } - set(:reporter) { create(:user) } - set(:guest) { create(:user) } - set(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:project, reload: true) { create(:project, :private, pages_access_level: ProjectFeature::ENABLED, namespace: group) } + let_it_be(:admin) { create(:admin) } + let_it_be(:owner) { create(:user) } + let_it_be(:master) { create(:user) } + let_it_be(:developer) { create(:user) } + let_it_be(:reporter) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:user) { create(:user) } before do allow(Gitlab.config.pages).to receive(:access_control).and_return(true) diff --git a/spec/requests/api/pages/public_access_spec.rb b/spec/requests/api/pages/public_access_spec.rb index 67b8cfb8fbc..f2fe64434c6 100644 --- a/spec/requests/api/pages/public_access_spec.rb +++ b/spec/requests/api/pages/public_access_spec.rb @@ -6,16 +6,15 @@ describe "Public Project Pages Access" do using RSpec::Parameterized::TableSyntax include AccessMatchers - set(:group) { create(:group) } - set(:project) { create(:project, :public, pages_access_level: ProjectFeature::ENABLED, namespace: group) } - - set(:admin) { create(:admin) } - set(:owner) { create(:user) } - set(:master) { create(:user) } - set(:developer) { create(:user) } - set(:reporter) { create(:user) } - set(:guest) { create(:user) } - set(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:project, reload: true) { create(:project, :public, pages_access_level: ProjectFeature::ENABLED, namespace: group) } + let_it_be(:admin) { create(:admin) } + let_it_be(:owner) { create(:user) } + let_it_be(:master) { create(:user) } + let_it_be(:developer) { create(:user) } + let_it_be(:reporter) { create(:user) } + let_it_be(:guest) { create(:user) } + let_it_be(:user) { create(:user) } before do allow(Gitlab.config.pages).to receive(:access_control).and_return(true) diff --git a/spec/requests/api/pipeline_schedules_spec.rb b/spec/requests/api/pipeline_schedules_spec.rb index 42fc97729bd..fdb9508ed08 100644 --- a/spec/requests/api/pipeline_schedules_spec.rb +++ b/spec/requests/api/pipeline_schedules_spec.rb @@ -3,9 +3,9 @@ require 'spec_helper' describe API::PipelineSchedules do - set(:developer) { create(:user) } - set(:user) { create(:user) } - set(:project) { create(:project, :repository, public_builds: false) } + let_it_be(:developer) { create(:user) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, :repository, public_builds: false) } before do project.add_developer(developer) @@ -375,7 +375,7 @@ describe API::PipelineSchedules do describe 'POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables' do let(:params) { attributes_for(:ci_pipeline_schedule_variable) } - set(:pipeline_schedule) do + let_it_be(:pipeline_schedule) do create(:ci_pipeline_schedule, project: project, owner: developer) end @@ -432,7 +432,7 @@ describe API::PipelineSchedules do end describe 'PUT /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables/:key' do - set(:pipeline_schedule) do + let_it_be(:pipeline_schedule) do create(:ci_pipeline_schedule, project: project, owner: developer) end @@ -472,7 +472,7 @@ describe API::PipelineSchedules do describe 'DELETE /projects/:id/pipeline_schedules/:pipeline_schedule_id/variables/:key' do let(:maintainer) { create(:user) } - set(:pipeline_schedule) do + let_it_be(:pipeline_schedule) do create(:ci_pipeline_schedule, project: project, owner: developer) end diff --git a/spec/requests/api/project_container_repositories_spec.rb b/spec/requests/api/project_container_repositories_spec.rb index 7cec0867b32..98b3416a2bc 100644 --- a/spec/requests/api/project_container_repositories_spec.rb +++ b/spec/requests/api/project_container_repositories_spec.rb @@ -5,12 +5,11 @@ require 'spec_helper' describe API::ProjectContainerRepositories do include ExclusiveLeaseHelpers - set(:project) { create(:project, :private) } - set(:maintainer) { create(:user) } - set(:developer) { create(:user) } - set(:reporter) { create(:user) } - set(:guest) { create(:user) } - + let_it_be(:project) { create(:project, :private) } + let_it_be(:maintainer) { create(:user) } + let_it_be(:developer) { create(:user) } + let_it_be(:reporter) { create(:user) } + let_it_be(:guest) { create(:user) } let(:root_repository) { create(:container_repository, :root, project: project) } let(:test_repository) { create(:container_repository, project: project) } diff --git a/spec/requests/api/project_export_spec.rb b/spec/requests/api/project_export_spec.rb index 37f2cc85a50..98214a8c471 100644 --- a/spec/requests/api/project_export_spec.rb +++ b/spec/requests/api/project_export_spec.rb @@ -3,13 +3,13 @@ require 'spec_helper' describe API::ProjectExport, :clean_gitlab_redis_cache do - set(:project) { create(:project) } - set(:project_none) { create(:project) } - set(:project_started) { create(:project) } + let_it_be(:project) { create(:project) } + let_it_be(:project_none) { create(:project) } + let_it_be(:project_started) { create(:project) } let(:project_finished) { create(:project, :with_export) } let(:project_after_export) { create(:project, :with_export) } - set(:user) { create(:user) } - set(:admin) { create(:admin) } + let_it_be(:user) { create(:user) } + let_it_be(:admin) { create(:admin) } let(:path) { "/projects/#{project.id}/export" } let(:path_none) { "/projects/#{project_none.id}/export" } diff --git a/spec/requests/api/project_snippets_spec.rb b/spec/requests/api/project_snippets_spec.rb index ccbfe040fca..2c6a13efc12 100644 --- a/spec/requests/api/project_snippets_spec.rb +++ b/spec/requests/api/project_snippets_spec.rb @@ -3,9 +3,9 @@ require 'spec_helper' describe API::ProjectSnippets do - set(:project) { create(:project, :public) } - set(:user) { create(:user) } - set(:admin) { create(:admin) } + let_it_be(:project) { create(:project, :public) } + let_it_be(:user) { create(:user) } + let_it_be(:admin) { create(:admin) } describe "GET /projects/:project_id/snippets/:id/user_agent_detail" do let(:snippet) { create(:project_snippet, :public, project: project) } diff --git a/spec/requests/api/resource_label_events_spec.rb b/spec/requests/api/resource_label_events_spec.rb index 8bac378787c..7619399458a 100644 --- a/spec/requests/api/resource_label_events_spec.rb +++ b/spec/requests/api/resource_label_events_spec.rb @@ -3,9 +3,9 @@ require 'spec_helper' describe API::ResourceLabelEvents do - set(:user) { create(:user) } - set(:project) { create(:project, :public, namespace: user.namespace) } - set(:label) { create(:label, project: project) } + let_it_be(:user) { create(:user) } + let_it_be(:project, reload: true) { create(:project, :public, namespace: user.namespace) } + let_it_be(:label) { create(:label, project: project) } before do project.add_developer(user) diff --git a/spec/requests/api/runners_spec.rb b/spec/requests/api/runners_spec.rb index 7bad30d107d..c54487a68fe 100644 --- a/spec/requests/api/runners_spec.rb +++ b/spec/requests/api/runners_spec.rb @@ -557,7 +557,7 @@ describe API::Runners do end describe 'GET /runners/:id/jobs' do - set(:job_1) { create(:ci_build) } + let_it_be(:job_1) { create(:ci_build) } let!(:job_2) { create(:ci_build, :running, runner: shared_runner, project: project) } let!(:job_3) { create(:ci_build, :failed, runner: shared_runner, project: project) } let!(:job_4) { create(:ci_build, :running, runner: project_runner, project: project) } diff --git a/spec/requests/api/search_spec.rb b/spec/requests/api/search_spec.rb index 24d7f1e313c..04794b2ba58 100644 --- a/spec/requests/api/search_spec.rb +++ b/spec/requests/api/search_spec.rb @@ -3,10 +3,10 @@ require 'spec_helper' describe API::Search do - set(:user) { create(:user) } - set(:group) { create(:group) } - set(:project) { create(:project, :wiki_repo, :public, name: 'awesome project', group: group) } - set(:repo_project) { create(:project, :public, :repository, group: group) } + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:project, reload: true) { create(:project, :wiki_repo, :public, name: 'awesome project', group: group) } + let_it_be(:repo_project) { create(:project, :public, :repository, group: group) } shared_examples 'response is correct' do |schema:, size: 1| it { expect(response).to have_gitlab_http_status(200) } diff --git a/spec/requests/api/services_spec.rb b/spec/requests/api/services_spec.rb index 628d5533366..323164f26f0 100644 --- a/spec/requests/api/services_spec.rb +++ b/spec/requests/api/services_spec.rb @@ -3,10 +3,10 @@ require "spec_helper" describe API::Services do - set(:user) { create(:user) } - set(:user2) { create(:user) } + let_it_be(:user) { create(:user) } + let_it_be(:user2) { create(:user) } - set(:project) do + let_it_be(:project, reload: true) do create(:project, creator_id: user.id, namespace: user.namespace) end diff --git a/spec/requests/api/settings_spec.rb b/spec/requests/api/settings_spec.rb index af86ba86303..1a6bd4e6c0d 100644 --- a/spec/requests/api/settings_spec.rb +++ b/spec/requests/api/settings_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe API::Settings, 'Settings' do let(:user) { create(:user) } - set(:admin) { create(:admin) } + let_it_be(:admin) { create(:admin) } describe "GET /application/settings" do it "returns application settings" do diff --git a/spec/requests/api/snippets_spec.rb b/spec/requests/api/snippets_spec.rb index 1749ec89bc1..21565265b99 100644 --- a/spec/requests/api/snippets_spec.rb +++ b/spec/requests/api/snippets_spec.rb @@ -89,8 +89,8 @@ describe API::Snippets do end describe 'GET /snippets/:id/raw' do - set(:author) { create(:user) } - set(:snippet) { create(:personal_snippet, :private, author: author) } + let_it_be(:author) { create(:user) } + let_it_be(:snippet) { create(:personal_snippet, :private, author: author) } it 'requires authentication' do get api("/snippets/#{snippet.id}", nil) @@ -137,10 +137,10 @@ describe API::Snippets do end describe 'GET /snippets/:id' do - set(:admin) { create(:user, :admin) } - set(:author) { create(:user) } - set(:private_snippet) { create(:personal_snippet, :private, author: author) } - set(:internal_snippet) { create(:personal_snippet, :internal, author: author) } + let_it_be(:admin) { create(:user, :admin) } + let_it_be(:author) { create(:user) } + let_it_be(:private_snippet) { create(:personal_snippet, :private, author: author) } + let_it_be(:internal_snippet) { create(:personal_snippet, :internal, author: author) } it 'requires authentication' do get api("/snippets/#{private_snippet.id}", nil) diff --git a/spec/requests/api/task_completion_status_spec.rb b/spec/requests/api/task_completion_status_spec.rb index ee2531197b1..a2891e1d983 100644 --- a/spec/requests/api/task_completion_status_spec.rb +++ b/spec/requests/api/task_completion_status_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' describe 'task completion status response' do - set(:user) { create(:user) } - set(:project) do + let_it_be(:user) { create(:user) } + let_it_be(:project) do create(:project, :public, creator_id: user.id, namespace: user.namespace) end diff --git a/spec/requests/api/triggers_spec.rb b/spec/requests/api/triggers_spec.rb index d54d112cd9f..35e41f5ae52 100644 --- a/spec/requests/api/triggers_spec.rb +++ b/spec/requests/api/triggers_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' describe API::Triggers do - set(:user) { create(:user) } - set(:user2) { create(:user) } + let_it_be(:user) { create(:user) } + let_it_be(:user2) { create(:user) } let!(:trigger_token) { 'secure_token' } let!(:trigger_token_2) { 'secure_token_2' } |