diff --git a/spec/controllers/blob_controller_spec.rb b/spec/controllers/blob_controller_spec.rb index 02a9db612558cbec9c531e3240fad3ee65774347..ea52e4d212a5461bcdc1dba6ec1ed859a7e8e439 100644 --- a/spec/controllers/blob_controller_spec.rb +++ b/spec/controllers/blob_controller_spec.rb @@ -45,7 +45,7 @@ describe Projects::BlobController do context 'redirect to tree' do let(:id) { 'markdown/doc' } - it "redirects" do + it 'redirects' do expect(subject). to redirect_to("/#{project.path_with_namespace}/tree/markdown/doc") end diff --git a/spec/controllers/commit_controller_spec.rb b/spec/controllers/commit_controller_spec.rb index 8f0d0261e6dd1767a1018e8a258da533f5a37d2c..f0e39e674fdc02a3067e61dfe5273bda56831f5f 100644 --- a/spec/controllers/commit_controller_spec.rb +++ b/spec/controllers/commit_controller_spec.rb @@ -31,8 +31,8 @@ describe Projects::CommitController do end it "should not escape Html" do - allow_any_instance_of(Commit).to receive(:"to_#{format}") - .and_return('HTML entities &<>" ') + allow_any_instance_of(Commit).to receive(:"to_#{format}"). + and_return('HTML entities &<>" ') get :show, project_id: project.to_param, id: commit.id, format: format diff --git a/spec/controllers/import/github_controller_spec.rb b/spec/controllers/import/github_controller_spec.rb index 69469e5d8f3cd357429369328d670c57d7e1b336..3b779855d3f7d769db59ff87f4efc08d3da5a5dc 100644 --- a/spec/controllers/import/github_controller_spec.rb +++ b/spec/controllers/import/github_controller_spec.rb @@ -12,9 +12,9 @@ describe Import::GithubController do token = "asdasd12345" allow_any_instance_of(Gitlab::GithubImport::Client). to receive(:get_token).and_return(token) - Gitlab.config.omniauth.providers << OpenStruct.new(app_id: "asd123", - app_secret: "asd123", - name: "github") + Gitlab.config.omniauth.providers << OpenStruct.new(app_id: 'asd123', + app_secret: 'asd123', + name: 'github') get :callback diff --git a/spec/controllers/tree_controller_spec.rb b/spec/controllers/tree_controller_spec.rb index c228584c886d6f70918944897f81c5358dd7d499..805e0a8795bbe03ae04cf17d8b5b8b52c39a357c 100644 --- a/spec/controllers/tree_controller_spec.rb +++ b/spec/controllers/tree_controller_spec.rb @@ -50,7 +50,11 @@ describe Projects::TreeController do context 'redirect to blob' do let(:id) { 'master/README.md' } - it { is_expected.to redirect_to("/#{project.path_with_namespace}/blob/master/README.md") } + it 'redirects' do + redirect_url = "/#{project.path_with_namespace}/blob/master/README.md" + expect(subject). + to redirect_to(redirect_url) + end end end end diff --git a/spec/features/admin/admin_users_spec.rb b/spec/features/admin/admin_users_spec.rb index c6c9f1f33c1174549e1335dcec097fdeaf5fa495..f97b69713ceca6862bacafa3729342fa99a6fc78 100644 --- a/spec/features/admin/admin_users_spec.rb +++ b/spec/features/admin/admin_users_spec.rb @@ -33,15 +33,17 @@ describe "Admin::Users", feature: true do it "should apply defaults to user" do click_button "Create user" user = User.find_by(username: 'bang') - expect(user.projects_limit).to eq(Gitlab.config.gitlab.default_projects_limit) - expect(user.can_create_group).to eq(Gitlab.config.gitlab.default_can_create_group) + expect(user.projects_limit). + to eq(Gitlab.config.gitlab.default_projects_limit) + expect(user.can_create_group). + to eq(Gitlab.config.gitlab.default_can_create_group) end it "should create user with valid data" do click_button "Create user" user = User.find_by(username: 'bang') - expect(user.name).to eq("Big Bang") - expect(user.email).to eq("bigbang@mail.com") + expect(user.name).to eq('Big Bang') + expect(user.email).to eq('bigbang@mail.com') end it "should call send mail" do @@ -54,7 +56,7 @@ describe "Admin::Users", feature: true do click_button "Create user" user = User.find_by(username: 'bang') email = ActionMailer::Base.deliveries.last - expect(email.subject).to have_content("Account was created") + expect(email.subject).to have_content('Account was created') expect(email.text_part.body).to have_content(user.email) expect(email.text_part.body).to have_content('password') end @@ -80,8 +82,8 @@ describe "Admin::Users", feature: true do end it "should have user edit page" do - expect(page).to have_content("Name") - expect(page).to have_content("Password") + expect(page).to have_content('Name') + expect(page).to have_content('Password') end describe "Update user" do @@ -93,13 +95,13 @@ describe "Admin::Users", feature: true do end it "should show page with new data" do - expect(page).to have_content("bigbang@mail.com") - expect(page).to have_content("Big Bang") + expect(page).to have_content('bigbang@mail.com') + expect(page).to have_content('Big Bang') end it "should change user entry" do @simple_user.reload - expect(@simple_user.name).to eq("Big Bang") + expect(@simple_user.name).to eq('Big Bang') expect(@simple_user.is_admin?).to be_truthy end end diff --git a/spec/features/atom/dashboard_issues_spec.rb b/spec/features/atom/dashboard_issues_spec.rb index ceeb3e6c5aa1465c5044f4e994d323463afd1427..b710cb3c72ff33b85d85de20b73bb0d9e954e48f 100644 --- a/spec/features/atom/dashboard_issues_spec.rb +++ b/spec/features/atom/dashboard_issues_spec.rb @@ -17,12 +17,13 @@ describe "Dashboard Issues Feed", feature: true do it "should render atom feed via private token" do visit issues_dashboard_path(:atom, private_token: user.private_token) - expect(response_headers['Content-Type']).to have_content("application/atom+xml") - expect(body).to have_selector("title", text: "#{user.name} issues") - expect(body).to have_selector("author email", text: issue1.author_email) - expect(body).to have_selector("entry summary", text: issue1.title) - expect(body).to have_selector("author email", text: issue2.author_email) - expect(body).to have_selector("entry summary", text: issue2.title) + expect(response_headers['Content-Type']). + to have_content('application/atom+xml') + expect(body).to have_selector('title', text: "#{user.name} issues") + expect(body).to have_selector('author email', text: issue1.author_email) + expect(body).to have_selector('entry summary', text: issue1.title) + expect(body).to have_selector('author email', text: issue2.author_email) + expect(body).to have_selector('entry summary', text: issue2.title) end end end diff --git a/spec/features/atom/dashboard_spec.rb b/spec/features/atom/dashboard_spec.rb index 8e723b5c2acbfcbba4d66612e7c81abbcb8e8762..ad157d742ff42f4d1fca3453f83daec6eb0cbbbb 100644 --- a/spec/features/atom/dashboard_spec.rb +++ b/spec/features/atom/dashboard_spec.rb @@ -7,7 +7,7 @@ describe "Dashboard Feed", feature: true do context "projects atom feed via private token" do it "should render projects atom feed" do visit dashboard_path(:atom, private_token: user.private_token) - expect(body).to have_selector("feed title") + expect(body).to have_selector('feed title') end end @@ -28,7 +28,8 @@ describe "Dashboard Feed", feature: true do end it "should have issue comment event" do - expect(body).to have_content("#{user.name} commented on issue ##{issue.iid}") + expect(body). + to have_content("#{user.name} commented on issue ##{issue.iid}") end end end diff --git a/spec/features/atom/issues_spec.rb b/spec/features/atom/issues_spec.rb index 26422c8fdc02d742f8110a1119bfd695b76ba70b..43163e4113e52e337ba2d95adc18856b86a35f4f 100644 --- a/spec/features/atom/issues_spec.rb +++ b/spec/features/atom/issues_spec.rb @@ -1,33 +1,36 @@ require 'spec_helper' -describe "Issues Feed", feature: true do - describe "GET /issues" do +describe 'Issues Feed', feature: true do + describe 'GET /issues' do let!(:user) { create(:user) } let!(:project) { create(:project) } let!(:issue) { create(:issue, author: user, project: project) } before { project.team << [user, :developer] } - context "when authenticated" do - it "should render atom feed" do + context 'when authenticated' do + it 'should render atom feed' do login_with user visit project_issues_path(project, :atom) - expect(response_headers['Content-Type']).to have_content("application/atom+xml") - expect(body).to have_selector("title", text: "#{project.name} issues") - expect(body).to have_selector("author email", text: issue.author_email) - expect(body).to have_selector("entry summary", text: issue.title) + expect(response_headers['Content-Type']). + to have_content('application/atom+xml') + expect(body).to have_selector('title', text: "#{project.name} issues") + expect(body).to have_selector('author email', text: issue.author_email) + expect(body).to have_selector('entry summary', text: issue.title) end end - context "when authenticated via private token" do - it "should render atom feed" do - visit project_issues_path(project, :atom, private_token: user.private_token) + context 'when authenticated via private token' do + it 'should render atom feed' do + visit project_issues_path(project, :atom, + private_token: user.private_token) - expect(response_headers['Content-Type']).to have_content("application/atom+xml") - expect(body).to have_selector("title", text: "#{project.name} issues") - expect(body).to have_selector("author email", text: issue.author_email) - expect(body).to have_selector("entry summary", text: issue.title) + expect(response_headers['Content-Type']). + to have_content('application/atom+xml') + expect(body).to have_selector('title', text: "#{project.name} issues") + expect(body).to have_selector('author email', text: issue.author_email) + expect(body).to have_selector('entry summary', text: issue.title) end end end diff --git a/spec/features/atom/users_spec.rb b/spec/features/atom/users_spec.rb index 37af48282db770c8090187fa12c87a11cbcbe343..c0316b073ad0116faba15ffabee1a9106cf38d39 100644 --- a/spec/features/atom/users_spec.rb +++ b/spec/features/atom/users_spec.rb @@ -4,17 +4,23 @@ describe "User Feed", feature: true do describe "GET /" do let!(:user) { create(:user) } - context "user atom feed via private token" do + context 'user atom feed via private token' do it "should render user atom feed" do visit user_path(user, :atom, private_token: user.private_token) - expect(body).to have_selector("feed title") + expect(body).to have_selector('feed title') end end context 'feed content' do let(:project) { create(:project) } - let(:issue) { create(:issue, project: project, author: user, description: '') } - let(:note) { create(:note, noteable: issue, author: user, note: 'Bug confirmed', project: project) } + let(:issue) do + create(:issue, project: project, + author: user, description: '') + end + let(:note) do + create(:note, noteable: issue, author: user, + note: 'Bug confirmed', project: project) + end before do project.team << [user, :master] @@ -23,11 +29,11 @@ describe "User Feed", feature: true do visit user_path(user, :atom, private_token: user.private_token) end - it "should have issue opened event" do + it 'should have issue opened event' do expect(body).to have_content("#{safe_name} opened issue ##{issue.iid}") end - it "should have issue comment event" do + it 'should have issue comment event' do expect(body). to have_content("#{safe_name} commented on issue ##{issue.iid}") end diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb index 78e5adebc5c5570896c34e209fe6e961a0cd3e08..f54155439cb4d3cabc00da6d92af6aa26ccdea0c 100644 --- a/spec/features/issues_spec.rb +++ b/spec/features/issues_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe "Issues", feature: true do +describe 'Issues', feature: true do include SortingHelper let(:project) { create(:project) } @@ -12,7 +12,7 @@ describe "Issues", feature: true do project.team << [[@user, user2], :developer] end - describe "Edit issue" do + describe 'Edit issue' do let!(:issue) do create(:issue, author: @user, @@ -25,30 +25,34 @@ describe "Issues", feature: true do click_link "Edit" end - it "should open new issue popup" do + it 'should open new issue popup' do expect(page).to have_content("Issue ##{issue.iid}") end - describe "fill in" do + describe 'fill in' do before do - fill_in "issue_title", with: "bug 345" - fill_in "issue_description", with: "bug description" + fill_in 'issue_title', with: 'bug 345' + fill_in 'issue_description', with: 'bug description' end - it { expect { click_button "Save changes" }.to_not change {Issue.count} } + it 'does not change issue count' do + expect { + click_button 'Save changes' + }.to_not change { Issue.count } + end - it "should update issue fields" do - click_button "Save changes" + it 'should update issue fields' do + click_button 'Save changes' expect(page).to have_content @user.name - expect(page).to have_content "bug 345" + expect(page).to have_content 'bug 345' expect(page).to have_content project.name end end end - describe "Editing issue assignee" do + describe 'Editing issue assignee' do let!(:issue) do create(:issue, author: @user, @@ -56,7 +60,7 @@ describe "Issues", feature: true do project: project) end - it 'allows user to select unasigned', :js => true do + it 'allows user to select unasigned', js: true do visit edit_project_issue_path(project, issue) expect(page).to have_content "Assign to #{@user.name}" @@ -65,14 +69,14 @@ describe "Issues", feature: true do sleep 2 # wait for ajax stuff to complete first('.user-result').click - click_button "Save changes" + click_button 'Save changes' expect(page).to have_content 'Assignee: none' expect(issue.reload.assignee).to be_nil end end - describe "Filter issue" do + describe 'Filter issue' do before do ['foobar', 'barbaz', 'gitlab'].each do |title| create(:issue, @@ -90,7 +94,7 @@ describe "Issues", feature: true do let(:issue) { @issue } - it "should allow filtering by issues with no specified milestone" do + it 'should allow filtering by issues with no specified milestone' do visit project_issues_path(project, milestone_id: '0') expect(page).not_to have_content 'foobar' @@ -98,7 +102,7 @@ describe "Issues", feature: true do expect(page).to have_content 'gitlab' end - it "should allow filtering by a specified milestone" do + it 'should allow filtering by a specified milestone' do visit project_issues_path(project, milestone_id: issue.milestone.id) expect(page).to have_content 'foobar' @@ -106,7 +110,7 @@ describe "Issues", feature: true do expect(page).not_to have_content 'gitlab' end - it "should allow filtering by issues with no specified assignee" do + it 'should allow filtering by issues with no specified assignee' do visit project_issues_path(project, assignee_id: '0') expect(page).to have_content 'foobar' @@ -114,7 +118,7 @@ describe "Issues", feature: true do expect(page).not_to have_content 'gitlab' end - it "should allow filtering by a specified assignee" do + it 'should allow filtering by a specified assignee' do visit project_issues_path(project, assignee_id: @user.id) expect(page).not_to have_content 'foobar' @@ -126,7 +130,11 @@ describe "Issues", feature: true do describe 'filter issue' do titles = ['foo','bar','baz'] titles.each_with_index do |title, index| - let!(title.to_sym) { create(:issue, title: title, project: project, created_at: Time.now - (index * 60)) } + let!(title.to_sym) do + create(:issue, title: title, + project: project, + created_at: Time.now - (index * 60)) + end end let(:newer_due_milestone) { create(:milestone, due_date: '2013-12-11') } let(:later_due_milestone) { create(:milestone, due_date: '2013-12-12') } @@ -134,15 +142,15 @@ describe "Issues", feature: true do it 'sorts by newest' do visit project_issues_path(project, sort: sort_value_recently_created) - expect(first_issue).to include("foo") - expect(last_issue).to include("baz") + expect(first_issue).to include('foo') + expect(last_issue).to include('baz') end it 'sorts by oldest' do visit project_issues_path(project, sort: sort_value_oldest_created) - expect(first_issue).to include("baz") - expect(last_issue).to include("foo") + expect(first_issue).to include('baz') + expect(last_issue).to include('foo') end it 'sorts by most recently updated' do @@ -150,7 +158,7 @@ describe "Issues", feature: true do baz.save visit project_issues_path(project, sort: sort_value_recently_updated) - expect(first_issue).to include("baz") + expect(first_issue).to include('baz') end it 'sorts by least recently updated' do @@ -158,7 +166,7 @@ describe "Issues", feature: true do baz.save visit project_issues_path(project, sort: sort_value_oldest_updated) - expect(first_issue).to include("baz") + expect(first_issue).to include('baz') end describe 'sorting by milestone' do @@ -172,13 +180,13 @@ describe "Issues", feature: true do it 'sorts by recently due milestone' do visit project_issues_path(project, sort: sort_value_milestone_soon) - expect(first_issue).to include("foo") + expect(first_issue).to include('foo') end it 'sorts by least recently due milestone' do visit project_issues_path(project, sort: sort_value_milestone_later) - expect(first_issue).to include("bar") + expect(first_issue).to include('bar') end end @@ -193,10 +201,12 @@ describe "Issues", feature: true do end it 'sorts with a filter applied' do - visit project_issues_path(project, sort: sort_value_oldest_created, assignee_id: user2.id) + visit project_issues_path(project, + sort: sort_value_oldest_created, + assignee_id: user2.id) - expect(first_issue).to include("bar") - expect(last_issue).to include("foo") + expect(first_issue).to include('bar') + expect(last_issue).to include('foo') expect(page).not_to have_content 'baz' end end @@ -210,11 +220,13 @@ describe "Issues", feature: true do it 'with dropdown menu' do visit project_issue_path(project, issue) - find('.edit-issue.inline-update #issue_assignee_id').set project.team.members.first.id + find('.edit-issue.inline-update #issue_assignee_id'). + set project.team.members.first.id click_button 'Update Issue' - expect(page).to have_content "Assignee:" - has_select?('issue_assignee_id', :selected => project.team.members.first.name) + expect(page).to have_content 'Assignee:' + has_select?('issue_assignee_id', + selected: project.team.members.first.name) end end @@ -228,7 +240,7 @@ describe "Issues", feature: true do issue.save end - it "shows assignee text", js: true do + it 'shows assignee text', js: true do logout login_with guest @@ -247,12 +259,13 @@ describe "Issues", feature: true do it 'with dropdown menu' do visit project_issue_path(project, issue) - find('.edit-issue.inline-update').select(milestone.title, from: 'issue_milestone_id') + find('.edit-issue.inline-update'). + select(milestone.title, from: 'issue_milestone_id') click_button 'Update Issue' expect(page).to have_content "Milestone changed to #{milestone.title}" expect(page).to have_content "Milestone: #{milestone.title}" - has_select?('issue_assignee_id', :selected => milestone.title) + has_select?('issue_assignee_id', selected: milestone.title) end end @@ -265,7 +278,7 @@ describe "Issues", feature: true do issue.save end - it "shows milestone text", js: true do + it 'shows milestone text', js: true do logout login_with guest @@ -282,7 +295,7 @@ describe "Issues", feature: true do issue.save end - it 'allows user to remove assignee', :js => true do + it 'allows user to remove assignee', js: true do visit project_issue_path(project, issue) expect(page).to have_content "Assignee: #{user2.name}" @@ -298,10 +311,10 @@ describe "Issues", feature: true do end def first_issue - all("ul.issues-list li").first.text + all('ul.issues-list li').first.text end def last_issue - all("ul.issues-list li").last.text + all('ul.issues-list li').last.text end end diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb index 2884c560a7ce0fe28c70637d68c8eae4d995ec37..7790d0ecd7361f7ebca4794bd7eb37518c3be90b 100644 --- a/spec/features/notes_on_merge_requests_spec.rb +++ b/spec/features/notes_on_merge_requests_spec.rb @@ -3,10 +3,12 @@ require 'spec_helper' describe 'Comments' do include RepoHelpers - describe "On a merge request", js: true, feature: true do + describe 'On a merge request', js: true, feature: true do let!(:merge_request) { create(:merge_request) } let!(:project) { merge_request.source_project } - let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) } + let!(:note) do + create(:note_on_merge_request, :with_attachment, project: project) + end before do login_as :admin @@ -15,19 +17,20 @@ describe 'Comments' do subject { page } - describe "the note form" do + describe 'the note form' do it 'should be valid' do - is_expected.to have_css(".js-main-target-form", visible: true, count: 1) - expect(find(".js-main-target-form input[type=submit]").value).to eq("Add Comment") + is_expected.to have_css('.js-main-target-form', visible: true, count: 1) + expect(find('.js-main-target-form input[type=submit]').value). + to eq('Add Comment') within('.js-main-target-form') do expect(page).not_to have_link('Cancel') end end - describe "with text" do + describe 'with text' do before do - within(".js-main-target-form") do - fill_in "note[note]", with: "This is awesome" + within('.js-main-target-form') do + fill_in 'note[note]', with: 'This is awesome' end end @@ -40,41 +43,45 @@ describe 'Comments' do end end - describe "when posting a note" do + describe 'when posting a note' do before do - within(".js-main-target-form") do - fill_in "note[note]", with: "This is awsome!" + within('.js-main-target-form') do + fill_in 'note[note]', with: 'This is awsome!' find('.js-md-preview-button').click - click_button "Add Comment" + click_button 'Add Comment' end end it 'should be added and form reset' do - is_expected.to have_content("This is awsome!") + is_expected.to have_content('This is awsome!') within('.js-main-target-form') do expect(page).to have_no_field('note[note]', with: 'This is awesome!') expect(page).to have_css('.js-md-preview', visible: :hidden) end - within(".js-main-target-form") { is_expected.to have_css(".js-note-text", visible: true) } + within('.js-main-target-form') do + is_expected.to have_css('.js-note-text', visible: true) + end end end - describe "when editing a note", js: true do - it "should contain the hidden edit form" do - within("#note_#{note.id}") { is_expected.to have_css(".note-edit-form", visible: false) } + describe 'when editing a note', js: true do + it 'should contain the hidden edit form' do + within("#note_#{note.id}") do + is_expected.to have_css('.note-edit-form', visible: false) + end end - describe "editing the note" do + describe 'editing the note' do before do find('.note').hover find(".js-note-edit").click end - it "should show the note edit form and hide the note body" do + it 'should show the note edit form and hide the note body' do within("#note_#{note.id}") do - expect(find(".current-note-edit-form", visible: true)).to be_visible - expect(find(".note-edit-form", visible: true)).to be_visible - expect(find(:css, ".note-text", visible: false)).not_to be_visible + expect(find('.current-note-edit-form', visible: true)).to be_visible + expect(find('.note-edit-form', visible: true)).to be_visible + expect(find(:css, '.note-text', visible: false)).not_to be_visible end end @@ -87,41 +94,43 @@ describe 'Comments' do #end #end - it "appends the edited at time to the note" do - within(".current-note-edit-form") do - fill_in "note[note]", with: "Some new content" - find(".btn-save").click + it 'appends the edited at time to the note' do + within('.current-note-edit-form') do + fill_in 'note[note]', with: 'Some new content' + find('.btn-save').click end within("#note_#{note.id}") do - is_expected.to have_css(".note_edited_ago") - expect(find(".note_edited_ago").text).to match(/less than a minute ago/) + is_expected.to have_css('.note_edited_ago') + expect(find('.note_edited_ago').text). + to match(/less than a minute ago/) end end end - describe "deleting an attachment" do + describe 'deleting an attachment' do before do find('.note').hover - find(".js-note-edit").click + find('.js-note-edit').click end - it "shows the delete link" do - within(".note-attachment") do - is_expected.to have_css(".js-note-attachment-delete") + it 'shows the delete link' do + within('.note-attachment') do + is_expected.to have_css('.js-note-attachment-delete') end end - it "removes the attachment div and resets the edit form" do - find(".js-note-attachment-delete").click - is_expected.not_to have_css(".note-attachment") - expect(find(".current-note-edit-form", visible: false)).not_to be_visible + it 'removes the attachment div and resets the edit form' do + find('.js-note-attachment-delete').click + is_expected.not_to have_css('.note-attachment') + expect(find('.current-note-edit-form', visible: false)). + not_to be_visible end end end end - describe "On a merge request diff", js: true, feature: true do + describe 'On a merge request diff', js: true, feature: true do let(:merge_request) { create(:merge_request) } let(:project) { merge_request.source_project } @@ -132,68 +141,74 @@ describe 'Comments' do subject { page } - describe "when adding a note" do + describe 'when adding a note' do before do click_diff_line end - describe "the notes holder" do - it { is_expected.to have_css(".js-temp-notes-holder") } + describe 'the notes holder' do + it { is_expected.to have_css('.js-temp-notes-holder') } - it { within(".js-temp-notes-holder") { is_expected.to have_css(".new_note") } } + it 'has .new_note css class' do + within('.js-temp-notes-holder') do + expect(subject).to have_css('.new_note') + end + end end - describe "the note form" do + describe 'the note form' do it "shouldn't add a second form for same row" do click_diff_line - is_expected.to have_css("tr[id='#{line_code}'] + .js-temp-notes-holder form", count: 1) + is_expected. + to have_css("tr[id='#{line_code}'] + .js-temp-notes-holder form", + count: 1) end - it "should be removed when canceled" do + it 'should be removed when canceled' do within(".diff-file form[rel$='#{line_code}']") do - find(".js-close-discussion-note-form").trigger("click") + find('.js-close-discussion-note-form').trigger('click') end - is_expected.to have_no_css(".js-temp-notes-holder") + is_expected.to have_no_css('.js-temp-notes-holder') end end end - describe "with muliple note forms" do + describe 'with muliple note forms' do before do click_diff_line click_diff_line(line_code_2) end - it { is_expected.to have_css(".js-temp-notes-holder", count: 2) } + it { is_expected.to have_css('.js-temp-notes-holder', count: 2) } - describe "previewing them separately" do + describe 'previewing them separately' do before do # add two separate texts and trigger previews on both within("tr[id='#{line_code}'] + .js-temp-notes-holder") do - fill_in "note[note]", with: "One comment on line 7" + fill_in 'note[note]', with: 'One comment on line 7' find('.js-md-preview-button').click end within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do - fill_in "note[note]", with: "Another comment on line 10" + fill_in 'note[note]', with: 'Another comment on line 10' find('.js-md-preview-button').click end end end - describe "posting a note" do + describe 'posting a note' do before do within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do - fill_in "note[note]", with: "Another comment on line 10" - click_button("Add Comment") + fill_in 'note[note]', with: 'Another comment on line 10' + click_button('Add Comment') end end it 'should be added as discussion' do - is_expected.to have_content("Another comment on line 10") - is_expected.to have_css(".notes_holder") - is_expected.to have_css(".notes_holder .note", count: 1) + is_expected.to have_content('Another comment on line 10') + is_expected.to have_css('.notes_holder') + is_expected.to have_css('.notes_holder .note', count: 1) is_expected.to have_button('Reply') end end diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb index dfbe65cee9d6f0a4aaba4034408f0fa4607ea6dc..3d36a3c02d043cc989cfc682273d2c5c6b989e2d 100644 --- a/spec/features/profile_spec.rb +++ b/spec/features/profile_spec.rb @@ -1,34 +1,34 @@ require 'spec_helper' -describe "Profile account page", feature: true do +describe 'Profile account page', feature: true do let(:user) { create(:user) } before do login_as :user end - describe "when signup is enabled" do + describe 'when signup is enabled' do before do ApplicationSetting.any_instance.stub(signup_enabled?: true) visit profile_account_path end - it { expect(page).to have_content("Remove account") } + it { expect(page).to have_content('Remove account') } - it "should delete the account" do - expect { click_link "Delete account" }.to change {User.count}.by(-1) + it 'should delete the account' do + expect { click_link 'Delete account' }.to change { User.count }.by(-1) expect(current_path).to eq(new_user_session_path) end end - describe "when signup is disabled" do + describe 'when signup is disabled' do before do ApplicationSetting.any_instance.stub(signup_enabled?: false) visit profile_account_path end - it "should not have option to remove account" do - expect(page).not_to have_content("Remove account") + it 'should not have option to remove account' do + expect(page).not_to have_content('Remove account') expect(current_path).to eq(profile_account_path) end end diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 9c8c8ab4b0fa9c5699b28940174f0d056950d1b3..61d6c906ad0f87ba68dbda8db6f53dd95d54f10a 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -46,7 +46,8 @@ describe ApplicationHelper do group = create(:group) group.avatar = File.open(avatar_file_path) group.save! - expect(group_icon(group.path).to_s).to match("/uploads/group/avatar/#{ group.id }/gitlab_logo.png") + expect(group_icon(group.path).to_s). + to match("/uploads/group/avatar/#{ group.id }/gitlab_logo.png") end it 'should give default avatar_icon when no avatar is present' do @@ -86,7 +87,8 @@ describe ApplicationHelper do user = create(:user) user.avatar = File.open(avatar_file_path) user.save! - expect(avatar_icon(user.email).to_s).to match("/uploads/user/avatar/#{ user.id }/gitlab_logo.png") + expect(avatar_icon(user.email).to_s). + to match("/uploads/user/avatar/#{ user.id }/gitlab_logo.png") end it 'should return an url for the avatar with relative url' do @@ -96,7 +98,8 @@ describe ApplicationHelper do user = create(:user) user.avatar = File.open(avatar_file_path) user.save! - expect(avatar_icon(user.email).to_s).to match("/gitlab/uploads/user/avatar/#{ user.id }/gitlab_logo.png") + expect(avatar_icon(user.email).to_s). + to match("/gitlab/uploads/user/avatar/#{ user.id }/gitlab_logo.png") end it 'should call gravatar_icon when no avatar is present' do @@ -120,7 +123,8 @@ describe ApplicationHelper do it 'should return default gravatar url' do Gitlab.config.gitlab.stub(https: false) - expect(gravatar_icon(user_email)).to match('http://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118') + url = 'http://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118' + expect(gravatar_icon(user_email)).to match(url) end it 'should use SSL when appropriate' do @@ -130,8 +134,11 @@ describe ApplicationHelper do it 'should return custom gravatar path when gravatar_url is set' do allow(self).to receive(:request).and_return(double(:ssl? => false)) - allow(Gitlab.config.gravatar).to receive(:plain_url).and_return('http://example.local/?s=%{size}&hash=%{hash}') - expect(gravatar_icon(user_email, 20)).to eq('http://example.local/?s=20&hash=b58c6f14d292556214bd64909bcdb118') + allow(Gitlab.config.gravatar). + to receive(:plain_url). + and_return('http://example.local/?s=%{size}&hash=%{hash}') + url = 'http://example.local/?s=20&hash=b58c6f14d292556214bd64909bcdb118' + expect(gravatar_icon(user_email, 20)).to eq(url) end it 'should accept a custom size' do @@ -146,7 +153,8 @@ describe ApplicationHelper do it 'should be case insensitive' do allow(self).to receive(:request).and_return(double(:ssl? => false)) - expect(gravatar_icon(user_email)).to eq(gravatar_icon(user_email.upcase + ' ')) + expect(gravatar_icon(user_email)). + to eq(gravatar_icon(user_email.upcase + ' ')) end end @@ -170,7 +178,7 @@ describe ApplicationHelper do it 'includes a list of tag names' do expect(options[1][0]).to eq('Tags') - expect(options[1][1]).to include('v1.0.0','v1.1.0') + expect(options[1][1]).to include('v1.0.0', 'v1.1.0') end it 'includes a specific commit ref if defined' do @@ -183,9 +191,11 @@ describe ApplicationHelper do it 'sorts tags in a natural order' do # Stub repository.tag_names to make sure we get some valid testing data - expect(@project.repository).to receive(:tag_names).and_return(['v1.0.9', 'v1.0.10', 'v2.0', 'v3.1.4.2', 'v1.0.9a']) + expect(@project.repository).to receive(:tag_names). + and_return(['v1.0.9', 'v1.0.10', 'v2.0', 'v3.1.4.2', 'v1.0.9a']) - expect(options[1][1]).to eq(['v3.1.4.2', 'v2.0', 'v1.0.10', 'v1.0.9a', 'v1.0.9']) + expect(options[1][1]). + to eq(['v3.1.4.2', 'v2.0', 'v1.0.10', 'v1.0.9a', 'v1.0.9']) end end diff --git a/spec/helpers/broadcast_messages_helper_spec.rb b/spec/helpers/broadcast_messages_helper_spec.rb index cf310b893e07a472e03071da20a054dbec6a9394..f6df12662bb1a78a44d1647823d8f538979274c6 100644 --- a/spec/helpers/broadcast_messages_helper_spec.rb +++ b/spec/helpers/broadcast_messages_helper_spec.rb @@ -14,7 +14,8 @@ describe BroadcastMessagesHelper do before { broadcast_message.stub(color: "#f2dede", font: "#b94a48") } it "should have a customized style" do - expect(broadcast_styling(broadcast_message)).to match('background-color:#f2dede;color:#b94a48') + expect(broadcast_styling(broadcast_message)). + to match('background-color:#f2dede;color:#b94a48') end end end diff --git a/spec/helpers/diff_helper_spec.rb b/spec/helpers/diff_helper_spec.rb index 75da43a68a64384aa8c7b05e26ddd278885667ba..5bd09793b11dac1209da4d095263dc0b728d1181 100644 --- a/spec/helpers/diff_helper_spec.rb +++ b/spec/helpers/diff_helper_spec.rb @@ -10,7 +10,7 @@ describe DiffHelper do describe 'diff_hard_limit_enabled?' do it 'should return true if param is provided' do - allow(controller).to receive(:params) { { :force_show_diff => true } } + allow(controller).to receive(:params) { { force_show_diff: true } } expect(diff_hard_limit_enabled?).to be_truthy end @@ -21,7 +21,7 @@ describe DiffHelper do describe 'allowed_diff_size' do it 'should return hard limit for a diff if force diff is true' do - allow(controller).to receive(:params) { { :force_show_diff => true } } + allow(controller).to receive(:params) { { force_show_diff: true } } expect(allowed_diff_size).to eq(1000) end @@ -32,13 +32,15 @@ describe DiffHelper do describe 'parallel_diff' do it 'should return an array of arrays containing the parsed diff' do - expect(parallel_diff(diff_file, 0)).to match_array(parallel_diff_result_array) + expect(parallel_diff(diff_file, 0)). + to match_array(parallel_diff_result_array) end end describe 'generate_line_code' do it 'should generate correct line code' do - expect(generate_line_code(diff_file.file_path, diff_file.diff_lines.first)).to eq('2f6fcd96b88b36ce98c38da085c795a27d92a3dd_6_6') + expect(generate_line_code(diff_file.file_path, diff_file.diff_lines.first)). + to eq('2f6fcd96b88b36ce98c38da085c795a27d92a3dd_6_6') end end @@ -55,12 +57,13 @@ describe DiffHelper do describe 'diff_line_content' do it 'should return non breaking space when line is empty' do - expect(diff_line_content(nil)).to eq(" ") + expect(diff_line_content(nil)).to eq(' ') end it 'should return the line itself' do - expect(diff_line_content(diff_file.diff_lines.first.text)).to eq("@@ -6,12 +6,18 @@ module Popen") - expect(diff_line_content(diff_file.diff_lines.first.type)).to eq("match") + expect(diff_line_content(diff_file.diff_lines.first.text)). + to eq('@@ -6,12 +6,18 @@ module Popen') + expect(diff_line_content(diff_file.diff_lines.first.type)).to eq('match') expect(diff_line_content(diff_file.diff_lines.first.new_pos)).to eq(6) end end diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb index 87d45faa207c232a7802cf54279ebc268abd9023..317a559f83cb38a7eaef3f824864e512d9feed71 100644 --- a/spec/helpers/gitlab_markdown_helper_spec.rb +++ b/spec/helpers/gitlab_markdown_helper_spec.rb @@ -1,4 +1,4 @@ -require "spec_helper" +require 'spec_helper' describe GitlabMarkdownHelper do include ApplicationHelper @@ -42,7 +42,8 @@ describe GitlabMarkdownHelper do end it "should not touch HTML entities" do - allow(@project.issues).to receive(:where).with(id: '39').and_return([issue]) + allow(@project.issues).to receive(:where). + with(id: '39').and_return([issue]) actual = 'We'll accept good pull requests.' expect(gfm(actual)).to eq("We'll accept good pull requests.") end @@ -156,7 +157,8 @@ describe GitlabMarkdownHelper do expect(gfm(actual.gsub(reference, "(#{reference})"))).to match(expected) # Append some text to the end of the reference - expect(gfm(actual.gsub(reference, "#{reference}, right?"))).to match(expected) + expect(gfm(actual.gsub(reference, "#{reference}, right?"))). + to match(expected) end it "should keep whitespace intact" do @@ -216,9 +218,8 @@ describe GitlabMarkdownHelper do ) # Append some text to the end of the reference - expect(gfm(actual.gsub(full_reference, "#{full_reference}, right?"))).to( - match(expected) - ) + expect(gfm(actual.gsub(full_reference, "#{full_reference}, right?"))). + to(match(expected)) end it 'should keep whitespace intact' do @@ -315,7 +316,8 @@ describe GitlabMarkdownHelper do expect(gfm(actual.gsub(reference, "(#{reference})"))).to match(expected) # Append some text to the end of the reference - expect(gfm(actual.gsub(reference, "#{reference}, right?"))).to match(expected) + expect(gfm(actual.gsub(reference, "#{reference}, right?"))). + to match(expected) end it "should keep whitespace intact" do @@ -471,7 +473,8 @@ describe GitlabMarkdownHelper do expect(groups[0]).to match(/This should finally fix $/) # First issue link - expect(groups[1]).to match(/href="#{project_issue_url(project, issues[0])}"/) + expect(groups[1]). + to match(/href="#{project_issue_url(project, issues[0])}"/) expect(groups[1]).to match(/##{issues[0].iid}$/) # Internal commit link @@ -479,7 +482,8 @@ describe GitlabMarkdownHelper do expect(groups[2]).to match(/ and /) # Second issue link - expect(groups[3]).to match(/href="#{project_issue_url(project, issues[1])}"/) + expect(groups[3]). + to match(/href="#{project_issue_url(project, issues[1])}"/) expect(groups[3]).to match(/##{issues[1].iid}$/) # Trailing commit link @@ -494,7 +498,8 @@ describe GitlabMarkdownHelper do it "escapes HTML passed in as the body" do actual = "This is a <h1>test</h1> - see ##{issues[0].iid}" - expect(link_to_gfm(actual, commit_path)).to match('<h1>test</h1>') + expect(link_to_gfm(actual, commit_path)). + to match('<h1>test</h1>') end end @@ -508,16 +513,20 @@ describe GitlabMarkdownHelper do it "should handle references in headers" do actual = "\n# Working around ##{issue.iid}\n## Apply !#{merge_request.iid}" - expect(markdown(actual, {no_header_anchors:true})).to match(%r{<h1[^<]*>Working around <a.+>##{issue.iid}</a></h1>}) - expect(markdown(actual, {no_header_anchors:true})).to match(%r{<h2[^<]*>Apply <a.+>!#{merge_request.iid}</a></h2>}) + expect(markdown(actual, no_header_anchors: true)). + to match(%r{<h1[^<]*>Working around <a.+>##{issue.iid}</a></h1>}) + expect(markdown(actual, no_header_anchors: true)). + to match(%r{<h2[^<]*>Apply <a.+>!#{merge_request.iid}</a></h2>}) end it "should add ids and links to headers" do # Test every rule except nested tags. text = '..Ab_c-d. e..' id = 'ab_c-d-e' - expect(markdown("# #{text}")).to match(%r{<h1 id="#{id}">#{text}<a href="[^"]*##{id}"></a></h1>}) - expect(markdown("# #{text}", {no_header_anchors:true})).to eq("<h1>#{text}</h1>") + expect(markdown("# #{text}")). + to match(%r{<h1 id="#{id}">#{text}<a href="[^"]*##{id}"></a></h1>}) + expect(markdown("# #{text}", {no_header_anchors:true})). + to eq("<h1>#{text}</h1>") id = 'link-text' expect(markdown("# [link text](url) ")).to match( @@ -530,13 +539,16 @@ describe GitlabMarkdownHelper do actual = "\n* dark: ##{issue.iid}\n* light by @#{member.user.username}" - expect(markdown(actual)).to match(%r{<li>dark: <a.+>##{issue.iid}</a></li>}) - expect(markdown(actual)).to match(%r{<li>light by <a.+>@#{member.user.username}</a></li>}) + expect(markdown(actual)). + to match(%r{<li>dark: <a.+>##{issue.iid}</a></li>}) + expect(markdown(actual)). + to match(%r{<li>light by <a.+>@#{member.user.username}</a></li>}) end it "should not link the apostrophe to issue 39" do project.team << [user, :master] - allow(project.issues).to receive(:where).with(iid: '39').and_return([issue]) + allow(project.issues). + to receive(:where).with(iid: '39').and_return([issue]) actual = "Yes, it is @#{member.user.username}'s task." expected = /Yes, it is <a.+>@#{member.user.username}<\/a>'s task/ @@ -545,7 +557,8 @@ describe GitlabMarkdownHelper do it "should not link the apostrophe to issue 39 in code blocks" do project.team << [user, :master] - allow(project.issues).to receive(:where).with(iid: '39').and_return([issue]) + allow(project.issues). + to receive(:where).with(iid: '39').and_return([issue]) actual = "Yes, `it is @#{member.user.username}'s task.`" expected = /Yes, <code>it is @gfm\'s task.<\/code>/ @@ -555,7 +568,8 @@ describe GitlabMarkdownHelper do it "should handle references in <em>" do actual = "Apply _!#{merge_request.iid}_ ASAP" - expect(markdown(actual)).to match(%r{Apply <em><a.+>!#{merge_request.iid}</a></em>}) + expect(markdown(actual)). + to match(%r{Apply <em><a.+>!#{merge_request.iid}</a></em>}) end it "should handle tables" do @@ -572,8 +586,10 @@ describe GitlabMarkdownHelper do target_html = "<pre class=\"code highlight white plaintext\"><code>some code from $40\nhere too\n</code></pre>\n" - expect(helper.markdown("\n some code from $#{snippet.id}\n here too\n")).to eq(target_html) - expect(helper.markdown("\n```\nsome code from $#{snippet.id}\nhere too\n```\n")).to eq(target_html) + expect(helper.markdown("\n some code from $#{snippet.id}\n here too\n")). + to eq(target_html) + expect(helper.markdown("\n```\nsome code from $#{snippet.id}\nhere too\n```\n")). + to eq(target_html) end it "should leave inline code untouched" do