diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-27 12:09:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-27 12:09:51 +0300 |
commit | 39fa1b598749be0aad699032bbf31450b3ff0098 (patch) | |
tree | 15a4c28989d58f9315e58458a3a494ff8cfc1525 /spec | |
parent | a59d305223365cb31bb670f134383d6ff316a13e (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
36 files changed, 419 insertions, 208 deletions
diff --git a/spec/controllers/search_controller_spec.rb b/spec/controllers/search_controller_spec.rb index 1fe313452fe..14bb77f29e1 100644 --- a/spec/controllers/search_controller_spec.rb +++ b/spec/controllers/search_controller_spec.rb @@ -84,7 +84,7 @@ describe SearchController do with_them do it do project_wiki = create(:project_wiki, project: project, user: user) - create(:wiki_page, wiki: project_wiki, attrs: { title: 'merge', content: 'merge' }) + create(:wiki_page, wiki: project_wiki, title: 'merge', content: 'merge') expect(subject).to render_template("search/results/#{partial}") end diff --git a/spec/factories/sprints.rb b/spec/factories/sprints.rb new file mode 100644 index 00000000000..da0c3c82467 --- /dev/null +++ b/spec/factories/sprints.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +FactoryBot.define do + factory :sprint do + title + + transient do + project { nil } + group { nil } + project_id { nil } + group_id { nil } + resource_parent { nil } + end + + trait :active do + state { Sprint::STATE_ID_MAP[:active] } + end + + trait :closed do + state { Sprint::STATE_ID_MAP[:closed] } + end + + trait :with_dates do + start_date { Date.new(2000, 1, 1) } + due_date { Date.new(2000, 1, 30) } + end + + after(:build, :stub) do |sprint, evaluator| + if evaluator.group + sprint.group = evaluator.group + elsif evaluator.group_id + sprint.group_id = evaluator.group_id + elsif evaluator.project + sprint.project = evaluator.project + elsif evaluator.project_id + sprint.project_id = evaluator.project_id + elsif evaluator.resource_parent + id = evaluator.resource_parent.id + evaluator.resource_parent.is_a?(Group) ? evaluator.group_id = id : evaluator.project_id = id + else + sprint.project = create(:project) + end + end + + factory :active_sprint, traits: [:active] + factory :closed_sprint, traits: [:closed] + end +end diff --git a/spec/factories/wiki_pages.rb b/spec/factories/wiki_pages.rb index 8eafad07268..e5df970dc9c 100644 --- a/spec/factories/wiki_pages.rb +++ b/spec/factories/wiki_pages.rb @@ -7,11 +7,17 @@ FactoryBot.define do transient do title { generate(:wiki_page_title) } content { 'Content for wiki page' } - format { 'markdown' } + format { :markdown } + message { nil } project { association(:project, :wiki_repo) } container { project } - attrs do - { + wiki { association(:wiki, container: container) } + page { OpenStruct.new(url_path: title) } + end + + initialize_with do + new(wiki, page).tap do |page| + page.attributes = { title: title, content: content, format: format @@ -19,25 +25,13 @@ FactoryBot.define do end end - page { OpenStruct.new(url_path: 'some-name') } - wiki { association(:wiki, container: container) } - - initialize_with { new(wiki, page) } - - before(:create) do |page, evaluator| - page.attributes = evaluator.attrs + # Clear our default @page, except when using build_stubbed + after(:build) do |page| + page.instance_variable_set('@page', nil) end - to_create do |page| - page.create - end - - trait :with_real_page do - page do - wiki.create_page(title, content) - page_title, page_dir = wiki.page_title_and_dir(title) - wiki.wiki.page(title: page_title, dir: page_dir, version: nil) - end + to_create do |page, evaluator| + page.create(message: evaluator.message) end end diff --git a/spec/features/admin/admin_hooks_spec.rb b/spec/features/admin/admin_hooks_spec.rb index 64326f3be32..40bcf4a31e4 100644 --- a/spec/features/admin/admin_hooks_spec.rb +++ b/spec/features/admin/admin_hooks_spec.rb @@ -36,6 +36,24 @@ describe 'Admin::Hooks' do expect(page).to have_content('foo.rb') expect(page).to have_content('bar.clj') end + + context 'deprecation warning' do + it 'shows warning for plugins directory' do + allow(Gitlab::FileHook).to receive(:files).and_return(['plugins/foo.rb']) + + visit admin_hooks_path + + expect(page).to have_content('Plugins directory is deprecated and will be removed in 14.0') + end + + it 'does not show warning for file_hooks directory' do + allow(Gitlab::FileHook).to receive(:files).and_return(['file_hooks/foo.rb']) + + visit admin_hooks_path + + expect(page).not_to have_content('Plugins directory is deprecated and will be removed in 14.0') + end + end end describe 'New Hook' do diff --git a/spec/features/projects/wiki/markdown_preview_spec.rb b/spec/features/projects/wiki/markdown_preview_spec.rb index 7d18c0f7a14..bc567d4db42 100644 --- a/spec/features/projects/wiki/markdown_preview_spec.rb +++ b/spec/features/projects/wiki/markdown_preview_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe 'Projects > Wiki > User previews markdown changes', :js do let_it_be(:user) { create(:user) } let(:project) { create(:project, :wiki_repo, namespace: user.namespace) } - let(:wiki_page) { create(:wiki_page, wiki: project.wiki, attrs: { title: 'home', content: '[some link](other-page)' }) } + let(:wiki_page) { create(:wiki_page, wiki: project.wiki, title: 'home', content: '[some link](other-page)') } let(:wiki_content) do <<-HEREDOC [regular link](regular) diff --git a/spec/features/projects/wiki/shortcuts_spec.rb b/spec/features/projects/wiki/shortcuts_spec.rb index 806d2f28bb9..c51af2526c9 100644 --- a/spec/features/projects/wiki/shortcuts_spec.rb +++ b/spec/features/projects/wiki/shortcuts_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe 'Wiki shortcuts', :js do let(:user) { create(:user) } let(:project) { create(:project, :wiki_repo, namespace: user.namespace) } - let(:wiki_page) { create(:wiki_page, wiki: project.wiki, attrs: { title: 'home', content: 'Home page' }) } + let(:wiki_page) { create(:wiki_page, wiki: project.wiki, title: 'home', content: 'Home page') } before do sign_in(user) diff --git a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb index 67996cc3e5d..fa737f3b57d 100644 --- a/spec/features/projects/wiki/user_creates_wiki_page_spec.rb +++ b/spec/features/projects/wiki/user_creates_wiki_page_spec.rb @@ -195,7 +195,7 @@ describe "User creates wiki page" do context "when wiki is not empty", :js do before do - create(:wiki_page, wiki: wiki, attrs: { title: 'home', content: 'Home page' }) + create(:wiki_page, wiki: wiki, title: 'home', content: 'Home page') visit(project_wikis_path(project)) end @@ -304,8 +304,8 @@ describe "User creates wiki page" do describe 'sidebar feature' do context 'when there are some existing pages' do before do - create(:wiki_page, wiki: wiki, attrs: { title: 'home', content: 'home' }) - create(:wiki_page, wiki: wiki, attrs: { title: 'another', content: 'another' }) + create(:wiki_page, wiki: wiki, title: 'home', content: 'home') + create(:wiki_page, wiki: wiki, title: 'another', content: 'another') end it 'renders a default sidebar when there is no customized sidebar' do @@ -316,7 +316,7 @@ describe "User creates wiki page" do context 'when there is a customized sidebar' do before do - create(:wiki_page, wiki: wiki, attrs: { title: '_sidebar', content: 'My customized sidebar' }) + create(:wiki_page, wiki: wiki, title: '_sidebar', content: 'My customized sidebar') end it 'renders my customized sidebar instead of the default one' do @@ -330,8 +330,8 @@ describe "User creates wiki page" do context 'when there are more than 15 existing pages' do before do - create(:wiki_page, wiki: wiki, attrs: { title: 'home', content: 'home' }) - (1..14).each { |i| create(:wiki_page, wiki: wiki, attrs: { title: "page-#{i}", content: "page #{i}" }) } + create(:wiki_page, wiki: wiki, title: 'home', content: 'home') + (1..14).each { |i| create(:wiki_page, wiki: wiki, title: "page-#{i}", content: "page #{i}") } end it 'renders a default sidebar when there is no customized sidebar' do diff --git a/spec/features/projects/wiki/user_git_access_wiki_page_spec.rb b/spec/features/projects/wiki/user_git_access_wiki_page_spec.rb index ab3d912dd15..6c6af1c41d2 100644 --- a/spec/features/projects/wiki/user_git_access_wiki_page_spec.rb +++ b/spec/features/projects/wiki/user_git_access_wiki_page_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe 'Projects > Wiki > User views Git access wiki page' do let(:user) { create(:user) } let(:project) { create(:project, :wiki_repo, :public) } - let(:wiki_page) { create(:wiki_page, wiki: project.wiki, attrs: { title: 'home', content: '[some link](other-page)' }) } + let(:wiki_page) { create(:wiki_page, wiki: project.wiki, title: 'home', content: '[some link](other-page)') } before do sign_in(user) diff --git a/spec/features/projects/wiki/user_updates_wiki_page_spec.rb b/spec/features/projects/wiki/user_updates_wiki_page_spec.rb index 9d9c83331fb..55509ddfa10 100644 --- a/spec/features/projects/wiki/user_updates_wiki_page_spec.rb +++ b/spec/features/projects/wiki/user_updates_wiki_page_spec.rb @@ -64,7 +64,7 @@ describe 'User updates wiki page' do context 'when wiki is not empty' do let(:project_wiki) { create(:project_wiki, project: project, user: project.creator) } - let!(:wiki_page) { create(:wiki_page, wiki: project_wiki, attrs: { title: 'home', content: 'Home page' }) } + let!(:wiki_page) { create(:wiki_page, wiki: project_wiki, title: 'home', content: 'Home page') } before do visit(project_wikis_path(project)) @@ -168,7 +168,7 @@ describe 'User updates wiki page' do let(:project_wiki) { create(:project_wiki, project: project, user: project.creator) } let(:page_name) { 'page_name' } let(:page_dir) { "foo/bar/#{page_name}" } - let!(:wiki_page) { create(:wiki_page, wiki: project_wiki, attrs: { title: page_dir, content: 'Home page' }) } + let!(:wiki_page) { create(:wiki_page, wiki: project_wiki, title: page_dir, content: 'Home page') } before do visit(project_wiki_edit_path(project, wiki_page)) diff --git a/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb b/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb index 471e80b27dc..cb425e8b704 100644 --- a/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb +++ b/spec/features/projects/wiki/user_views_wiki_in_project_page_spec.rb @@ -21,7 +21,7 @@ describe 'Projects > Wiki > User views wiki in project page' do context 'when wiki homepage contains a link' do before do - create(:wiki_page, wiki: project.wiki, attrs: { title: 'home', content: '[some link](other-page)' }) + create(:wiki_page, wiki: project.wiki, title: 'home', content: '[some link](other-page)') end it 'displays the correct URL for the link' do diff --git a/spec/features/projects/wiki/user_views_wiki_page_spec.rb b/spec/features/projects/wiki/user_views_wiki_page_spec.rb index 8a338756323..e379e7466db 100644 --- a/spec/features/projects/wiki/user_views_wiki_page_spec.rb +++ b/spec/features/projects/wiki/user_views_wiki_page_spec.rb @@ -11,7 +11,7 @@ describe 'User views a wiki page' do let(:wiki_page) do create(:wiki_page, wiki: project.wiki, - attrs: { title: 'home', content: "Look at this [image](#{path})\n\n ![alt text](#{path})" }) + title: 'home', content: "Look at this [image](#{path})\n\n ![alt text](#{path})") end before do diff --git a/spec/features/projects/wiki/user_views_wiki_pages_spec.rb b/spec/features/projects/wiki/user_views_wiki_pages_spec.rb index 6740df1d4ed..584b2a76143 100644 --- a/spec/features/projects/wiki/user_views_wiki_pages_spec.rb +++ b/spec/features/projects/wiki/user_views_wiki_pages_spec.rb @@ -9,13 +9,13 @@ describe 'User views wiki pages' do let(:project) { create(:project, :wiki_repo, namespace: user.namespace) } let!(:wiki_page1) do - create(:wiki_page, wiki: project.wiki, attrs: { title: '3 home', content: '3' }) + create(:wiki_page, wiki: project.wiki, title: '3 home', content: '3') end let!(:wiki_page2) do - create(:wiki_page, wiki: project.wiki, attrs: { title: '1 home', content: '1' }) + create(:wiki_page, wiki: project.wiki, title: '1 home', content: '1') end let!(:wiki_page3) do - create(:wiki_page, wiki: project.wiki, attrs: { title: '2 home', content: '2' }) + create(:wiki_page, wiki: project.wiki, title: '2 home', content: '2') end let(:pages) do diff --git a/spec/features/projects/wiki/users_views_asciidoc_page_with_includes_spec.rb b/spec/features/projects/wiki/users_views_asciidoc_page_with_includes_spec.rb index 08eea14c438..014b63fa154 100644 --- a/spec/features/projects/wiki/users_views_asciidoc_page_with_includes_spec.rb +++ b/spec/features/projects/wiki/users_views_asciidoc_page_with_includes_spec.rb @@ -16,7 +16,7 @@ describe 'User views AsciiDoc page with includes', :js do format: :asciidoc } - create(:wiki_page, wiki: project.wiki, attrs: attrs) + create(:wiki_page, wiki: project.wiki, **attrs) end before do diff --git a/spec/features/search/user_searches_for_wiki_pages_spec.rb b/spec/features/search/user_searches_for_wiki_pages_spec.rb index 1ae37447bdc..10c3032da8b 100644 --- a/spec/features/search/user_searches_for_wiki_pages_spec.rb +++ b/spec/features/search/user_searches_for_wiki_pages_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' describe 'User searches for wiki pages', :js do let(:user) { create(:user) } let(:project) { create(:project, :repository, :wiki_repo, namespace: user.namespace) } - let!(:wiki_page) { create(:wiki_page, wiki: project.wiki, attrs: { title: 'directory/title', content: 'Some Wiki content' }) } + let!(:wiki_page) { create(:wiki_page, wiki: project.wiki, title: 'directory/title', content: 'Some Wiki content') } before do project.add_maintainer(user) diff --git a/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb b/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb index 65456a3a2c7..4d16c568c13 100644 --- a/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb +++ b/spec/lib/banzai/pipeline/wiki_pipeline_spec.rb @@ -57,7 +57,7 @@ describe Banzai::Pipeline::WikiPipeline do let(:namespace) { create(:namespace, name: "wiki_link_ns") } let(:project) { create(:project, :public, name: "wiki_link_project", namespace: namespace) } let(:project_wiki) { ProjectWiki.new(project, double(:user)) } - let(:page) { build(:wiki_page, wiki: project_wiki, page: OpenStruct.new(url_path: 'nested/twice/start-page')) } + let(:page) { build(:wiki_page, wiki: project_wiki, title: 'nested/twice/start-page') } { 'when GitLab is hosted at a root URL' => '', 'when GitLab is hosted at a relative URL' => '/nested/relative/gitlab' }.each do |test_name, relative_url_root| @@ -264,7 +264,7 @@ describe Banzai::Pipeline::WikiPipeline do let_it_be(:namespace) { create(:namespace, name: "wiki_link_ns") } let_it_be(:project) { create(:project, :public, name: "wiki_link_project", namespace: namespace) } let_it_be(:project_wiki) { ProjectWiki.new(project, double(:user)) } - let_it_be(:page) { build(:wiki_page, wiki: project_wiki, page: OpenStruct.new(url_path: 'nested/twice/start-page')) } + let_it_be(:page) { build(:wiki_page, wiki: project_wiki, title: 'nested/twice/start-page') } it 'generates video html structure' do markdown = "![video_file](video_file_name.mp4)" diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index 10a424c0c11..12b8858e30b 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -6,6 +6,7 @@ issues: - assignees - updated_by - milestone +- sprint - notes - resource_label_events - resource_weight_events @@ -113,6 +114,7 @@ merge_requests: - assignee - updated_by - milestone +- sprint - notes - resource_label_events - resource_milestone_events diff --git a/spec/lib/gitlab/jira_import/handle_labels_service_spec.rb b/spec/lib/gitlab/jira_import/handle_labels_service_spec.rb new file mode 100644 index 00000000000..0eeff180575 --- /dev/null +++ b/spec/lib/gitlab/jira_import/handle_labels_service_spec.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::JiraImport::HandleLabelsService do + describe '#execute' do + let_it_be(:group) { create(:group) } + let_it_be(:project) { create(:project, group: group) } + + let_it_be(:project_label) { create(:label, project: project, title: 'bug') } + let_it_be(:other_project_label) { create(:label, title: 'feature') } + let_it_be(:group_label) { create(:group_label, group: group, title: 'dev') } + let(:jira_labels) { %w(bug feature dev group::new) } + + subject { described_class.new(project, jira_labels).execute } + + context 'when some provided jira labels are missing' do + def created_labels + project.labels.reorder(id: :desc).first(2) + end + + it 'creates the missing labels on the project level' do + expect { subject }.to change { Label.count }.from(3).to(5) + + expect(created_labels.map(&:title)).to match_array(%w(feature group::new)) + end + + it 'returns the id of all labels matching the title' do + expect(subject).to match_array([project_label.id, group_label.id] + created_labels.map(&:id)) + end + end + + context 'when no provided jira labels are missing' do + let(:jira_labels) { %w(bug dev) } + + it 'does not create any new labels' do + expect { subject }.not_to change { Label.count }.from(3) + end + + it 'returns the id of all labels matching the title' do + expect(subject).to match_array([project_label.id, group_label.id]) + end + end + + context 'when no labels are provided' do + let(:jira_labels) { [] } + + it 'does not create any new labels' do + expect { subject }.not_to change { Label.count }.from(3) + end + end + end +end diff --git a/spec/lib/gitlab/jira_import/issue_serializer_spec.rb b/spec/lib/gitlab/jira_import/issue_serializer_spec.rb index 11dc784b821..5c84556ab25 100644 --- a/spec/lib/gitlab/jira_import/issue_serializer_spec.rb +++ b/spec/lib/gitlab/jira_import/issue_serializer_spec.rb @@ -4,7 +4,11 @@ require 'spec_helper' describe Gitlab::JiraImport::IssueSerializer do describe '#execute' do - let_it_be(:project) { create(:project) } + let_it_be(:group) { create(:group) } + let_it_be(:project) { create(:project, group: group) } + let_it_be(:project_label) { create(:label, project: project, title: 'bug') } + let_it_be(:other_project_label) { create(:label, project: project, title: 'feature') } + let_it_be(:group_label) { create(:group_label, group: group, title: 'dev') } let(:iid) { 5 } let(:key) { 'PROJECT-5' } @@ -19,11 +23,13 @@ describe Gitlab::JiraImport::IssueSerializer do { 'key' => 'FOO-2', 'id' => '1050', 'fields' => { 'summary' => 'parent issue FOO' } } end let(:priority_field) { { 'name' => 'Medium' } } + let(:labels_field) { %w(bug dev backend frontend) } let(:fields) do { 'parent' => parent_field, - 'priority' => priority_field + 'priority' => priority_field, + 'labels' => labels_field } end @@ -73,9 +79,33 @@ describe Gitlab::JiraImport::IssueSerializer do state_id: 1, updated_at: updated_at, created_at: created_at, - author_id: project.creator_id + author_id: project.creator_id, + label_ids: [project_label.id, group_label.id] + Label.reorder(id: :asc).last(2).pluck(:id) ) end + + it 'creates a hash for valid issue' do + expect(Issue.new(subject)).to be_valid + end + + it 'creates all missing labels (on project level)' do + expect { subject }.to change { Label.count }.from(3).to(5) + + expect(Label.find_by(title: 'frontend').project).to eq(project) + expect(Label.find_by(title: 'backend').project).to eq(project) + end + + context 'when there are no new labels' do + let(:labels_field) { %w(bug dev) } + + it 'assigns the labels to the Issue hash' do + expect(subject[:label_ids]).to match_array([project_label.id, group_label.id]) + end + + it 'does not create new labels' do + expect { subject }.not_to change { Label.count }.from(3) + end + end end context 'with done status' do diff --git a/spec/lib/gitlab/jira_import/labels_importer_spec.rb b/spec/lib/gitlab/jira_import/labels_importer_spec.rb index 520bbe4fbe8..9b24021d8d4 100644 --- a/spec/lib/gitlab/jira_import/labels_importer_spec.rb +++ b/spec/lib/gitlab/jira_import/labels_importer_spec.rb @@ -3,18 +3,23 @@ require 'spec_helper' describe Gitlab::JiraImport::LabelsImporter do - let_it_be(:user) { create(:user) } - let_it_be(:project) { create(:project) } + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:project) { create(:project, group: group) } let_it_be(:jira_service) { create(:jira_service, project: project) } subject { described_class.new(project).execute } before do stub_feature_flags(jira_issue_import: true) + stub_const('Gitlab::JiraImport::LabelsImporter::MAX_LABELS', 2) + + WebMock.stub_request(:get, 'https://jira.example.com/rest/api/2/serverInfo') + .to_return(body: { url: 'http://url' }.to_json ) end describe '#execute', :clean_gitlab_redis_cache do - context 'when label is missing from jira import' do + context 'when jira import label is missing from jira import' do let_it_be(:no_label_jira_import) { create(:jira_import_state, label: nil, project: project) } it 'raises error' do @@ -22,16 +27,71 @@ describe Gitlab::JiraImport::LabelsImporter do end end - context 'when label exists' do - let_it_be(:label) { create(:label) } + context 'when jira import label exists' do + let_it_be(:label) { create(:label) } let_it_be(:jira_import_with_label) { create(:jira_import_state, label: label, project: project) } + let_it_be(:issue_label) { create(:label, project: project, title: 'bug') } + + let(:jira_labels_1) { { "maxResults" => 2, "startAt" => 0, "total" => 3, "isLast" => false, "values" => %w(backend bug) } } + let(:jira_labels_2) { { "maxResults" => 2, "startAt" => 2, "total" => 3, "isLast" => true, "values" => %w(feature) } } + + before do + WebMock.stub_request(:get, 'https://jira.example.com/rest/api/2/label?maxResults=2&startAt=0') + .to_return(body: jira_labels_1.to_json ) + WebMock.stub_request(:get, 'https://jira.example.com/rest/api/2/label?maxResults=2&startAt=2') + .to_return(body: jira_labels_2.to_json ) + end + + context 'when labels are returned from jira' do + it 'caches import label' do + expect(Gitlab::Cache::Import::Caching.read(Gitlab::JiraImport.import_label_cache_key(project.id))).to be nil + + subject + + expect(Gitlab::JiraImport.get_import_label_id(project.id).to_i).to eq(label.id) + end + + it 'calls Gitlab::JiraImport::HandleLabelsService' do + expect(Gitlab::JiraImport::HandleLabelsService).to receive(:new).with(project, %w(backend bug)).and_return(double(execute: [1, 2])) + expect(Gitlab::JiraImport::HandleLabelsService).to receive(:new).with(project, %w(feature)).and_return(double(execute: [3])) + + subject + end + end + + context 'when there are no labels to be handled' do + shared_examples 'no labels handling' do + it 'does not call Gitlab::JiraImport::HandleLabelsService' do + expect(Gitlab::JiraImport::HandleLabelsService).not_to receive(:new) + + subject + end + end + + let(:jira_labels) { { "maxResults" => 2, "startAt" => 0, "total" => 3, "values" => [] } } + + before do + WebMock.stub_request(:get, 'https://jira.example.com/rest/api/2/label?maxResults=2&startAt=0') + .to_return(body: jira_labels.to_json ) + end + + context 'when the labels field is empty' do + let(:jira_labels) { { "maxResults" => 2, "startAt" => 0, "isLast" => true, "total" => 3, "values" => [] } } + + it_behaves_like 'no labels handling' + end + + context 'when the labels field is missing' do + let(:jira_labels) { { "maxResults" => 2, "startAt" => 0, "isLast" => true, "total" => 3 } } - it 'caches import label' do - expect(Gitlab::Cache::Import::Caching.read(Gitlab::JiraImport.import_label_cache_key(project.id))).to be nil + it_behaves_like 'no labels handling' + end - subject + context 'when the isLast argument is missing' do + let(:jira_labels) { { "maxResults" => 2, "startAt" => 0, "total" => 3, "values" => %w(bug dev) } } - expect(Gitlab::JiraImport.get_import_label_id(project.id).to_i).to eq(label.id) + it_behaves_like 'no labels handling' + end end end end diff --git a/spec/lib/gitlab/jira_import/metadata_collector_spec.rb b/spec/lib/gitlab/jira_import/metadata_collector_spec.rb index b6c8c7674f3..af479810df0 100644 --- a/spec/lib/gitlab/jira_import/metadata_collector_spec.rb +++ b/spec/lib/gitlab/jira_import/metadata_collector_spec.rb @@ -9,7 +9,6 @@ describe Gitlab::JiraImport::MetadataCollector do let(:description) { 'basic description' } let(:created_at) { '2020-01-01 20:00:00' } let(:updated_at) { '2020-01-10 20:00:00' } - let(:assignee) { double(displayName: 'Solver') } let(:jira_status) { 'new' } let(:parent_field) do @@ -18,7 +17,6 @@ describe Gitlab::JiraImport::MetadataCollector do let(:issue_type_field) { { 'name' => 'Task' } } let(:fix_versions_field) { [{ 'name' => '1.0' }, { 'name' => '1.1' }] } let(:priority_field) { { 'name' => 'Medium' } } - let(:labels_field) { %w(bug backend) } let(:environment_field) { 'staging' } let(:duedate_field) { '2020-03-01' } @@ -28,7 +26,6 @@ describe Gitlab::JiraImport::MetadataCollector do 'issuetype' => issue_type_field, 'fixVersions' => fix_versions_field, 'priority' => priority_field, - 'labels' => labels_field, 'environment' => environment_field, 'duedate' => duedate_field } @@ -41,8 +38,6 @@ describe Gitlab::JiraImport::MetadataCollector do description: description, created: created_at, updated: updated_at, - assignee: assignee, - reporter: double(displayName: 'Reporter'), status: double(statusCategory: { 'key' => jira_status }), fields: fields ) @@ -59,7 +54,6 @@ describe Gitlab::JiraImport::MetadataCollector do - Issue type: Task - Priority: Medium - - Labels: bug, backend - Environment: staging - Due date: 2020-03-01 - Parent issue: [FOO-2] parent issue FOO @@ -71,11 +65,9 @@ describe Gitlab::JiraImport::MetadataCollector do end context 'when some fields are in incorrect format' do - let(:assignee) { nil } let(:parent_field) { nil } let(:fix_versions_field) { [] } let(:priority_field) { nil } - let(:labels_field) { [] } let(:environment_field) { nil } let(:duedate_field) { nil } @@ -112,22 +104,6 @@ describe Gitlab::JiraImport::MetadataCollector do end end - context 'when a labels field is not an array' do - let(:labels_field) { { 'first' => 'bug' } } - - it 'skips the labels' do - expected_result = <<~MD - --- - - **Issue metadata** - - - Issue type: Task - MD - - expect(subject.strip).to eq(expected_result.strip) - end - end - context 'when a parent field has incorrectly formatted summary' do let(:parent_field) do { 'key' => 'FOO-2', 'id' => '1050', 'other_field' => { 'summary' => 'parent issue FOO' } } @@ -167,10 +143,8 @@ describe Gitlab::JiraImport::MetadataCollector do end context 'when some metadata fields are missing' do - let(:assignee) { nil } let(:parent_field) { nil } let(:fix_versions_field) { [] } - let(:labels_field) { [] } let(:environment_field) { nil } it 'skips the missing fields' do @@ -189,12 +163,10 @@ describe Gitlab::JiraImport::MetadataCollector do end context 'when all metadata fields are missing' do - let(:assignee) { nil } let(:parent_field) { nil } let(:issue_type_field) { nil } let(:fix_versions_field) { [] } let(:priority_field) { nil } - let(:labels_field) { [] } let(:environment_field) { nil } let(:duedate_field) { nil } diff --git a/spec/lib/gitlab/request_context_spec.rb b/spec/lib/gitlab/request_context_spec.rb index 7e2e05c9f1b..d7af0765d53 100644 --- a/spec/lib/gitlab/request_context_spec.rb +++ b/spec/lib/gitlab/request_context_spec.rb @@ -5,6 +5,10 @@ require 'spec_helper' describe Gitlab::RequestContext, :request_store do subject { described_class.instance } + before do + allow(subject).to receive(:enabled?).and_return(true) + end + it { is_expected.to have_attributes(client_ip: nil, start_thread_cpu_time: nil, request_start_time: nil) } describe '#request_deadline' do diff --git a/spec/models/blob_viewer/readme_spec.rb b/spec/models/blob_viewer/readme_spec.rb index 6586adbc373..89bc5be94fb 100644 --- a/spec/models/blob_viewer/readme_spec.rb +++ b/spec/models/blob_viewer/readme_spec.rb @@ -40,7 +40,7 @@ describe BlobViewer::Readme do context 'when the wiki is not empty' do before do - create(:wiki_page, wiki: project.wiki, attrs: { title: 'home', content: 'Home page' }) + create(:wiki_page, wiki: project.wiki, title: 'home', content: 'Home page') end it 'returns nil' do diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index 3239c7a843a..638a5b06d35 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -490,7 +490,7 @@ describe Event do context 'for a wiki page event' do let(:wiki_page) do - create(:wiki_page, :with_real_page, project: project) + create(:wiki_page, project: project) end subject(:event) { create(:wiki_page_event, project: project, wiki_page: wiki_page) } diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 66693b624c5..04801983d6c 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -24,6 +24,8 @@ describe Group do it { is_expected.to have_many(:cluster_groups).class_name('Clusters::Group') } it { is_expected.to have_many(:clusters).class_name('Clusters::Cluster') } it { is_expected.to have_many(:container_repositories) } + it { is_expected.to have_many(:milestones) } + it { is_expected.to have_many(:sprints) } it_behaves_like 'model with wiki' do let(:container) { create(:group, :nested, :wiki_repo) } diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index 1386f0fb625..375c8c1546f 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -7,6 +7,7 @@ describe Issue do describe "Associations" do it { is_expected.to belong_to(:milestone) } + it { is_expected.to belong_to(:sprint) } it { is_expected.to belong_to(:project) } it { is_expected.to belong_to(:moved_to).class_name('Issue') } it { is_expected.to have_one(:moved_from).class_name('Issue') } diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index bf95be86eea..8ec2ed2bf77 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -18,6 +18,8 @@ describe MergeRequest do it { is_expected.to have_many(:assignees).through(:merge_request_assignees) } it { is_expected.to have_many(:merge_request_diffs) } it { is_expected.to have_many(:user_mentions).class_name("MergeRequestUserMention") } + it { is_expected.to belong_to(:milestone) } + it { is_expected.to belong_to(:sprint) } context 'for forks' do let!(:project) { create(:project) } diff --git a/spec/models/project_services/microsoft_teams_service_spec.rb b/spec/models/project_services/microsoft_teams_service_spec.rb index d93b8a2cb40..425599c73d4 100644 --- a/spec/models/project_services/microsoft_teams_service_spec.rb +++ b/spec/models/project_services/microsoft_teams_service_spec.rb @@ -121,7 +121,7 @@ describe MicrosoftTeamsService do message: "user created page: Awesome wiki_page" } end - let(:wiki_page) { create(:wiki_page, wiki: project.wiki, attrs: opts) } + let(:wiki_page) { create(:wiki_page, wiki: project.wiki, **opts) } let(:wiki_page_sample_data) { Gitlab::DataBuilder::WikiPage.build(wiki_page, user, 'create') } it "calls Microsoft Teams API" do diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index d7811ff839d..05ea2912cb7 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -20,6 +20,7 @@ describe Project do it { is_expected.to have_many(:merge_requests) } it { is_expected.to have_many(:issues) } it { is_expected.to have_many(:milestones) } + it { is_expected.to have_many(:sprints) } it { is_expected.to have_many(:project_members).dependent(:delete_all) } it { is_expected.to have_many(:users).through(:project_members) } it { is_expected.to have_many(:requesters).dependent(:delete_all) } diff --git a/spec/models/sprint_spec.rb b/spec/models/sprint_spec.rb new file mode 100644 index 00000000000..965e711a51c --- /dev/null +++ b/spec/models/sprint_spec.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Sprint do + let!(:project) { create(:project) } + let!(:group) { create(:group) } + + describe 'modules' do + context 'with a project' do + it_behaves_like 'AtomicInternalId' do + let(:internal_id_attribute) { :iid } + let(:instance) { build(:sprint, project: build(:project), group: nil) } + let(:scope) { :project } + let(:scope_attrs) { { project: instance.project } } + let(:usage) {:sprints } + end + end + + context 'with a group' do + it_behaves_like 'AtomicInternalId' do + let(:internal_id_attribute) { :iid } + let(:instance) { build(:sprint, project: nil, group: build(:group)) } + let(:scope) { :group } + let(:scope_attrs) { { namespace: instance.group } } + let(:usage) {:sprints } + end + end + end + + describe "Associations" do + it { is_expected.to belong_to(:project) } + it { is_expected.to belong_to(:group) } + it { is_expected.to have_many(:issues) } + it { is_expected.to have_many(:merge_requests) } + end + + describe "#iid" do + it "is properly scoped on project and group" do + sprint1 = create(:sprint, project: project) + sprint2 = create(:sprint, project: project) + sprint3 = create(:sprint, group: group) + sprint4 = create(:sprint, group: group) + sprint5 = create(:sprint, project: project) + + want = { + sprint1: 1, + sprint2: 2, + sprint3: 1, + sprint4: 2, + sprint5: 3 + } + got = { + sprint1: sprint1.iid, + sprint2: sprint2.iid, + sprint3: sprint3.iid, + sprint4: sprint4.iid, + sprint5: sprint5.iid + } + expect(got).to eq(want) + end + end +end diff --git a/spec/models/wiki_page_spec.rb b/spec/models/wiki_page_spec.rb index 62df4625533..99a2ce28d19 100644 --- a/spec/models/wiki_page_spec.rb +++ b/spec/models/wiki_page_spec.rb @@ -6,17 +6,8 @@ describe WikiPage do let_it_be(:user) { create(:user) } let(:container) { create(:project, :wiki_repo) } let(:wiki) { Wiki.for_container(container, user) } - - let(:new_page) do - described_class.new(wiki).tap do |page| - page.attributes = { title: 'test page', content: 'test content' } - end - end - - let(:existing_page) do - create_page('test page', 'test content') - wiki.find_page('test page') - end + let(:new_page) { build(:wiki_page, wiki: wiki, title: 'test page', content: 'test content') } + let(:existing_page) { create(:wiki_page, wiki: wiki, title: 'test page', content: 'test content', message: 'test commit') } subject { new_page } @@ -41,13 +32,13 @@ describe WikiPage do context 'when there are pages' do before do - create_page('dir_1/dir_1_1/page_3', 'content') - create_page('page_1', 'content') - create_page('dir_1/page_2', 'content') - create_page('dir_2', 'page with dir name') - create_page('dir_2/page_5', 'content') - create_page('page_6', 'content') - create_page('dir_2/page_4', 'content') + wiki.create_page('dir_1/dir_1_1/page_3', 'content') + wiki.create_page('page_1', 'content') + wiki.create_page('dir_1/page_2', 'content') + wiki.create_page('dir_2', 'page with dir name') + wiki.create_page('dir_2/page_5', 'content') + wiki.create_page('page_6', 'content') + wiki.create_page('dir_2/page_4', 'content') end let(:page_1) { wiki.find_page('page_1') } @@ -353,7 +344,7 @@ describe WikiPage do context 'with an existing page title exceeding the limit' do subject do title = 'a' * (max_title + 1) - create_page(title, 'content') + wiki.create_page(title, 'content') wiki.find_page(title) end @@ -397,6 +388,20 @@ describe WikiPage do expect(wiki.find_page("Index").message).to eq 'Custom Commit Message' end + + it 'if the title is preceded by a / it is removed' do + subject.create(attributes.merge(title: '/New Page')) + + expect(wiki.find_page('New Page')).not_to be_nil + end + end + + context "with invalid attributes" do + it 'does not create the page' do + subject.create(title: '') + + expect(wiki.find_page('New Page')).to be_nil + end end end @@ -419,14 +424,11 @@ describe WikiPage do end end - describe "#update" do - subject do - create_page(title, "content") - wiki.find_page(title) - end + describe '#update' do + subject { create(:wiki_page, wiki: wiki, title: title) } - it "updates the content of the page" do - subject.update(content: "new content") + it 'updates the content of the page' do + subject.update(content: 'new content') page = wiki.find_page(title) expect([subject.content, page.content]).to all(eq('new content')) @@ -438,24 +440,6 @@ describe WikiPage do end end - describe '#create' do - context 'with valid attributes' do - it 'raises an error if a page with the same path already exists' do - create_page('New Page', 'content') - create_page('foo/bar', 'content') - - expect { create_page('New Page', 'other content') }.to raise_error Gitlab::Git::Wiki::DuplicatePageError - expect { create_page('foo/bar', 'other content') }.to raise_error Gitlab::Git::Wiki::DuplicatePageError - end - - it 'if the title is preceded by a / it is removed' do - create_page('/New Page', 'content') - - expect(wiki.find_page('New Page')).not_to be_nil - end - end - end - describe "#update" do subject { existing_page } @@ -573,7 +557,7 @@ describe WikiPage do context 'when renaming a page' do it 'raises an error if the page already exists' do - create_page('Existing Page', 'content') + wiki.create_page('Existing Page', 'content') expect { subject.update(title: 'Existing Page', content: 'new_content') }.to raise_error(WikiPage::PageRenameError) expect(subject.title).to eq 'test page' @@ -595,7 +579,7 @@ describe WikiPage do context 'when moving a page' do it 'raises an error if the page already exists' do - create_page('foo/Existing Page', 'content') + wiki.create_page('foo/Existing Page', 'content') expect { subject.update(title: 'foo/Existing Page', content: 'new_content') }.to raise_error(WikiPage::PageRenameError) expect(subject.title).to eq 'test page' @@ -615,10 +599,7 @@ describe WikiPage do end context 'in subdir' do - subject do - create_page('foo/Existing Page', 'content') - wiki.find_page('foo/Existing Page') - end + subject { create(:wiki_page, wiki: wiki, title: 'foo/Existing Page') } it 'moves the page to the root folder if the title is preceded by /' do expect(subject.slug).to eq 'foo/Existing-Page' @@ -656,7 +637,7 @@ describe WikiPage do end end - describe "#destroy" do + describe "#delete" do subject { existing_page } it "deletes the page" do @@ -688,10 +669,7 @@ describe WikiPage do using RSpec::Parameterized::TableSyntax let(:untitled_page) { described_class.new(wiki) } - let(:directory_page) do - create_page('parent directory/child page', 'test content') - wiki.find_page('parent directory/child page') - end + let(:directory_page) { create(:wiki_page, title: 'parent directory/child page') } where(:page, :title, :changed) do :untitled_page | nil | false @@ -754,10 +732,7 @@ describe WikiPage do end context 'when the page is inside an actual directory' do - subject do - create_page('dir_1/dir_1_1/file', 'content') - wiki.find_page('dir_1/dir_1_1/file') - end + subject { create(:wiki_page, title: 'dir_1/dir_1_1/file') } it 'returns the full directory hierarchy' do expect(subject.directory).to eq('dir_1/dir_1_1') @@ -804,6 +779,16 @@ describe WikiPage do end end + describe '#persisted?' do + it 'returns true for a persisted page' do + expect(existing_page).to be_persisted + end + + it 'returns false for an unpersisted page' do + expect(new_page).not_to be_persisted + end + end + describe '#to_partial_path' do it 'returns the relative path to the partial to be used' do expect(subject.to_partial_path).to eq('projects/wikis/wiki_page') @@ -886,18 +871,6 @@ describe WikiPage do private - def remove_temp_repo(path) - FileUtils.rm_rf path - end - - def commit_details - Gitlab::Git::Wiki::CommitDetails.new(user.id, user.username, user.name, user.email, "test commit") - end - - def create_page(name, content) - wiki.wiki.write_page(name, :markdown, content, commit_details) - end - def get_slugs(page_or_dir) if page_or_dir.is_a? WikiPage [page_or_dir.slug] diff --git a/spec/requests/api/search_spec.rb b/spec/requests/api/search_spec.rb index 6ff5fbd7925..e0a673514a8 100644 --- a/spec/requests/api/search_spec.rb +++ b/spec/requests/api/search_spec.rb @@ -401,7 +401,7 @@ describe API::Search do context 'for wiki_blobs scope' do before do wiki = create(:project_wiki, project: project) - create(:wiki_page, wiki: wiki, attrs: { title: 'home', content: "Awesome page" }) + create(:wiki_page, wiki: wiki, title: 'home', content: "Awesome page") get api("/projects/#{project.id}/search", user), params: { scope: 'wiki_blobs', search: 'awesome' } end diff --git a/spec/requests/api/wikis_spec.rb b/spec/requests/api/wikis_spec.rb index 7bd9a178a8d..43a5cb446bb 100644 --- a/spec/requests/api/wikis_spec.rb +++ b/spec/requests/api/wikis_spec.rb @@ -25,8 +25,8 @@ describe API::Wikis do shared_examples_for 'returns list of wiki pages' do context 'when wiki has pages' do let!(:pages) do - [create(:wiki_page, wiki: project_wiki, attrs: { title: 'page1', content: 'content of page1' }), - create(:wiki_page, wiki: project_wiki, attrs: { title: 'page2.with.dot', content: 'content of page2' })] + [create(:wiki_page, wiki: project_wiki, title: 'page1', content: 'content of page1'), + create(:wiki_page, wiki: project_wiki, title: 'page2.with.dot', content: 'content of page2')] end it 'returns the list of wiki pages without content' do diff --git a/spec/support/shared_examples/models/chat_service_shared_examples.rb b/spec/support/shared_examples/models/chat_service_shared_examples.rb index 1cc1a1c8176..0a1c27b32db 100644 --- a/spec/support/shared_examples/models/chat_service_shared_examples.rb +++ b/spec/support/shared_examples/models/chat_service_shared_examples.rb @@ -198,7 +198,7 @@ RSpec.shared_examples "chat service" do |service_name| message: "user created page: Awesome wiki_page" } end - let(:wiki_page) { create(:wiki_page, wiki: project.wiki, attrs: opts) } + let(:wiki_page) { create(:wiki_page, wiki: project.wiki, **opts) } let(:sample_data) { Gitlab::DataBuilder::WikiPage.build(wiki_page, user, "create") } it_behaves_like "triggered #{service_name} service" diff --git a/spec/support/shared_examples/models/slack_mattermost_notifications_shared_examples.rb b/spec/support/shared_examples/models/slack_mattermost_notifications_shared_examples.rb index 24ff57c8517..a5228c43f6f 100644 --- a/spec/support/shared_examples/models/slack_mattermost_notifications_shared_examples.rb +++ b/spec/support/shared_examples/models/slack_mattermost_notifications_shared_examples.rb @@ -112,7 +112,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do |service_name| message: "user created page: Awesome wiki_page" } - @wiki_page = create(:wiki_page, wiki: project.wiki, attrs: opts) + @wiki_page = create(:wiki_page, wiki: project.wiki, **opts) @wiki_page_sample_data = Gitlab::DataBuilder::WikiPage.build(@wiki_page, user, 'create') end diff --git a/spec/support/shared_examples/models/wiki_shared_examples.rb b/spec/support/shared_examples/models/wiki_shared_examples.rb index e4455c15953..48a1bf58302 100644 --- a/spec/support/shared_examples/models/wiki_shared_examples.rb +++ b/spec/support/shared_examples/models/wiki_shared_examples.rb @@ -95,13 +95,14 @@ RSpec.shared_examples 'wiki model' do let(:wiki_pages) { subject.list_pages } before do - create_page('index', 'This is an index') - create_page('index2', 'This is an index2') - create_page('an index3', 'This is an index3') + subject.create_page('index', 'This is an index') + subject.create_page('index2', 'This is an index2') + subject.create_page('an index3', 'This is an index3') end it 'returns an array of WikiPage instances' do - expect(wiki_pages.first).to be_a WikiPage + expect(wiki_pages).to be_present + expect(wiki_pages).to all(be_a(WikiPage)) end it 'does not load WikiPage content by default' do @@ -149,7 +150,7 @@ RSpec.shared_examples 'wiki model' do describe '#find_page' do before do - create_page('index page', 'This is an awesome Gollum Wiki') + subject.create_page('index page', 'This is an awesome Gollum Wiki') end it 'returns the latest version of the page if it exists' do @@ -176,7 +177,7 @@ RSpec.shared_examples 'wiki model' do context 'pages with multibyte-character title' do before do - create_page('autre pagé', "C'est un génial Gollum Wiki") + subject.create_page('autre pagé', "C'est un génial Gollum Wiki") end it 'can find a page by slug' do @@ -188,7 +189,7 @@ RSpec.shared_examples 'wiki model' do context 'pages with invalidly-encoded content' do before do - create_page('encoding is fun', "f\xFCr".b) + subject.create_page('encoding is fun', "f\xFCr".b) end it 'can find the page' do @@ -201,11 +202,11 @@ RSpec.shared_examples 'wiki model' do describe '#find_sidebar' do before do - create_page(described_class::SIDEBAR, 'This is an awesome Sidebar') + subject.create_page(described_class::SIDEBAR, 'This is an awesome Sidebar') end it 'finds the page defined as _sidebar' do - page = subject.find_page('_sidebar') + page = subject.find_sidebar expect(page.content).to eq('This is an awesome Sidebar') end @@ -284,58 +285,59 @@ RSpec.shared_examples 'wiki model' do end describe '#update_page' do - before do - create_page('update-page', 'some content') - @gitlab_git_wiki_page = subject.wiki.page(title: 'update-page') + let(:page) { create(:wiki_page, wiki: subject, title: 'update-page') } + + def update_page subject.update_page( - @gitlab_git_wiki_page, + page.page, content: 'some other content', format: :markdown, message: 'updated page' ) - @page = subject.list_pages(load_content: true).first.page end it 'updates the content of the page' do - expect(@page.raw_data).to eq('some other content') + update_page + page = subject.find_page('update-page') + + expect(page.raw_content).to eq('some other content') end it 'sets the correct commit message' do - expect(@page.version.message).to eq('updated page') + update_page + page = subject.find_page('update-page') + + expect(page.version.message).to eq('updated page') end it 'sets the correct commit email' do + update_page + expect(user.commit_email).not_to eq(user.email) expect(commit.author_email).to eq(user.commit_email) expect(commit.committer_email).to eq(user.commit_email) end it 'updates container activity' do + page + expect(subject).to receive(:update_container_activity) - subject.update_page( - @gitlab_git_wiki_page, - content: 'Yet more content', - format: :markdown, - message: 'Updated page again' - ) + update_page end end describe '#delete_page' do - before do - create_page('index', 'some content') - @page = subject.wiki.page(title: 'index') - end + let(:page) { create(:wiki_page, wiki: wiki) } it 'deletes the page' do - subject.delete_page(@page) + subject.delete_page(page) expect(subject.list_pages.count).to eq(0) end it 'sets the correct commit email' do - subject.delete_page(@page) + subject.delete_page(page) expect(user.commit_email).not_to eq(user.email) expect(commit.author_email).to eq(user.commit_email) @@ -343,9 +345,11 @@ RSpec.shared_examples 'wiki model' do end it 'updates container activity' do + page + expect(subject).to receive(:update_container_activity) - subject.delete_page(@page) + subject.delete_page(page) end end @@ -378,23 +382,4 @@ RSpec.shared_examples 'wiki model' do expect(subject.hook_attrs.keys).to contain_exactly(:web_url, :git_ssh_url, :git_http_url, :path_with_namespace, :default_branch) end end - - private - - def create_temp_repo(path) - FileUtils.mkdir_p path - system(*%W(#{Gitlab.config.git.bin_path} init --quiet --bare -- #{path})) - end - - def remove_temp_repo(path) - FileUtils.rm_rf path - end - - def commit_details - Gitlab::Git::Wiki::CommitDetails.new(user.id, user.username, user.name, user.commit_email, 'test commit') - end - - def create_page(name, content) - subject.wiki.write_page(name, :markdown, content, commit_details) - end end diff --git a/spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb b/spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb index 52df5b1215c..505137e9b22 100644 --- a/spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb +++ b/spec/workers/gitlab/jira_import/stage/import_labels_worker_spec.rb @@ -37,6 +37,9 @@ describe Gitlab::JiraImport::Stage::ImportLabelsWorker do before do jira_import.start! + + WebMock.stub_request(:get, 'https://jira.example.com/rest/api/2/label?maxResults=500&startAt=0') + .to_return(body: {}.to_json ) end it_behaves_like 'advance to next stage', :issues |