diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-02 18:08:13 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-02 18:08:13 +0300 |
commit | 62f486eb359932d8ec32ee6456148f9c477c52e9 (patch) | |
tree | 4626a2e2baff0137f542b9e9d722713422e5b54e /spec | |
parent | 6092dcc437ef3e9300cc32cb7c6daea9448cba40 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r-- | spec/controllers/dashboard_controller_spec.rb | 10 | ||||
-rw-r--r-- | spec/controllers/groups_controller_spec.rb | 13 | ||||
-rw-r--r-- | spec/factories/terraform/state.rb | 10 | ||||
-rw-r--r-- | spec/finders/ci/pipelines_for_merge_request_finder_spec.rb | 2 | ||||
-rw-r--r-- | spec/frontend/design_management/pages/index_spec.js | 1 | ||||
-rw-r--r-- | spec/helpers/projects_helper_spec.rb | 105 | ||||
-rw-r--r-- | spec/lib/gitlab/diff/highlight_cache_spec.rb | 34 | ||||
-rw-r--r-- | spec/lib/gitlab/git/diff_spec.rb | 12 | ||||
-rw-r--r-- | spec/lib/gitlab/sql/pattern_spec.rb | 37 | ||||
-rw-r--r-- | spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb | 18 | ||||
-rw-r--r-- | spec/serializers/ci/trigger_serializer_spec.rb | 2 | ||||
-rw-r--r-- | spec/support/factory_bot.rb | 4 |
12 files changed, 130 insertions, 118 deletions
diff --git a/spec/controllers/dashboard_controller_spec.rb b/spec/controllers/dashboard_controller_spec.rb index c838affa239..9b78f841cce 100644 --- a/spec/controllers/dashboard_controller_spec.rb +++ b/spec/controllers/dashboard_controller_spec.rb @@ -15,6 +15,16 @@ RSpec.describe DashboardController do describe 'GET issues' do it_behaves_like 'issuables list meta-data', :issue, :issues it_behaves_like 'issuables requiring filter', :issues + + it 'lists only incidents and issues' do + issue = create(:incident, project: project, author: user) + incident = create(:incident, project: project, author: user) + create(:quality_test_case, project: project, author: user) + + get :issues, params: { author_id: user.id } + + expect(assigns(:issues)).to match_array([issue, incident]) + end end describe 'GET merge requests' do diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index 9a3df819656..90f348a3421 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -389,8 +389,8 @@ RSpec.describe GroupsController, factory_default: :keep do end describe 'GET #issues', :sidekiq_might_not_need_inline do - let(:issue_1) { create(:issue, project: project, title: 'foo') } - let(:issue_2) { create(:issue, project: project, title: 'bar') } + let_it_be(:issue_1) { create(:issue, project: project, title: 'foo') } + let_it_be(:issue_2) { create(:issue, project: project, title: 'bar') } before do create_list(:award_emoji, 3, awardable: issue_2) @@ -400,6 +400,15 @@ RSpec.describe GroupsController, factory_default: :keep do sign_in(user) end + it 'lists only incidents and issues' do + incident = create(:incident, project: project) + create(:quality_test_case, project: project) + + get :issues, params: { id: group.to_param } + + expect(assigns(:issues)).to match_array([issue_1, issue_2, incident]) + end + context 'sorting by votes' do it 'sorts most popular issues' do get :issues, params: { id: group.to_param, sort: 'upvotes_desc' } diff --git a/spec/factories/terraform/state.rb b/spec/factories/terraform/state.rb index 9decc89ef39..d80c1315e28 100644 --- a/spec/factories/terraform/state.rb +++ b/spec/factories/terraform/state.rb @@ -17,16 +17,6 @@ FactoryBot.define do locked_by_user { create(:user) } end - trait(:checksummed) do - with_file - verification_checksum { 'abc' } - end - - trait(:checksum_failure) do - with_file - verification_failure { 'Could not calculate the checksum' } - end - trait :with_version do after(:create) do |state| create(:terraform_state_version, :with_file, terraform_state: state) diff --git a/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb b/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb index 196fde5efe0..65f6dc0ba74 100644 --- a/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb +++ b/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb @@ -122,7 +122,7 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do end context 'with unsaved merge request' do - let(:merge_request) { build(:merge_request) } + let(:merge_request) { build(:merge_request, source_project: create(:project, :repository)) } let!(:pipeline) do create(:ci_empty_pipeline, project: project, diff --git a/spec/frontend/design_management/pages/index_spec.js b/spec/frontend/design_management/pages/index_spec.js index f625cd3f018..55ccb668e81 100644 --- a/spec/frontend/design_management/pages/index_spec.js +++ b/spec/frontend/design_management/pages/index_spec.js @@ -653,7 +653,6 @@ describe('Design management index page', () => { it('ensures fullscreen layout is not applied', () => { createComponent(true); - wrapper.vm.$router.push('/'); expect(mockPageEl.classList.remove).toHaveBeenCalledTimes(1); expect(mockPageEl.classList.remove).toHaveBeenCalledWith(...DESIGN_DETAIL_LAYOUT_CLASSLIST); }); diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb index 5b04fa04377..f081cf225b1 100644 --- a/spec/helpers/projects_helper_spec.rb +++ b/spec/helpers/projects_helper_spec.rb @@ -5,16 +5,15 @@ require 'spec_helper' RSpec.describe ProjectsHelper do include ProjectForksHelper - let_it_be(:project) { create(:project) } + let_it_be_with_reload(:project) { create(:project) } + let_it_be_with_refind(:project_with_repo) { create(:project, :repository) } let_it_be(:user) { create(:user) } - describe '#project_incident_management_setting' do - let(:project) { create(:project) } - - before do - helper.instance_variable_set(:@project, project) - end + before do + helper.instance_variable_set(:@project, project) + end + describe '#project_incident_management_setting' do context 'when incident_management_setting exists' do let(:project_incident_management_setting) do create(:project_incident_management_setting, project: project) @@ -40,20 +39,14 @@ RSpec.describe ProjectsHelper do end describe '#error_tracking_setting_project_json' do - let(:project) { create(:project) } - context 'error tracking setting does not exist' do - before do - helper.instance_variable_set(:@project, project) - end - it 'returns nil' do expect(helper.error_tracking_setting_project_json).to be_nil end end context 'error tracking setting exists' do - let!(:error_tracking_setting) { create(:project_error_tracking_setting, project: project) } + let_it_be(:error_tracking_setting) { create(:project_error_tracking_setting, project: project) } context 'api_url present' do let(:json) do @@ -65,24 +58,16 @@ RSpec.describe ProjectsHelper do }.to_json end - before do - helper.instance_variable_set(:@project, project) - end - it 'returns error tracking json' do expect(helper.error_tracking_setting_project_json).to eq(json) end end context 'api_url not present' do - before do + it 'returns nil' do project.error_tracking_setting.api_url = nil project.error_tracking_setting.enabled = false - helper.instance_variable_set(:@project, project) - end - - it 'returns nil' do expect(helper.error_tracking_setting_project_json).to be_nil end end @@ -98,8 +83,7 @@ RSpec.describe ProjectsHelper do end describe "can_change_visibility_level?" do - let(:project) { create(:project) } - let(:user) { create(:project_member, :reporter, user: create(:user), project: project).user } + let_it_be(:user) { create(:project_member, :reporter, user: create(:user), project: project).user } let(:forked_project) { fork_project(project, user) } it "returns false if there are no appropriate permissions" do @@ -142,8 +126,7 @@ RSpec.describe ProjectsHelper do end describe '#can_disable_emails?' do - let(:project) { create(:project) } - let(:user) { create(:project_member, :maintainer, user: create(:user), project: project).user } + let_it_be(:user) { create(:project_member, :maintainer, user: create(:user), project: project).user } it 'returns true for the project owner' do allow(helper).to receive(:can?).with(project.owner, :set_emails_disabled, project) { true } @@ -166,11 +149,7 @@ RSpec.describe ProjectsHelper do end describe "readme_cache_key" do - let(:project) { create(:project, :repository) } - - before do - helper.instance_variable_set(:@project, project) - end + let(:project) { project_with_repo } it "returns a valid cach key" do expect(helper.send(:readme_cache_key)).to eq("#{project.full_path}-#{project.commit.id}-readme") @@ -184,8 +163,7 @@ RSpec.describe ProjectsHelper do end describe "#project_list_cache_key", :clean_gitlab_redis_shared_state do - let(:project) { create(:project, :repository) } - let(:user) { create(:user) } + let(:project) { project_with_repo } before do allow(helper).to receive(:current_user).and_return(user) @@ -249,8 +227,6 @@ RSpec.describe ProjectsHelper do describe '#load_pipeline_status' do it 'loads the pipeline status in batch' do - project = build(:project) - helper.load_pipeline_status([project]) # Skip lazy loading of the `pipeline_status` attribute pipeline_status = project.instance_variable_get('@pipeline_status') @@ -260,8 +236,6 @@ RSpec.describe ProjectsHelper do end describe '#show_no_ssh_key_message?' do - let(:user) { create(:user) } - before do allow(helper).to receive(:current_user).and_return(user) end @@ -282,8 +256,6 @@ RSpec.describe ProjectsHelper do end describe '#show_no_password_message?' do - let(:user) { create(:user) } - before do allow(helper).to receive(:current_user).and_return(user) end @@ -424,7 +396,6 @@ RSpec.describe ProjectsHelper do before do allow(helper).to receive(:current_user).and_return(user) - helper.instance_variable_set(:@project, project) end context 'when there is no current_user' do @@ -444,9 +415,6 @@ RSpec.describe ProjectsHelper do end describe '#get_project_nav_tabs' do - let_it_be(:user) { create(:user) } - let(:project) { create(:project) } - before do allow(helper).to receive(:can?) { true } end @@ -543,7 +511,6 @@ RSpec.describe ProjectsHelper do describe '#show_projects' do let(:projects) do - create(:project) Project.all end @@ -568,8 +535,8 @@ RSpec.describe ProjectsHelper do end end - describe('#push_to_create_project_command') do - let(:user) { create(:user, username: 'john') } + describe '#push_to_create_project_command' do + let(:user) { build_stubbed(:user, username: 'john') } it 'returns the command to push to create project over HTTP' do allow(Gitlab::CurrentSettings.current_application_settings).to receive(:enabled_git_access_protocol) { 'http' } @@ -585,8 +552,6 @@ RSpec.describe ProjectsHelper do end describe '#any_projects?' do - let!(:project) { create(:project) } - it 'returns true when projects will be returned' do expect(helper.any_projects?(Project.all)).to eq(true) end @@ -616,7 +581,7 @@ RSpec.describe ProjectsHelper do end describe '#git_user_name' do - let(:user) { double(:user, name: 'John "A" Doe53') } + let(:user) { build_stubbed(:user, name: 'John "A" Doe53') } before do allow(helper).to receive(:current_user).and_return(user) @@ -639,8 +604,6 @@ RSpec.describe ProjectsHelper do end context 'user logged in' do - let(:user) { create(:user) } - before do allow(helper).to receive(:current_user).and_return(user) end @@ -665,7 +628,6 @@ RSpec.describe ProjectsHelper do end describe 'show_xcode_link' do - let!(:project) { create(:project) } let(:mac_ua) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36' } let(:ios_ua) { 'Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3' } @@ -806,7 +768,7 @@ RSpec.describe ProjectsHelper do describe '#show_auto_devops_implicitly_enabled_banner?' do using RSpec::Parameterized::TableSyntax - let(:user) { create(:user) } + let_it_be_with_reload(:project_with_auto_devops) { create(:project, :repository, :auto_devops) } let(:feature_visibilities) do { @@ -880,9 +842,9 @@ RSpec.describe ProjectsHelper do with_them do let(:project) do if project_setting.nil? - create(:project, :repository) + project_with_repo else - create(:project, :repository, :auto_devops) + project_with_auto_devops end end @@ -903,14 +865,8 @@ RSpec.describe ProjectsHelper do end describe '#can_import_members?' do - let(:project) { create(:project) } - let(:user) { create(:user) } let(:owner) { project.owner } - before do - helper.instance_variable_set(:@project, project) - end - it 'returns false if user cannot admin_project_member' do allow(helper).to receive(:current_user) { user } expect(helper.can_import_members?).to eq false @@ -923,12 +879,6 @@ RSpec.describe ProjectsHelper do end describe '#metrics_external_dashboard_url' do - let(:project) { create(:project) } - - before do - helper.instance_variable_set(:@project, project) - end - context 'metrics_setting exists' do it 'returns external_dashboard_url' do metrics_setting = create(:project_metrics_setting, project: project) @@ -945,12 +895,6 @@ RSpec.describe ProjectsHelper do end describe '#grafana_integration_url' do - let(:project) { create(:project) } - - before do - helper.instance_variable_set(:@project, project) - end - subject { helper.grafana_integration_url } it { is_expected.to eq(nil) } @@ -963,12 +907,6 @@ RSpec.describe ProjectsHelper do end describe '#grafana_integration_token' do - let(:project) { create(:project) } - - before do - helper.instance_variable_set(:@project, project) - end - subject { helper.grafana_integration_masked_token } it { is_expected.to eq(nil) } @@ -981,12 +919,6 @@ RSpec.describe ProjectsHelper do end describe '#grafana_integration_enabled?' do - let(:project) { create(:project) } - - before do - helper.instance_variable_set(:@project, project) - end - subject { helper.grafana_integration_enabled? } it { is_expected.to eq(nil) } @@ -999,7 +931,6 @@ RSpec.describe ProjectsHelper do end describe '#project_license_name(project)', :request_store do - let_it_be(:project) { create(:project) } let_it_be(:repository) { project.repository } subject { project_license_name(project) } diff --git a/spec/lib/gitlab/diff/highlight_cache_spec.rb b/spec/lib/gitlab/diff/highlight_cache_spec.rb index 7e926f86096..f6810d7a966 100644 --- a/spec/lib/gitlab/diff/highlight_cache_spec.rb +++ b/spec/lib/gitlab/diff/highlight_cache_spec.rb @@ -43,7 +43,8 @@ RSpec.describe Gitlab::Diff::HighlightCache, :clean_gitlab_redis_cache do describe '#decorate' do # Manually creates a Diff::File object to avoid triggering the cache on - # the FileCollection::MergeRequestDiff + # the FileCollection::MergeRequestDiff + # let(:diff_file) do diffs = merge_request.diffs raw_diff = diffs.diffable.raw_diffs(diffs.diff_options.merge(paths: ['CHANGELOG'])).first @@ -73,6 +74,37 @@ RSpec.describe Gitlab::Diff::HighlightCache, :clean_gitlab_redis_cache do expect(rich_texts).to all(be_html_safe) end + + context "when diff_file is uncached due to default_max_patch_bytes change" do + before do + expect(cache).to receive(:read_file).at_least(:once).and_return([]) + + # Stub out the application's default and current patch size limits. We + # want them to be different, and the diff file to be sized between + # the 2 values. + # + diff_file_size_kb = (diff_file.diff.diff.bytesize * 10) + + stub_const("#{diff_file.diff.class}::DEFAULT_MAX_PATCH_BYTES", diff_file_size_kb - 1 ) + expect(diff_file.diff.class).to receive(:patch_safe_limit_bytes).and_return(diff_file_size_kb + 1) + expect(diff_file.diff.class) + .to receive(:patch_safe_limit_bytes) + .with(diff_file.diff.class::DEFAULT_MAX_PATCH_BYTES) + .and_call_original + end + + it "manually writes highlighted lines to the cache" do + expect(cache).to receive(:write_to_redis_hash).and_call_original + + cache.decorate(diff_file) + end + + it "assigns highlighted diff lines to the DiffFile" do + expect(diff_file.highlighted_diff_lines.size).to be > 5 + + cache.decorate(diff_file) + end + end end shared_examples 'caches missing entries' do diff --git a/spec/lib/gitlab/git/diff_spec.rb b/spec/lib/gitlab/git/diff_spec.rb index 117c519e98d..980a52bb61e 100644 --- a/spec/lib/gitlab/git/diff_spec.rb +++ b/spec/lib/gitlab/git/diff_spec.rb @@ -284,13 +284,21 @@ EOT end describe '#line_count' do - it 'returns the correct number of lines' do - diff = described_class.new(gitaly_diff) + let(:diff) { described_class.new(gitaly_diff) } + it 'returns the correct number of lines' do expect(diff.line_count).to eq(7) end end + describe "#diff_bytesize" do + let(:diff) { described_class.new(gitaly_diff) } + + it "returns the size of the diff in bytes" do + expect(diff.diff_bytesize).to eq(diff.diff.bytesize) + end + end + describe '#too_large?' do it 'returns true for a diff that is too large' do diff = described_class.new(diff: 'a' * 204800) diff --git a/spec/lib/gitlab/sql/pattern_spec.rb b/spec/lib/gitlab/sql/pattern_spec.rb index 220ac2ff6da..9bf6f0b82bc 100644 --- a/spec/lib/gitlab/sql/pattern_spec.rb +++ b/spec/lib/gitlab/sql/pattern_spec.rb @@ -3,6 +3,43 @@ require 'spec_helper' RSpec.describe Gitlab::SQL::Pattern do + using RSpec::Parameterized::TableSyntax + + describe '.fuzzy_search' do + let_it_be(:issue1) { create(:issue, title: 'noise foo noise', description: 'noise bar noise') } + let_it_be(:issue2) { create(:issue, title: 'noise baz noise', description: 'noise foo noise') } + let_it_be(:issue3) { create(:issue, title: 'Oh', description: 'Ah') } + + subject(:fuzzy_search) { Issue.fuzzy_search(query, columns) } + + where(:query, :columns, :expected) do + 'foo' | [Issue.arel_table[:title]] | %i[issue1] + + 'foo' | %i[title] | %i[issue1] + 'foo' | %w[title] | %i[issue1] + 'foo' | %i[description] | %i[issue2] + 'foo' | %i[title description] | %i[issue1 issue2] + 'bar' | %i[title description] | %i[issue1] + 'baz' | %i[title description] | %i[issue2] + 'qux' | %i[title description] | [] + + 'oh' | %i[title description] | %i[issue3] + 'OH' | %i[title description] | %i[issue3] + 'ah' | %i[title description] | %i[issue3] + 'AH' | %i[title description] | %i[issue3] + 'oh' | %i[title] | %i[issue3] + 'ah' | %i[description] | %i[issue3] + end + + with_them do + let(:expected_issues) { expected.map { |sym| send(sym) } } + + it 'finds the expected issues' do + expect(fuzzy_search).to match_array(expected_issues) + end + end + end + describe '.to_pattern' do subject(:to_pattern) { User.to_pattern(query) } diff --git a/spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb index a295bdac3d8..4cc85c86de1 100644 --- a/spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb +++ b/spec/lib/gitlab/usage_data_counters/issue_activity_unique_counter_spec.rb @@ -47,7 +47,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:action) { described_class::ISSUE_TITLE_CHANGED } def track_action(params) - described_class.track_issue_title_changed_action(params) + described_class.track_issue_title_changed_action(**params) end end end @@ -57,7 +57,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:action) { described_class::ISSUE_DESCRIPTION_CHANGED } def track_action(params) - described_class.track_issue_description_changed_action(params) + described_class.track_issue_description_changed_action(**params) end end end @@ -67,7 +67,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:action) { described_class::ISSUE_ASSIGNEE_CHANGED } def track_action(params) - described_class.track_issue_assignee_changed_action(params) + described_class.track_issue_assignee_changed_action(**params) end end end @@ -77,7 +77,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:action) { described_class::ISSUE_MADE_CONFIDENTIAL } def track_action(params) - described_class.track_issue_made_confidential_action(params) + described_class.track_issue_made_confidential_action(**params) end end end @@ -87,7 +87,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:action) { described_class::ISSUE_MADE_VISIBLE } def track_action(params) - described_class.track_issue_made_visible_action(params) + described_class.track_issue_made_visible_action(**params) end end end @@ -97,7 +97,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:action) { described_class::ISSUE_CREATED } def track_action(params) - described_class.track_issue_created_action(params) + described_class.track_issue_created_action(**params) end end end @@ -107,7 +107,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:action) { described_class::ISSUE_CLOSED } def track_action(params) - described_class.track_issue_closed_action(params) + described_class.track_issue_closed_action(**params) end end end @@ -117,7 +117,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:action) { described_class::ISSUE_REOPENED } def track_action(params) - described_class.track_issue_reopened_action(params) + described_class.track_issue_reopened_action(**params) end end end @@ -127,7 +127,7 @@ RSpec.describe Gitlab::UsageDataCounters::IssueActivityUniqueCounter, :clean_git let(:action) { described_class::ISSUE_LABEL_CHANGED } def track_action(params) - described_class.track_issue_label_changed_action(params) + described_class.track_issue_label_changed_action(**params) end end end diff --git a/spec/serializers/ci/trigger_serializer_spec.rb b/spec/serializers/ci/trigger_serializer_spec.rb index 09a877abfa0..a669a8c3ed0 100644 --- a/spec/serializers/ci/trigger_serializer_spec.rb +++ b/spec/serializers/ci/trigger_serializer_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Ci::TriggerSerializer do describe '#represent' do let(:represent) { described_class.new.represent(trigger) } - let(:trigger) { build(:ci_trigger) } + let(:trigger) { build_stubbed(:ci_trigger) } it 'matches schema' do expect(represent.to_json).to match_schema('entities/trigger') diff --git a/spec/support/factory_bot.rb b/spec/support/factory_bot.rb index a86161bfded..c9d372993b5 100644 --- a/spec/support/factory_bot.rb +++ b/spec/support/factory_bot.rb @@ -3,7 +3,3 @@ FactoryBot::SyntaxRunner.class_eval do include RSpec::Mocks::ExampleMethods end - -# Use FactoryBot 4.x behavior: -# https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#associations -FactoryBot.use_parent_strategy = false |