Commit ec4fca69 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch 'active-tense-test-coverage' into 'master'

Active tense test coverage

Fixes all tests to use active tense and follow [Four Phase Test]( https://robots.thoughtbot.com/four-phase-test#all-together)

See merge request !5233
parents 551ffc0a 1d268a89
...@@ -39,7 +39,7 @@ describe Admin::UsersController do ...@@ -39,7 +39,7 @@ describe Admin::UsersController do
user.ldap_block user.ldap_block
end end
it 'will not unblock user' do it 'does not unblock user' do
put :unblock, id: user.username put :unblock, id: user.username
user.reload user.reload
expect(user.blocked?).to be_truthy expect(user.blocked?).to be_truthy
......
...@@ -5,7 +5,7 @@ describe ApplicationController do ...@@ -5,7 +5,7 @@ describe ApplicationController do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:controller) { ApplicationController.new } let(:controller) { ApplicationController.new }
it 'should redirect if the user is over their password expiry' do it 'redirects if the user is over their password expiry' do
user.password_expires_at = Time.new(2002) user.password_expires_at = Time.new(2002)
expect(user.ldap_user?).to be_falsey expect(user.ldap_user?).to be_falsey
allow(controller).to receive(:current_user).and_return(user) allow(controller).to receive(:current_user).and_return(user)
...@@ -14,7 +14,7 @@ describe ApplicationController do ...@@ -14,7 +14,7 @@ describe ApplicationController do
controller.send(:check_password_expiration) controller.send(:check_password_expiration)
end end
it 'should not redirect if the user is under their password expiry' do it 'does not redirect if the user is under their password expiry' do
user.password_expires_at = Time.now + 20010101 user.password_expires_at = Time.now + 20010101
expect(user.ldap_user?).to be_falsey expect(user.ldap_user?).to be_falsey
allow(controller).to receive(:current_user).and_return(user) allow(controller).to receive(:current_user).and_return(user)
...@@ -22,7 +22,7 @@ describe ApplicationController do ...@@ -22,7 +22,7 @@ describe ApplicationController do
controller.send(:check_password_expiration) controller.send(:check_password_expiration)
end end
it 'should not redirect if the user is over their password expiry but they are an ldap user' do it 'does not redirect if the user is over their password expiry but they are an ldap user' do
user.password_expires_at = Time.new(2002) user.password_expires_at = Time.new(2002)
allow(user).to receive(:ldap_user?).and_return(true) allow(user).to receive(:ldap_user?).and_return(true)
allow(controller).to receive(:current_user).and_return(user) allow(controller).to receive(:current_user).and_return(user)
......
...@@ -9,7 +9,7 @@ describe Groups::AvatarsController do ...@@ -9,7 +9,7 @@ describe Groups::AvatarsController do
sign_in(user) sign_in(user)
end end
it 'destroy should remove avatar from DB' do it 'removes avatar from DB calling destroy' do
delete :destroy, group_id: group.path delete :destroy, group_id: group.path
@group = assigns(:group) @group = assigns(:group)
expect(@group.avatar.present?).to be_falsey expect(@group.avatar.present?).to be_falsey
......
...@@ -15,7 +15,7 @@ describe Groups::MilestonesController do ...@@ -15,7 +15,7 @@ describe Groups::MilestonesController do
end end
describe "#create" do describe "#create" do
it "should create group milestone with Chinese title" do it "creates group milestone with Chinese title" do
post :create, post :create,
group_id: group.id, group_id: group.id,
milestone: { project_ids: [project.id, project2.id], title: title } milestone: { project_ids: [project.id, project2.id], title: title }
......
...@@ -8,7 +8,7 @@ describe Profiles::AvatarsController do ...@@ -8,7 +8,7 @@ describe Profiles::AvatarsController do
controller.instance_variable_set(:@user, user) controller.instance_variable_set(:@user, user)
end end
it 'destroy should remove avatar from DB' do it 'removes avatar from DB by calling destroy' do
delete :destroy delete :destroy
@user = assigns(:user) @user = assigns(:user)
expect(@user.avatar.present?).to be_falsey expect(@user.avatar.present?).to be_falsey
......
...@@ -6,7 +6,7 @@ describe Profiles::KeysController do ...@@ -6,7 +6,7 @@ describe Profiles::KeysController do
describe '#new' do describe '#new' do
before { sign_in(user) } before { sign_in(user) }
it 'redirect to #index' do it 'redirects to #index' do
get :new get :new
expect(response).to redirect_to(profile_keys_path) expect(response).to redirect_to(profile_keys_path)
...@@ -15,7 +15,7 @@ describe Profiles::KeysController do ...@@ -15,7 +15,7 @@ describe Profiles::KeysController do
describe "#get_keys" do describe "#get_keys" do
describe "non existant user" do describe "non existant user" do
it "should generally not work" do it "does not generally work" do
get :get_keys, username: 'not-existent' get :get_keys, username: 'not-existent'
expect(response).not_to be_success expect(response).not_to be_success
...@@ -23,19 +23,19 @@ describe Profiles::KeysController do ...@@ -23,19 +23,19 @@ describe Profiles::KeysController do
end end
describe "user with no keys" do describe "user with no keys" do
it "should generally work" do it "does generally work" do
get :get_keys, username: user.username get :get_keys, username: user.username
expect(response).to be_success expect(response).to be_success
end end
it "should render all keys separated with a new line" do it "renders all keys separated with a new line" do
get :get_keys, username: user.username get :get_keys, username: user.username
expect(response.body).to eq("") expect(response.body).to eq("")
end end
it "should respond with text/plain content type" do it "responds with text/plain content type" do
get :get_keys, username: user.username get :get_keys, username: user.username
expect(response.content_type).to eq("text/plain") expect(response.content_type).to eq("text/plain")
end end
...@@ -47,13 +47,13 @@ describe Profiles::KeysController do ...@@ -47,13 +47,13 @@ describe Profiles::KeysController do
user.keys << create(:another_key) user.keys << create(:another_key)
end end
it "should generally work" do it "does generally work" do
get :get_keys, username: user.username get :get_keys, username: user.username
expect(response).to be_success expect(response).to be_success
end end
it "should render all keys separated with a new line" do it "renders all keys separated with a new line" do
get :get_keys, username: user.username get :get_keys, username: user.username
expect(response.body).not_to eq("") expect(response.body).not_to eq("")
...@@ -65,13 +65,13 @@ describe Profiles::KeysController do ...@@ -65,13 +65,13 @@ describe Profiles::KeysController do
expect(response.body).to match(/AQDmTillFzNTrrGgwaCKaSj/) expect(response.body).to match(/AQDmTillFzNTrrGgwaCKaSj/)
end end
it "should not render the comment of the key" do it "does not render the comment of the key" do
get :get_keys, username: user.username get :get_keys, username: user.username
expect(response.body).not_to match(/dummy@gitlab.com/) expect(response.body).not_to match(/dummy@gitlab.com/)
end end
it "should respond with text/plain content type" do it "responds with text/plain content type" do
get :get_keys, username: user.username get :get_keys, username: user.username
expect(response.content_type).to eq("text/plain") expect(response.content_type).to eq("text/plain")
end end
......
...@@ -10,7 +10,7 @@ describe Projects::AvatarsController do ...@@ -10,7 +10,7 @@ describe Projects::AvatarsController do
controller.instance_variable_set(:@project, project) controller.instance_variable_set(:@project, project)
end end
it 'destroy should remove avatar from DB' do it 'removes avatar from DB by calling destroy' do
delete :destroy, namespace_id: project.namespace.id, project_id: project.id delete :destroy, namespace_id: project.namespace.id, project_id: project.id
expect(project.avatar.present?).to be_falsey expect(project.avatar.present?).to be_falsey
expect(project).to be_valid expect(project).to be_valid
......
...@@ -47,25 +47,25 @@ describe Projects::CommitController do ...@@ -47,25 +47,25 @@ describe Projects::CommitController do
end end
shared_examples "export as" do |format| shared_examples "export as" do |format|
it "should generally work" do it "does generally work" do
go(id: commit.id, format: format) go(id: commit.id, format: format)
expect(response).to be_success expect(response).to be_success
end end
it "should generate it" do it "generates it" do
expect_any_instance_of(Commit).to receive(:"to_#{format}") expect_any_instance_of(Commit).to receive(:"to_#{format}")
go(id: commit.id, format: format) go(id: commit.id, format: format)
end end
it "should render it" do it "renders it" do
go(id: commit.id, format: format) go(id: commit.id, format: format)
expect(response.body).to eq(commit.send(:"to_#{format}")) expect(response.body).to eq(commit.send(:"to_#{format}"))
end end
it "should not escape Html" do it "does not escape Html" do
allow_any_instance_of(Commit).to receive(:"to_#{format}"). allow_any_instance_of(Commit).to receive(:"to_#{format}").
and_return('HTML entities &<>" ') and_return('HTML entities &<>" ')
...@@ -88,7 +88,7 @@ describe Projects::CommitController do ...@@ -88,7 +88,7 @@ describe Projects::CommitController do
expect(response.body).to start_with("diff --git") expect(response.body).to start_with("diff --git")
end end
it "should really only be a git diff without whitespace changes" do it "is only be a git diff without whitespace changes" do
go(id: '66eceea0db202bb39c4e445e8ca28689645366c5', format: format, w: 1) go(id: '66eceea0db202bb39c4e445e8ca28689645366c5', format: format, w: 1)
expect(response.body).to start_with("diff --git") expect(response.body).to start_with("diff --git")
...@@ -103,13 +103,13 @@ describe Projects::CommitController do ...@@ -103,13 +103,13 @@ describe Projects::CommitController do
include_examples "export as", :patch include_examples "export as", :patch
let(:format) { :patch } let(:format) { :patch }
it "should really be a git email patch" do it "is a git email patch" do
go(id: commit.id, format: format) go(id: commit.id, format: format)
expect(response.body).to start_with("From #{commit.id}") expect(response.body).to start_with("From #{commit.id}")
end end
it "should contain a git diff" do it "contains a git diff" do
go(id: commit.id, format: format) go(id: commit.id, format: format)
expect(response.body).to match(/^diff --git/) expect(response.body).to match(/^diff --git/)
...@@ -147,7 +147,7 @@ describe Projects::CommitController do ...@@ -147,7 +147,7 @@ describe Projects::CommitController do
describe 'POST revert' do describe 'POST revert' do
context 'when target branch is not provided' do context 'when target branch is not provided' do
it 'should render the 404 page' do it 'renders the 404 page' do
post(:revert, post(:revert,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
...@@ -159,7 +159,7 @@ describe Projects::CommitController do ...@@ -159,7 +159,7 @@ describe Projects::CommitController do
end end
context 'when the revert was successful' do context 'when the revert was successful' do
it 'should redirect to the commits page' do it 'redirects to the commits page' do
post(:revert, post(:revert,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
...@@ -180,7 +180,7 @@ describe Projects::CommitController do ...@@ -180,7 +180,7 @@ describe Projects::CommitController do
id: commit.id) id: commit.id)
end end
it 'should redirect to the commit page' do it 'redirects to the commit page' do
# Reverting a commit that has been already reverted. # Reverting a commit that has been already reverted.
post(:revert, post(:revert,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
...@@ -196,7 +196,7 @@ describe Projects::CommitController do ...@@ -196,7 +196,7 @@ describe Projects::CommitController do
describe 'POST cherry_pick' do describe 'POST cherry_pick' do
context 'when target branch is not provided' do context 'when target branch is not provided' do
it 'should render the 404 page' do it 'renders the 404 page' do
post(:cherry_pick, post(:cherry_pick,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
...@@ -208,7 +208,7 @@ describe Projects::CommitController do ...@@ -208,7 +208,7 @@ describe Projects::CommitController do
end end
context 'when the cherry-pick was successful' do context 'when the cherry-pick was successful' do
it 'should redirect to the commits page' do it 'redirects to the commits page' do
post(:cherry_pick, post(:cherry_pick,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
...@@ -229,7 +229,7 @@ describe Projects::CommitController do ...@@ -229,7 +229,7 @@ describe Projects::CommitController do
id: master_pickable_commit.id) id: master_pickable_commit.id)
end end
it 'should redirect to the commit page' do it 'redirects to the commit page' do
# Cherry-picking a commit that has been already cherry-picked. # Cherry-picking a commit that has been already cherry-picked.
post(:cherry_pick, post(:cherry_pick,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
......
...@@ -11,7 +11,7 @@ describe Projects::CommitsController do ...@@ -11,7 +11,7 @@ describe Projects::CommitsController do
describe "GET show" do describe "GET show" do
context "as atom feed" do context "as atom feed" do
it "should render as atom" do it "renders as atom" do
get(:show, get(:show,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
......
...@@ -11,7 +11,7 @@ describe Projects::CompareController do ...@@ -11,7 +11,7 @@ describe Projects::CompareController do
project.team << [user, :master] project.team << [user, :master]
end end
it 'compare should show some diffs' do it 'compare shows some diffs' do
get(:show, get(:show,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
...@@ -23,7 +23,7 @@ describe Projects::CompareController do ...@@ -23,7 +23,7 @@ describe Projects::CompareController do
expect(assigns(:commits).length).to be >= 1 expect(assigns(:commits).length).to be >= 1
end end
it 'compare should show some diffs with ignore whitespace change option' do it 'compare shows some diffs with ignore whitespace change option' do
get(:show, get(:show,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
...@@ -41,7 +41,7 @@ describe Projects::CompareController do ...@@ -41,7 +41,7 @@ describe Projects::CompareController do
end end
describe 'non-existent refs' do describe 'non-existent refs' do
it 'invalid source ref' do it 'uses invalid source ref' do
get(:show, get(:show,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
...@@ -53,7 +53,7 @@ describe Projects::CompareController do ...@@ -53,7 +53,7 @@ describe Projects::CompareController do
expect(assigns(:commits)).to eq([]) expect(assigns(:commits)).to eq([])
end end
it 'invalid target ref' do it 'uses invalid target ref' do
get(:show, get(:show,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
......
...@@ -16,7 +16,7 @@ describe Projects::ForksController do ...@@ -16,7 +16,7 @@ describe Projects::ForksController do
context 'when fork is public' do context 'when fork is public' do
before { forked_project.update_attribute(:visibility_level, Project::PUBLIC) } before { forked_project.update_attribute(:visibility_level, Project::PUBLIC) }
it 'should be visible for non logged in users' do it 'is visible for non logged in users' do
get_forks get_forks
expect(assigns[:forks]).to be_present expect(assigns[:forks]).to be_present
...@@ -28,7 +28,7 @@ describe Projects::ForksController do ...@@ -28,7 +28,7 @@ describe Projects::ForksController do
forked_project.update_attributes(visibility_level: Project::PRIVATE, group: group) forked_project.update_attributes(visibility_level: Project::PRIVATE, group: group)
end end
it 'should not be visible for non logged in users' do it 'is not be visible for non logged in users' do
get_forks get_forks
expect(assigns[:forks]).to be_blank expect(assigns[:forks]).to be_blank
...@@ -38,7 +38,7 @@ describe Projects::ForksController do ...@@ -38,7 +38,7 @@ describe Projects::ForksController do
before { sign_in(project.creator) } before { sign_in(project.creator) }
context 'when user is not a Project member neither a group member' do context 'when user is not a Project member neither a group member' do
it 'should not see the Project listed' do it 'does not see the Project listed' do
get_forks get_forks
expect(assigns[:forks]).to be_blank expect(assigns[:forks]).to be_blank
...@@ -48,7 +48,7 @@ describe Projects::ForksController do ...@@ -48,7 +48,7 @@ describe Projects::ForksController do
context 'when user is a member of the Project' do context 'when user is a member of the Project' do
before { forked_project.team << [project.creator, :developer] } before { forked_project.team << [project.creator, :developer] }
it 'should see the project listed' do it 'sees the project listed' do
get_forks get_forks
expect(assigns[:forks]).to be_present expect(assigns[:forks]).to be_present
...@@ -58,7 +58,7 @@ describe Projects::ForksController do ...@@ -58,7 +58,7 @@ describe Projects::ForksController do
context 'when user is a member of the Group' do context 'when user is a member of the Group' do
before { forked_project.group.add_developer(project.creator) } before { forked_project.group.add_developer(project.creator) }
it 'should see the project listed' do it 'sees the project listed' do
get_forks get_forks
expect(assigns[:forks]).to be_present expect(assigns[:forks]).to be_present
......
...@@ -30,7 +30,7 @@ describe Projects::IssuesController do ...@@ -30,7 +30,7 @@ describe Projects::IssuesController do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
end end
it "return 301 if request path doesn't match project path" do it "returns 301 if request path doesn't match project path" do
get :index, namespace_id: project.namespace.path, project_id: project.path.upcase get :index, namespace_id: project.namespace.path, project_id: project.path.upcase
expect(response).to redirect_to(namespace_project_issues_path(project.namespace, project)) expect(response).to redirect_to(namespace_project_issues_path(project.namespace, project))
...@@ -119,21 +119,21 @@ describe Projects::IssuesController do ...@@ -119,21 +119,21 @@ describe Projects::IssuesController do
let!(:request_forgery_timing_attack) { create(:issue, :confidential, project: project, assignee: assignee) } let!(:request_forgery_timing_attack) { create(:issue, :confidential, project: project, assignee: assignee) }
describe 'GET #index' do describe 'GET #index' do
it 'should not list confidential issues for guests' do it 'does not list confidential issues for guests' do
sign_out(:user) sign_out(:user)
get_issues get_issues
expect(assigns(:issues)).to eq [issue] expect(assigns(:issues)).to eq [issue]
end end
it 'should not list confidential issues for non project members' do it 'does not list confidential issues for non project members' do
sign_in(non_member) sign_in(non_member)
get_issues get_issues
expect(assigns(:issues)).to eq [issue] expect(assigns(:issues)).to eq [issue]
end end
it 'should not list confidential issues for project members with guest role' do it 'does not list confidential issues for project members with guest role' do
sign_in(member) sign_in(member)
project.team << [member, :guest] project.team << [member, :guest]
...@@ -142,7 +142,7 @@ describe Projects::IssuesController do ...@@ -142,7 +142,7 @@ describe Projects::IssuesController do
expect(assigns(:issues)).to eq [issue] expect(assigns(:issues)).to eq [issue]
end end
it 'should list confidential issues for author' do it 'lists confidential issues for author' do
sign_in(author) sign_in(author)
get_issues get_issues
...@@ -150,7 +150,7 @@ describe Projects::IssuesController do ...@@ -150,7 +150,7 @@ describe Projects::IssuesController do
expect(assigns(:issues)).not_to include request_forgery_timing_attack expect(assigns(:issues)).not_to include request_forgery_timing_attack
end end
it 'should list confidential issues for assignee' do it 'lists confidential issues for assignee' do
sign_in(assignee) sign_in(assignee)
get_issues get_issues
...@@ -158,7 +158,7 @@ describe Projects::IssuesController do ...@@ -158,7 +158,7 @@ describe Projects::IssuesController do
expect(assigns(:issues)).to include request_forgery_timing_attack expect(assigns(:issues)).to include request_forgery_timing_attack
end end
it 'should list confidential issues for project members' do it 'lists confidential issues for project members' do
sign_in(member) sign_in(member)
project.team << [member, :developer] project.team << [member, :developer]
...@@ -168,7 +168,7 @@ describe Projects::IssuesController do ...@@ -168,7 +168,7 @@ describe Projects::IssuesController do
expect(assigns(:issues)).to include request_forgery_timing_attack expect(assigns(:issues)).to include request_forgery_timing_attack
end end
it 'should list confidential issues for admin' do it 'lists confidential issues for admin' do
sign_in(admin) sign_in(admin)
get_issues get_issues
......
...@@ -36,7 +36,7 @@ describe Projects::MergeRequestsController do ...@@ -36,7 +36,7 @@ describe Projects::MergeRequestsController do
describe "GET show" do describe "GET show" do
shared_examples "export merge as" do |format| shared_examples "export merge as" do |format|
it "should generally work" do it "does generally work" do
get(:show, get(:show,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
...@@ -46,7 +46,7 @@ describe Projects::MergeRequestsController do ...@@ -46,7 +46,7 @@ describe Projects::MergeRequestsController do
expect(response).to be_success expect(response).to be_success
end end
it "should generate it" do it "generates it" do
expect_any_instance_of(MergeRequest).to receive(:"to_#{format}") expect_any_instance_of(MergeRequest).to receive(:"to_#{format}")
get(:show, get(:show,
...@@ -56,7 +56,7 @@ describe Projects::MergeRequestsController do ...@@ -56,7 +56,7 @@ describe Projects::MergeRequestsController do
format: format) format: format)
end end
it "should render it" do it "renders it" do
get(:show, get(:show,
namespace_id: project.namespace.to_param, namespace_id: project.namespace.to_param,
project_id: project.to_param, project_id: project.to_param,
...@@ -66,7 +66,7 @@ describe Projects::MergeRequestsController do ...@@ -66,7 +66,7 @@ describe Projects::MergeRequestsController do
expect(response.body).to eq(merge_request.send(:"to_#{format}").to_s) expect(response.body).to eq(merge_request.send(:"to_#{format}").to_s)
end end
it "should not escape Html" do it "does not escape Html" do
allow_any_instance_of(MergeRequest).to receive(:"to_#{format}"). allow_any_instance_of(MergeRequest).to receive(:"to_#{format}").
and_return('HTML entities &<>" ') and_return('HTML entities &<>" ')
...@@ -118,7 +118,7 @@ describe Projects::MergeRequestsController do ...@@ -118,7 +118,7 @@ describe Projects::MergeRequestsController do
context 'when filtering by opened state' do context 'when filtering by opened state' do
context 'with opened merge requests' do context 'with opened merge requests' do
it 'should list those merge requests' do it 'lists those merge requests' do
get_merge_requests get_merge_requests
expect(assigns(:merge_requests)).to include(merge_request) expect(assigns(:merge_requests)).to include(merge_request)
...@@ -131,7 +131,7 @@ describe Projects::MergeRequestsController do ...@@ -131,7 +131,7 @@ describe Projects::MergeRequestsController do
merge_request.reopen! merge_request.reopen!
end end
it 'should list those merge requests' do it 'lists those merge requests' do
get_merge_requests get_merge_requests
expect(assigns(:merge_requests)).to include(merge_request) expect(assigns(:merge_requests)).to include(merge_request)
......
...@@ -14,7 +14,7 @@ describe Projects::MilestonesController do ...@@ -14,7 +14,7 @@ describe Projects::MilestonesController do
end end
describe "#destroy" do describe "#destroy" do
it "should remove milestone" do it "removes milestone" do
expect(issue.milestone_id).to eq(milestone.id) expect(issue.milestone_id).to eq(milestone.id)
delete :destroy, namespace_id: project.namespace.id, project_id: project.id, id: milestone.iid, format: :js delete :destroy, namespace_id: project.namespace.id, project_id: project.id, id: milestone.iid, format: :js
......
...@@ -3,7 +3,7 @@ require('spec_helper') ...@@ -3,7 +3,7 @@ require('spec_helper')
describe Projects::ProtectedBranchesController do describe Projects::ProtectedBranchesController do
describe "GET #index" do describe "GET #index" do
let(:project) { create(:project_empty_repo, :public) } let(:project) { create(:project_empty_repo, :public) }
it "redirect empty repo to projects page" do it "redirects empty repo to projects page" do
get(:index, namespace_id: project.namespace.to_param, project_id: project.to_param) get(:index, namespace_id: project.namespace.to_param, project_id: project.to_param)
end end
end end
......
...@@ -24,7 +24,7 @@ describe Projects::RawController do ...@@ -24,7 +24,7 @@ describe Projects::RawController do
context 'image header' do context 'image header' do
let(:id) { 'master/files/images/6049019_460s.jpg' } let(:id) { 'master/files/images/6049019_460s.jpg' }
it 'set image content type header' do it 'sets image content type header' do
get(:show, get(:show,
namespace_id: public_project.namespace.to_param, namespace_id: public_project.namespace.to_param,
project_id: public_project.to_param, project_id: public_project.to_param,
......
...@@ -19,7 +19,7 @@ describe Projects::ServicesController do ...@@ -19,7 +19,7 @@ describe Projects::ServicesController do
describe "#test" do describe "#test" do
context 'success' do context 'success' do
it "should redirect and show success message" do it "redirects and show success message" do
expect(service).to receive(:test).and_return({ success: true, result: 'done' }) expect(service).to receive(:test).and_return({ success: true, result: 'done' })
get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html
expect(response.status).to redirect_to('/') expect(response.status).to redirect_to('/')
...@@ -28,7 +28,7 @@ describe Projects::ServicesController do ...@@ -28,7 +28,7 @@ describe Projects::ServicesController do
end end
context 'failure' do context 'failure' do
it "should redirect and show failure message" do it "redirects and show failure message" do
expect(service).to receive(:test).and_return({ success: false, result: 'Bad test' }) expect(service).to receive(:test).and_return({ success: false, result: 'Bad test' })
get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html
expect(response.status).to redirect_to('/') expect(response.status).to redirect_to('/')
......
...@@ -128,7 +128,7 @@ describe ProjectsController do ...@@ -128,7 +128,7 @@ describe ProjectsController do
context "when the url contains .atom" do context "when the url contains .atom" do
let(:public_project_with_dot_atom) { build(:project, :public, name: 'my.atom', path: 'my.atom') } let(:public_project_with_dot_atom) { build(:project, :public, name: 'my.atom', path: 'my.atom') }
it 'expect an error creating the project' do it 'expects an error creating the project' do
expect(public_project_with_dot_atom).not_to be_valid expect(public_project_with_dot_atom).not_to be_valid
end end
end end
...@@ -222,7 +222,7 @@ describe ProjectsController do ...@@ -222,7 +222,7 @@ describe ProjectsController do
create(:forked_project_link, forked_to_project: project_fork) create(:forked_project_link, forked_to_project: project_fork)
end end
it 'should remove fork from project' do it 'removes fork from project' do
delete(:remove_fork, delete(:remove_fork,
namespace_id: project_fork.namespace.to_param, namespace_id: project_fork.namespace.to_param,
id: project_fork.to_param, format: :js) id: project_fork.to_param, format: :js)
...@@ -236,7 +236,7 @@ describe ProjectsController do ...@@ -236,7 +236,7 @@ describe ProjectsController do
context 'when project not forked' do context 'when project not forked' do
let(:unforked_project) { create(:project, namespace: user.namespace) } let(:unforked_project) { create(:project, namespace: user.namespace) }
it 'should do nothing if project was not forked' do it 'does nothing if project was not forked' do
delete(:remove_fork, delete(:remove_fork,
namespace_id: unforked_project.namespace.to_param, namespace_id: unforked_project.namespace.to_param,
id: unforked_project.to_param, format: :js) id: unforked_project.to_param, format: :js)
...@@ -256,7 +256,7 @@ describe ProjectsController do ...@@ -256,7 +256,7 @@ describe ProjectsController do
end end
describe "GET refs" do describe "GET refs" do
it "should get a list of branches and tags" do it "gets a list of branches and tags" do
get :refs, namespace_id: public_project.namespace.path, id: public_project.path get :refs, namespace_id: public_project.namespace.path, id: public_project.path
parsed_body = JSON.parse(response.body) parsed_body = JSON.parse(response.body)
...@@ -265,7 +265,7 @@ describe ProjectsController do ...@@ -265,7 +265,7 @@ describe ProjectsController do
expect(parsed_body["Commits"]).to be_nil expect(parsed_body["Commits"]).to be_nil
end end
it "should get a list of branches, tags and commits" do it "gets a list of branches, tags and commits" do
get :refs, namespace_id: public_project.namespace.path, id: public_project.path, ref: "123456" get :refs, namespace_id: public_project.namespace.path, id: public_project.path, ref: "123456"
parsed_body = JSON.parse(response.body) parsed_body = JSON.parse(response.body)
......
...@@ -9,7 +9,7 @@ describe 'factories' do ...@@ -9,7 +9,7 @@ describe 'factories' do
expect { entity }.not_to raise_error expect { entity }.not_to raise_error
end end
it 'should be valid', if: factory.build_class < ActiveRecord::Base do it 'is valid', if: factory.build_class < ActiveRecord::Base do
expect(entity).to be_valid expect(entity).to be_valid
end end
end end
......
...@@ -11,7 +11,7 @@ describe "Admin::AbuseReports", feature: true, js: true do ...@@ -11,7 +11,7 @@ describe "Admin::AbuseReports", feature: true, js: true do
end end
describe 'in the abuse report view' do describe 'in the abuse report view' do
it "should present a link to the user's profile" do it "presents a link to the user's profile" do
visit admin_abuse_reports_path visit admin_abuse_reports_path
expect(page).to have_link user.name, href: user_path(user) expect(page).to have_link user.name, href: user_path(user)
...@@ -19,7 +19,7 @@ describe "Admin::AbuseReports", feature: true, js: true do ...@@ -19,7 +19,7 @@ describe "Admin::AbuseReports", feature: true, js: true do
end end
describe 'in the profile page of the user' do describe 'in the profile page of the user' do
it 'should show a link to the admin view of the user' do it 'shows a link to the admin view of the user' do
visit user_path(user) visit user_path(user)
expect(page).to have_link '', href: admin_user_path(user) expect(page).to have_link '', href: admin_user_path(user)
......
...@@ -9,7 +9,7 @@ describe "Admin::Hooks", feature: true do ...@@ -9,7 +9,7 @@ describe "Admin::Hooks", feature: true do
end end
describe "GET /admin/hooks" do describe "GET /admin/hooks" do
it "should be ok" do it "is ok" do
visit admin_root_path visit admin_root_path
page.within ".layout-nav" do page.within ".layout-nav" do
...@@ -19,7 +19,7 @@ describe "Admin::Hooks", feature: true do ...@@ -19,7 +19,7 @@ describe "Admin::Hooks", feature: true do
expect(current_path).to eq(admin_hooks_path) expect(current_path).to eq(admin_hooks_path)
end end
it "should have hooks list" do it "has hooks list" do
visit admin_hooks_path visit admin_hooks_path
expect(page).to have_content(@system_hook.url) expect(page).to have_content(@system_hook.url)
end end
...@@ -33,7 +33,7 @@ describe "Admin::Hooks", feature: true do ...@@ -33,7 +33,7 @@ describe "Admin::Hooks", feature: true do
expect { click_button "Add System Hook" }.to change(SystemHook, :count).by(1) expect { click_button "Add System Hook" }.to change(SystemHook, :count).by(1)
end end
it "should open new hook popup" do it "opens new hook popup" do
expect(current_path).to eq(admin_hooks_path) expect(current_path).to eq(admin_hooks_path)
expect(page).to have_content(@url) expect(page).to have_content(@url)
end end
......
...@@ -11,11 +11,11 @@ describe "Admin::Projects", feature: true do ...@@ -11,11 +11,11 @@ describe "Admin::Projects", feature: true do
visit admin_namespaces_projects_path visit admin_namespaces_projects_path
end end
it "should be ok" do it "is ok" do
expect(current_path).to eq(admin_namespaces_projects_path) expect(current_path).to eq(admin_namespaces_projects_path)
end end
it "should have projects list" do it "has projects list" do
expect(page).to have_content(@project.name) expect(page).to have_content(@project.name)
end end
end end
...@@ -26,7 +26,7 @@ describe "Admin::Projects", feature: true do ...@@ -26,7 +26,7 @@ describe "Admin::Projects", feature: true do
click_link "#{@project.name}" click_link "#{@project.name}"
end end
it "should have project info" do it "has project info" do
expect(page).to have_content(@project.path) expect(page).to have_content(@project.path)
expect(page).to have_content(@project.name) expect(page).to have_content(@project.name)
end end
......
...@@ -8,11 +8,11 @@ describe "Admin::Users", feature: true do ...@@ -8,11 +8,11 @@ describe "Admin::Users", feature: true do
visit admin_users_path visit admin_users_path
end end
it "should be ok" do it "is ok" do
expect(current_path).to eq(admin_users_path) expect(current_path).to eq(admin_users_path)
end end
it "should have users list" do it "has users list" do
expect(page).to have_content(@user.email) expect(page).to have_content(@user.email)
expect(page).to have_content(@user.name) expect(page).to have_content(@user.name)
end end
...@@ -66,11 +66,11 @@ describe "Admin::Users", feature: true do ...@@ -66,11 +66,11 @@ describe "Admin::Users", feature: true do
fill_in "user_email", with: "bigbang@mail.com" fill_in "user_email", with: "bigbang@mail.com"
end end
it "should create new user" do it "creates new user" do
expect { click_button "Create user" }.to change {User.count}.by(1) expect { click_button "Create user" }.to change {User.count}.by(1)
end end
it "should apply defaults to user" do it "applies defaults to user" do
click_button "Create user" click_button "Create user"
user = User.find_by(username: 'bang') user = User.find_by(username: 'bang')
expect(user.projects_limit). expect(user.projects_limit).
...@@ -79,20 +79,20 @@ describe "Admin::Users", feature: true do ...@@ -79,20 +79,20 @@ describe "Admin::Users", feature: true do
to eq(Gitlab.config.gitlab.default_can_create_group) to eq(Gitlab.config.gitlab.default_can_create_group)
end end
it "should create user with valid data" do it "creates user with valid data" do
click_button "Create user" click_button "Create user"
user = User.find_by(username: 'bang') user = User.find_by(username: 'bang')
expect(user.name).to eq('Big Bang') expect(user.name).to eq('Big Bang')
expect(user.email).to eq('bigbang@mail.com') expect(user.email).to eq('bigbang@mail.com')
end end
it "should call send mail" do it "calls send mail" do
expect_any_instance_of(NotificationService).to receive(:new_user) expect_any_instance_of(NotificationService).to receive(:new_user)
click_button "Create user" click_button "Create user"
end end
it "should send valid email to user with email & password" do it "sends valid email to user with email & password" do
perform_enqueued_jobs do perform_enqueued_jobs do
click_button "Create user" click_button "Create user"
end end
...@@ -106,7 +106,7 @@ describe "Admin::Users", feature: true do ...@@ -106,7 +106,7 @@ describe "Admin::Users", feature: true do
end end
describe "GET /admin/users/:id" do describe "GET /admin/users/:id" do
it "should have user info" do it "has user info" do
visit admin_users_path visit admin_users_path
click_link @user.name click_link @user.name
...@@ -123,13 +123,13 @@ describe "Admin::Users", feature: true do ...@@ -123,13 +123,13 @@ describe "Admin::Users", feature: true do
expect(page).to have_content('Impersonate') expect(page).to have_content('Impersonate')
end end
it 'should not show impersonate button for admin itself' do it 'does not show impersonate button for admin itself' do
visit admin_user_path(@user) visit admin_user_path(@user)
expect(page).not_to have_content('Impersonate') expect(page).not_to have_content('Impersonate')
end end
it 'should not show impersonate button for blocked user' do it 'does not show impersonate button for blocked user' do
another_user.block another_user.block
visit admin_user_path(another_user) visit admin_user_path(another_user)
...@@ -153,7 +153,7 @@ describe "Admin::Users", feature: true do ...@@ -153,7 +153,7 @@ describe "Admin::Users", feature: true do
expect(icon).not_to eql nil expect(icon).not_to eql nil
end end
it 'can log out of impersonated user back to original user' do it 'logs out of impersonated user back to original user' do
find(:css, 'li.impersonation a').click find(:css, 'li.impersonation a').click
expect(page.find(:css, '.header-user .profile-link')['data-user']).to eql(@user.username) expect(page.find(:css, '.header-user .profile-link')['data-user']).to eql(@user.username)
...@@ -197,7 +197,7 @@ describe "Admin::Users", feature: true do ...@@ -197,7 +197,7 @@ describe "Admin::Users", feature: true do
click_link "edit_user_#{@simple_user.id}" click_link "edit_user_#{@simple_user.id}"
end end
it "should have user edit page" do it "has user edit page" do
expect(page).to have_content('Name') expect(page).to have_content('Name')
expect(page).to have_content('Password') expect(page).to have_content('Password')
end end
...@@ -212,12 +212,12 @@ describe "Admin::Users", feature: true do ...@@ -212,12 +212,12 @@ describe "Admin::Users", feature: true do
click_button "Save changes" click_button "Save changes"
end end
it "should show page with new data" do it "shows page with new data" do
expect(page).to have_content('bigbang@mail.com') expect(page).to have_content('bigbang@mail.com')
expect(page).to have_content('Big Bang') expect(page).to have_content('Big Bang')
end end
it "should change user entry" do it "changes user entry" do
@simple_user.reload @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 expect(@simple_user.is_admin?).to be_truthy
......
...@@ -5,7 +5,7 @@ describe "Dashboard Feed", feature: true do ...@@ -5,7 +5,7 @@ describe "Dashboard Feed", feature: true do
let!(:user) { create(:user, name: "Jonh") } let!(:user) { create(:user, name: "Jonh") }
context "projects atom feed via private token" do context "projects atom feed via private token" do
it "should render projects atom feed" do it "renders projects atom feed" do
visit dashboard_projects_path(:atom, private_token: user.private_token) visit dashboard_projects_path(:atom, private_token: user.private_token)
expect(body).to have_selector('feed title') expect(body).to have_selector('feed title')
end end
...@@ -23,11 +23,11 @@ describe "Dashboard Feed", feature: true do ...@@ -23,11 +23,11 @@ describe "Dashboard Feed", feature: true do
visit dashboard_projects_path(:atom, private_token: user.private_token) visit dashboard_projects_path(:atom, private_token: user.private_token)
end end
it "should have issue opened event" do it "has issue opened event" do
expect(body).to have_content("#{user.name} opened issue ##{issue.iid}") expect(body).to have_content("#{user.name} opened issue ##{issue.iid}")
end end
it "should have issue comment event" do it "has issue comment event" do
expect(body). expect(body).
to have_content("#{user.name} commented on issue ##{issue.iid}") to have_content("#{user.name} commented on issue ##{issue.iid}")
end end
......
...@@ -9,7 +9,7 @@ describe 'Issues Feed', feature: true do ...@@ -9,7 +9,7 @@ describe 'Issues Feed', feature: true do
before { project.team << [user, :developer] } before { project.team << [user, :developer] }
context 'when authenticated' do context 'when authenticated' do
it 'should render atom feed' do it 'renders atom feed' do
login_with user login_with user
visit namespace_project_issues_path(project.namespace, project, :atom) visit namespace_project_issues_path(project.namespace, project, :atom)
...@@ -22,7 +22,7 @@ describe 'Issues Feed', feature: true do ...@@ -22,7 +22,7 @@ describe 'Issues Feed', feature: true do
end end
context 'when authenticated via private token' do context 'when authenticated via private token' do
it 'should render atom feed' do it 'renders atom feed' do
visit namespace_project_issues_path(project.namespace, project, :atom, visit namespace_project_issues_path(project.namespace, project, :atom,
private_token: user.private_token) private_token: user.private_token)
......
...@@ -5,7 +5,7 @@ describe "User Feed", feature: true do ...@@ -5,7 +5,7 @@ describe "User Feed", feature: true do
let!(:user) { create(:user) } 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 it "renders user atom feed" do
visit user_path(user, :atom, private_token: user.private_token) 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
...@@ -43,24 +43,24 @@ describe "User Feed", feature: true do ...@@ -43,24 +43,24 @@ describe "User Feed", feature: true do
visit user_path(user, :atom, private_token: user.private_token) visit user_path(user, :atom, private_token: user.private_token)
end end
it 'should have issue opened event' do it 'has issue opened event' do
expect(body).to have_content("#{safe_name} opened issue ##{issue.iid}") expect(body).to have_content("#{safe_name} opened issue ##{issue.iid}")
end end
it 'should have issue comment event' do it 'has issue comment event' do
expect(body). expect(body).
to have_content("#{safe_name} commented on issue ##{issue.iid}") to have_content("#{safe_name} commented on issue ##{issue.iid}")
end end
it 'should have XHTML summaries in issue descriptions' do it 'has XHTML summaries in issue descriptions' do
expect(body).to match /we have a bug!<\/p>\n\n<hr ?\/>\n\n<p>I guess/ expect(body).to match /we have a bug!<\/p>\n\n<hr ?\/>\n\n<p>I guess/
end end
it 'should have XHTML summaries in notes' do it 'has XHTML summaries in notes' do
expect(body).to match /Bug confirmed <img[^>]*\/>/ expect(body).to match /Bug confirmed <img[^>]*\/>/
end end
it 'should have XHTML summaries in merge request descriptions' do it 'has XHTML summaries in merge request descriptions' do
expect(body).to match /Here is the fix: <\/p><div[^>]*><a[^>]*><img[^>]*\/><\/a><\/div>/ expect(body).to match /Here is the fix: <\/p><div[^>]*><a[^>]*><img[^>]*\/><\/a><\/div>/
end end
end end
......
...@@ -17,7 +17,7 @@ describe 'CI Lint' do ...@@ -17,7 +17,7 @@ describe 'CI Lint' do
File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml'))
end end
it 'Yaml parsing' do it 'parses Yaml' do
within "table" do within "table" do
expect(page).to have_content('Job - rspec') expect(page).to have_content('Job - rspec')
expect(page).to have_content('Job - spinach') expect(page).to have_content('Job - spinach')
......
...@@ -52,7 +52,7 @@ describe 'Commits' do ...@@ -52,7 +52,7 @@ describe 'Commits' do
visit namespace_project_commits_path(project.namespace, project, :master) visit namespace_project_commits_path(project.namespace, project, :master)
end end
it 'should show build status' do it 'shows build status' do
page.within("//li[@id='commit-#{pipeline.short_sha}']") do page.within("//li[@id='commit-#{pipeline.short_sha}']") do
expect(page).to have_css(".ci-status-link") expect(page).to have_css(".ci-status-link")
end end
......
...@@ -11,11 +11,11 @@ describe "Compare", js: true do ...@@ -11,11 +11,11 @@ describe "Compare", js: true do
end end
describe "branches" do describe "branches" do
it "should pre-populate fields" do it "pre-populates fields" do
expect(page.find_field("from").value).to eq("master") expect(page.find_field("from").value).to eq("master")
end end
it "should compare branches" do it "compares branches" do
fill_in "from", with: "fea" fill_in "from", with: "fea"
find("#from").click find("#from").click
...@@ -28,7 +28,7 @@ describe "Compare", js: true do ...@@ -28,7 +28,7 @@ describe "Compare", js: true do
end end
describe "tags" do describe "tags" do
it "should compare tags" do it "compares tags" do
fill_in "from", with: "v1.0" fill_in "from", with: "v1.0"
find("#from").click find("#from").click
......
...@@ -16,7 +16,7 @@ describe 'Dashboard > label filter', feature: true, js: true do ...@@ -16,7 +16,7 @@ describe 'Dashboard > label filter', feature: true, js: true do
end end
context 'duplicate labels' do context 'duplicate labels' do
it 'should remove duplicate labels' do it 'removes duplicate labels' do
page.within('.labels-filter') do page.within('.labels-filter') do
click_button 'Label' click_button 'Label'
end end
......
...@@ -16,7 +16,7 @@ describe "Dashboard Issues filtering", feature: true, js: true do ...@@ -16,7 +16,7 @@ describe "Dashboard Issues filtering", feature: true, js: true do
visit_issues visit_issues
end end
it 'should show all issues with no milestone' do it 'shows all issues with no milestone' do
show_milestone_dropdown show_milestone_dropdown
click_link 'No Milestone' click_link 'No Milestone'
...@@ -24,7 +24,7 @@ describe "Dashboard Issues filtering", feature: true, js: true do ...@@ -24,7 +24,7 @@ describe "Dashboard Issues filtering", feature: true, js: true do
expect(page).to have_selector('.issue', count: 1) expect(page).to have_selector('.issue', count: 1)
end end
it 'should show all issues with any milestone' do it 'shows all issues with any milestone' do
show_milestone_dropdown show_milestone_dropdown
click_link 'Any Milestone' click_link 'Any Milestone'
...@@ -32,7 +32,7 @@ describe "Dashboard Issues filtering", feature: true, js: true do ...@@ -32,7 +32,7 @@ describe "Dashboard Issues filtering", feature: true, js: true do
expect(page).to have_selector('.issue', count: 2) expect(page).to have_selector('.issue', count: 2)
end end
it 'should show all issues with the selected milestone' do it 'shows all issues with the selected milestone' do
show_milestone_dropdown show_milestone_dropdown
page.within '.dropdown-content' do page.within '.dropdown-content' do
......
...@@ -23,25 +23,25 @@ describe "GitLab Flavored Markdown", feature: true do ...@@ -23,25 +23,25 @@ describe "GitLab Flavored Markdown", feature: true do
end end
describe "for commits" do describe "for commits" do
it "should render title in commits#index" do it "renders title in commits#index" do
visit namespace_project_commits_path(project.namespace, project, 'master', limit: 1) visit namespace_project_commits_path(project.namespace, project, 'master', limit: 1)
expect(page).to have_link(issue.to_reference) expect(page).to have_link(issue.to_reference)
end end
it "should render title in commits#show" do it "renders title in commits#show" do
visit namespace_project_commit_path(project.namespace, project, commit) visit namespace_project_commit_path(project.namespace, project, commit)
expect(page).to have_link(issue.to_reference) expect(page).to have_link(issue.to_reference)
end end
it "should render description in commits#show" do it "renders description in commits#show" do
visit namespace_project_commit_path(project.namespace, project, commit) visit namespace_project_commit_path(project.namespace, project, commit)
expect(page).to have_link(fred.to_reference) expect(page).to have_link(fred.to_reference)
end end
it "should render title in repositories#branches" do it "renders title in repositories#branches" do
visit namespace_project_branches_path(project.namespace, project) visit namespace_project_branches_path(project.namespace, project)
expect(page).to have_link(issue.to_reference) expect(page).to have_link(issue.to_reference)
...@@ -62,19 +62,19 @@ describe "GitLab Flavored Markdown", feature: true do ...@@ -62,19 +62,19 @@ describe "GitLab Flavored Markdown", feature: true do
description: "ask #{fred.to_reference} for details") description: "ask #{fred.to_reference} for details")
end end
it "should render subject in issues#index" do it "renders subject in issues#index" do
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
expect(page).to have_link(@other_issue.to_reference) expect(page).to have_link(@other_issue.to_reference)
end end
it "should render subject in issues#show" do it "renders subject in issues#show" do
visit namespace_project_issue_path(project.namespace, project, @issue) visit namespace_project_issue_path(project.namespace, project, @issue)
expect(page).to have_link(@other_issue.to_reference) expect(page).to have_link(@other_issue.to_reference)
end end
it "should render details in issues#show" do it "renders details in issues#show" do
visit namespace_project_issue_path(project.namespace, project, @issue) visit namespace_project_issue_path(project.namespace, project, @issue)
expect(page).to have_link(fred.to_reference) expect(page).to have_link(fred.to_reference)
...@@ -86,13 +86,13 @@ describe "GitLab Flavored Markdown", feature: true do ...@@ -86,13 +86,13 @@ describe "GitLab Flavored Markdown", feature: true do
@merge_request = create(:merge_request, source_project: project, target_project: project, title: "fix #{issue.to_reference}") @merge_request = create(:merge_request, source_project: project, target_project: project, title: "fix #{issue.to_reference}")
end end
it "should render title in merge_requests#index" do it "renders title in merge_requests#index" do
visit namespace_project_merge_requests_path(project.namespace, project) visit namespace_project_merge_requests_path(project.namespace, project)
expect(page).to have_link(issue.to_reference) expect(page).to have_link(issue.to_reference)
end end
it "should render title in merge_requests#show" do it "renders title in merge_requests#show" do
visit namespace_project_merge_request_path(project.namespace, project, @merge_request) visit namespace_project_merge_request_path(project.namespace, project, @merge_request)
expect(page).to have_link(issue.to_reference) expect(page).to have_link(issue.to_reference)
...@@ -107,19 +107,19 @@ describe "GitLab Flavored Markdown", feature: true do ...@@ -107,19 +107,19 @@ describe "GitLab Flavored Markdown", feature: true do
description: "ask #{fred.to_reference} for details") description: "ask #{fred.to_reference} for details")
end end
it "should render title in milestones#index" do it "renders title in milestones#index" do
visit namespace_project_milestones_path(project.namespace, project) visit namespace_project_milestones_path(project.namespace, project)
expect(page).to have_link(issue.to_reference) expect(page).to have_link(issue.to_reference)
end end
it "should render title in milestones#show" do it "renders title in milestones#show" do
visit namespace_project_milestone_path(project.namespace, project, @milestone) visit namespace_project_milestone_path(project.namespace, project, @milestone)
expect(page).to have_link(issue.to_reference) expect(page).to have_link(issue.to_reference)
end end
it "should render description in milestones#show" do it "renders description in milestones#show" do
visit namespace_project_milestone_path(project.namespace, project, @milestone) visit namespace_project_milestone_path(project.namespace, project, @milestone)
expect(page).to have_link(fred.to_reference) expect(page).to have_link(fred.to_reference)
......
...@@ -5,7 +5,7 @@ describe 'Help Pages', feature: true do ...@@ -5,7 +5,7 @@ describe 'Help Pages', feature: true do
before do before do
login_as :user login_as :user
end end
it 'replace the variable $your_email with the email of the user' do it 'replaces the variable $your_email with the email of the user' do
visit help_page_path('ssh/README') visit help_page_path('ssh/README')
expect(page).to have_content("ssh-keygen -t rsa -C \"#{@user.email}\"") expect(page).to have_content("ssh-keygen -t rsa -C \"#{@user.email}\"")
end end
......
...@@ -21,32 +21,32 @@ describe 'Awards Emoji', feature: true do ...@@ -21,32 +21,32 @@ describe 'Awards Emoji', feature: true do
visit namespace_project_issue_path(project.namespace, project, issue) visit namespace_project_issue_path(project.namespace, project, issue)
end end
it 'should increment the thumbsdown emoji', js: true do it 'increments the thumbsdown emoji', js: true do
find('[data-emoji="thumbsdown"]').click find('[data-emoji="thumbsdown"]').click
sleep 2 sleep 2
expect(thumbsdown_emoji).to have_text("1") expect(thumbsdown_emoji).to have_text("1")
end end
context 'click the thumbsup emoji' do context 'click the thumbsup emoji' do
it 'should increment the thumbsup emoji', js: true do it 'increments the thumbsup emoji', js: true do
find('[data-emoji="thumbsup"]').click find('[data-emoji="thumbsup"]').click
sleep 2 sleep 2
expect(thumbsup_emoji).to have_text("1") expect(thumbsup_emoji).to have_text("1")
end end
it 'should decrement the thumbsdown emoji', js: true do it 'decrements the thumbsdown emoji', js: true do
expect(thumbsdown_emoji).to have_text("0") expect(thumbsdown_emoji).to have_text("0")
end end
end end
context 'click the thumbsdown emoji' do context 'click the thumbsdown emoji' do
it 'should increment the thumbsdown emoji', js: true do it 'increments the thumbsdown emoji', js: true do
find('[data-emoji="thumbsdown"]').click find('[data-emoji="thumbsdown"]').click
sleep 2 sleep 2
expect(thumbsdown_emoji).to have_text("1") expect(thumbsdown_emoji).to have_text("1")
end end
it 'should decrement the thumbsup emoji', js: true do it 'decrements the thumbsup emoji', js: true do
expect(thumbsup_emoji).to have_text("0") expect(thumbsup_emoji).to have_text("0")
end end
end end
......
...@@ -11,7 +11,7 @@ feature 'Issue awards', js: true, feature: true do ...@@ -11,7 +11,7 @@ feature 'Issue awards', js: true, feature: true do
visit namespace_project_issue_path(project.namespace, project, issue) visit namespace_project_issue_path(project.namespace, project, issue)
end end
it 'should add award to issue' do it 'adds award to issue' do
first('.js-emoji-btn').click first('.js-emoji-btn').click
expect(page).to have_selector('.js-emoji-btn.active') expect(page).to have_selector('.js-emoji-btn.active')
expect(first('.js-emoji-btn')).to have_content '1' expect(first('.js-emoji-btn')).to have_content '1'
...@@ -20,7 +20,7 @@ feature 'Issue awards', js: true, feature: true do ...@@ -20,7 +20,7 @@ feature 'Issue awards', js: true, feature: true do
expect(first('.js-emoji-btn')).to have_content '1' expect(first('.js-emoji-btn')).to have_content '1'
end end
it 'should remove award from issue' do it 'removes award from issue' do
first('.js-emoji-btn').click first('.js-emoji-btn').click
find('.js-emoji-btn.active').click find('.js-emoji-btn.active').click
expect(first('.js-emoji-btn')).to have_content '0' expect(first('.js-emoji-btn')).to have_content '0'
...@@ -29,7 +29,7 @@ feature 'Issue awards', js: true, feature: true do ...@@ -29,7 +29,7 @@ feature 'Issue awards', js: true, feature: true do
expect(first('.js-emoji-btn')).to have_content '0' expect(first('.js-emoji-btn')).to have_content '0'
end end
it 'should only have one menu on the page' do it 'only has one menu on the page' do
first('.js-add-award').click first('.js-add-award').click
expect(page).to have_selector('.emoji-menu') expect(page).to have_selector('.emoji-menu')
...@@ -42,7 +42,7 @@ feature 'Issue awards', js: true, feature: true do ...@@ -42,7 +42,7 @@ feature 'Issue awards', js: true, feature: true do
visit namespace_project_issue_path(project.namespace, project, issue) visit namespace_project_issue_path(project.namespace, project, issue)
end end
it 'should not see award menu button' do it 'does not see award menu button' do
expect(page).not_to have_selector('.js-award-holder') expect(page).not_to have_selector('.js-award-holder')
end end
end end
......
...@@ -175,7 +175,7 @@ feature 'Issues > Labels bulk assignment', feature: true do ...@@ -175,7 +175,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
end end
it 'labels are kept' do it 'keeps labels' do
expect(find("#issue_#{issue1.id}")).to have_content 'bug' expect(find("#issue_#{issue1.id}")).to have_content 'bug'
expect(find("#issue_#{issue2.id}")).to have_content 'feature' expect(find("#issue_#{issue2.id}")).to have_content 'feature'
...@@ -197,7 +197,7 @@ feature 'Issues > Labels bulk assignment', feature: true do ...@@ -197,7 +197,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
end end
it 'existing label is kept and new label is present' do it 'keeps existing label and new label is present' do
expect(find("#issue_#{issue1.id}")).to have_content 'bug' expect(find("#issue_#{issue1.id}")).to have_content 'bug'
check 'check_all_issues' check 'check_all_issues'
...@@ -222,7 +222,7 @@ feature 'Issues > Labels bulk assignment', feature: true do ...@@ -222,7 +222,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
end end
it 'existing label is kept and new label is present' do it 'keeps existing label and new label is present' do
expect(find("#issue_#{issue1.id}")).to have_content 'bug' expect(find("#issue_#{issue1.id}")).to have_content 'bug'
expect(find("#issue_#{issue1.id}")).to have_content 'bug' expect(find("#issue_#{issue1.id}")).to have_content 'bug'
expect(find("#issue_#{issue2.id}")).to have_content 'feature' expect(find("#issue_#{issue2.id}")).to have_content 'feature'
...@@ -252,7 +252,7 @@ feature 'Issues > Labels bulk assignment', feature: true do ...@@ -252,7 +252,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
end end
it 'labels are kept' do it 'keeps labels' do
expect(find("#issue_#{issue1.id}")).to have_content 'bug' expect(find("#issue_#{issue1.id}")).to have_content 'bug'
expect(find("#issue_#{issue1.id}")).to have_content 'First Release' expect(find("#issue_#{issue1.id}")).to have_content 'First Release'
expect(find("#issue_#{issue2.id}")).to have_content 'feature' expect(find("#issue_#{issue2.id}")).to have_content 'feature'
......
...@@ -37,25 +37,25 @@ feature 'Issue filtering by Labels', feature: true do ...@@ -37,25 +37,25 @@ feature 'Issue filtering by Labels', feature: true do
wait_for_ajax wait_for_ajax
end end
it 'should show issue "Bugfix1" and "Bugfix2" in issues list' do it 'shows issue "Bugfix1" and "Bugfix2" in issues list' do
expect(page).to have_content "Bugfix1" expect(page).to have_content "Bugfix1"
expect(page).to have_content "Bugfix2" expect(page).to have_content "Bugfix2"
end end
it 'should not show "Feature1" in issues list' do it 'does not show "Feature1" in issues list' do
expect(page).not_to have_content "Feature1" expect(page).not_to have_content "Feature1"
end end
it 'should show label "bug" in filtered-labels' do it 'shows label "bug" in filtered-labels' do
expect(find('.filtered-labels')).to have_content "bug" expect(find('.filtered-labels')).to have_content "bug"
end end
it 'should not show label "feature" and "enhancement" in filtered-labels' do it 'does not show label "feature" and "enhancement" in filtered-labels' do
expect(find('.filtered-labels')).not_to have_content "feature" expect(find('.filtered-labels')).not_to have_content "feature"
expect(find('.filtered-labels')).not_to have_content "enhancement" expect(find('.filtered-labels')).not_to have_content "enhancement"
end end
it 'should remove label "bug"' do it 'removes label "bug"' do
find('.js-label-filter-remove').click find('.js-label-filter-remove').click
wait_for_ajax wait_for_ajax
expect(find('.filtered-labels', visible: false)).to have_no_content "bug" expect(find('.filtered-labels', visible: false)).to have_no_content "bug"
...@@ -71,20 +71,20 @@ feature 'Issue filtering by Labels', feature: true do ...@@ -71,20 +71,20 @@ feature 'Issue filtering by Labels', feature: true do
wait_for_ajax wait_for_ajax
end end
it 'should show issue "Feature1" in issues list' do it 'shows issue "Feature1" in issues list' do
expect(page).to have_content "Feature1" expect(page).to have_content "Feature1"
end end
it 'should not show "Bugfix1" and "Bugfix2" in issues list' do it 'does not show "Bugfix1" and "Bugfix2" in issues list' do
expect(page).not_to have_content "Bugfix2" expect(page).not_to have_content "Bugfix2"
expect(page).not_to have_content "Bugfix1" expect(page).not_to have_content "Bugfix1"
end end
it 'should show label "feature" in filtered-labels' do it 'shows label "feature" in filtered-labels' do
expect(find('.filtered-labels')).to have_content "feature" expect(find('.filtered-labels')).to have_content "feature"
end end
it 'should not show label "bug" and "enhancement" in filtered-labels' do it 'does not show label "bug" and "enhancement" in filtered-labels' do
expect(find('.filtered-labels')).not_to have_content "bug" expect(find('.filtered-labels')).not_to have_content "bug"
expect(find('.filtered-labels')).not_to have_content "enhancement" expect(find('.filtered-labels')).not_to have_content "enhancement"
end end
...@@ -99,20 +99,20 @@ feature 'Issue filtering by Labels', feature: true do ...@@ -99,20 +99,20 @@ feature 'Issue filtering by Labels', feature: true do
wait_for_ajax wait_for_ajax
end end
it 'should show issue "Bugfix2" in issues list' do it 'shows issue "Bugfix2" in issues list' do
expect(page).to have_content "Bugfix2" expect(page).to have_content "Bugfix2"
end end
it 'should not show "Feature1" and "Bugfix1" in issues list' do it 'does not show "Feature1" and "Bugfix1" in issues list' do
expect(page).not_to have_content "Feature1" expect(page).not_to have_content "Feature1"
expect(page).not_to have_content "Bugfix1" expect(page).not_to have_content "Bugfix1"
end end
it 'should show label "enhancement" in filtered-labels' do it 'shows label "enhancement" in filtered-labels' do
expect(find('.filtered-labels')).to have_content "enhancement" expect(find('.filtered-labels')).to have_content "enhancement"
end end
it 'should not show label "feature" and "bug" in filtered-labels' do it 'does not show label "feature" and "bug" in filtered-labels' do
expect(find('.filtered-labels')).not_to have_content "bug" expect(find('.filtered-labels')).not_to have_content "bug"
expect(find('.filtered-labels')).not_to have_content "feature" expect(find('.filtered-labels')).not_to have_content "feature"
end end
...@@ -128,21 +128,21 @@ feature 'Issue filtering by Labels', feature: true do ...@@ -128,21 +128,21 @@ feature 'Issue filtering by Labels', feature: true do
wait_for_ajax wait_for_ajax
end end
it 'should not show "Bugfix1" or "Feature1" in issues list' do it 'does not show "Bugfix1" or "Feature1" in issues list' do
expect(page).not_to have_content "Bugfix1" expect(page).not_to have_content "Bugfix1"
expect(page).not_to have_content "Feature1" expect(page).not_to have_content "Feature1"
end end
it 'should show label "enhancement" and "feature" in filtered-labels' do it 'shows label "enhancement" and "feature" in filtered-labels' do
expect(find('.filtered-labels')).to have_content "enhancement" expect(find('.filtered-labels')).to have_content "enhancement"
expect(find('.filtered-labels')).to have_content "feature" expect(find('.filtered-labels')).to have_content "feature"
end end
it 'should not show label "bug" in filtered-labels' do it 'does not show label "bug" in filtered-labels' do
expect(find('.filtered-labels')).not_to have_content "bug" expect(find('.filtered-labels')).not_to have_content "bug"
end end
it 'should remove label "enhancement"' do it 'removes label "enhancement"' do
find('.js-label-filter-remove', match: :first).click find('.js-label-filter-remove', match: :first).click
wait_for_ajax wait_for_ajax
expect(find('.filtered-labels')).to have_no_content "enhancement" expect(find('.filtered-labels')).to have_no_content "enhancement"
...@@ -159,20 +159,20 @@ feature 'Issue filtering by Labels', feature: true do ...@@ -159,20 +159,20 @@ feature 'Issue filtering by Labels', feature: true do
wait_for_ajax wait_for_ajax
end end
it 'should show issue "Bugfix2" in issues list' do it 'shows issue "Bugfix2" in issues list' do
expect(page).to have_content "Bugfix2" expect(page).to have_content "Bugfix2"
end end
it 'should not show "Feature1"' do it 'does not show "Feature1"' do
expect(page).not_to have_content "Feature1" expect(page).not_to have_content "Feature1"
end end
it 'should show label "bug" and "enhancement" in filtered-labels' do it 'shows label "bug" and "enhancement" in filtered-labels' do
expect(find('.filtered-labels')).to have_content "bug" expect(find('.filtered-labels')).to have_content "bug"
expect(find('.filtered-labels')).to have_content "enhancement" expect(find('.filtered-labels')).to have_content "enhancement"
end end
it 'should not show label "feature" in filtered-labels' do it 'does not show label "feature" in filtered-labels' do
expect(find('.filtered-labels')).not_to have_content "feature" expect(find('.filtered-labels')).not_to have_content "feature"
end end
end end
...@@ -191,7 +191,7 @@ feature 'Issue filtering by Labels', feature: true do ...@@ -191,7 +191,7 @@ feature 'Issue filtering by Labels', feature: true do
end end
end end
it 'should allow user to remove filtered labels' do it 'allows user to remove filtered labels' do
first('.js-label-filter-remove').click first('.js-label-filter-remove').click
wait_for_ajax wait_for_ajax
...@@ -201,7 +201,7 @@ feature 'Issue filtering by Labels', feature: true do ...@@ -201,7 +201,7 @@ feature 'Issue filtering by Labels', feature: true do
end end
context 'dropdown filtering', js: true do context 'dropdown filtering', js: true do
it 'should filter by label name' do it 'filters by label name' do
page.within '.labels-filter' do page.within '.labels-filter' do
click_button 'Label' click_button 'Label'
wait_for_ajax wait_for_ajax
......
...@@ -15,7 +15,7 @@ feature 'Issue filtering by Milestone', feature: true do ...@@ -15,7 +15,7 @@ feature 'Issue filtering by Milestone', feature: true do
end end
context 'filters by upcoming milestone', js: true do context 'filters by upcoming milestone', js: true do
it 'should not show issues with no expiry' do it 'does not show issues with no expiry' do
create(:issue, project: project) create(:issue, project: project)
create(:issue, project: project, milestone: milestone) create(:issue, project: project, milestone: milestone)
...@@ -25,7 +25,7 @@ feature 'Issue filtering by Milestone', feature: true do ...@@ -25,7 +25,7 @@ feature 'Issue filtering by Milestone', feature: true do
expect(page).to have_css('.issue', count: 0) expect(page).to have_css('.issue', count: 0)
end end
it 'should show issues in future' do it 'shows issues in future' do
milestone = create(:milestone, project: project, due_date: Date.tomorrow) milestone = create(:milestone, project: project, due_date: Date.tomorrow)
create(:issue, project: project) create(:issue, project: project)
create(:issue, project: project, milestone: milestone) create(:issue, project: project, milestone: milestone)
...@@ -36,7 +36,7 @@ feature 'Issue filtering by Milestone', feature: true do ...@@ -36,7 +36,7 @@ feature 'Issue filtering by Milestone', feature: true do
expect(page).to have_css('.issue', count: 1) expect(page).to have_css('.issue', count: 1)
end end
it 'should not show issues in past' do it 'does not show issues in past' do
milestone = create(:milestone, project: project, due_date: Date.yesterday) milestone = create(:milestone, project: project, due_date: Date.yesterday)
create(:issue, project: project) create(:issue, project: project)
create(:issue, project: project, milestone: milestone) create(:issue, project: project, milestone: milestone)
......
...@@ -26,17 +26,17 @@ describe 'Filter issues', feature: true do ...@@ -26,17 +26,17 @@ describe 'Filter issues', feature: true do
end end
context 'assignee', js: true do context 'assignee', js: true do
it 'should update to current user' do it 'updates to current user' do
expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name) expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
end end
it 'should not change when closed link is clicked' do it 'does not change when closed link is clicked' do
find('.issues-state-filters a', text: "Closed").click find('.issues-state-filters a', text: "Closed").click
expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name) expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
end end
it 'should not change when all link is clicked' do it 'does not change when all link is clicked' do
find('.issues-state-filters a', text: "All").click find('.issues-state-filters a', text: "All").click
expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name) expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
...@@ -56,17 +56,17 @@ describe 'Filter issues', feature: true do ...@@ -56,17 +56,17 @@ describe 'Filter issues', feature: true do
end end
context 'milestone', js: true do context 'milestone', js: true do
it 'should update to current milestone' do it 'updates to current milestone' do
expect(find('.js-milestone-select .dropdown-toggle-text')).to have_content(milestone.title) expect(find('.js-milestone-select .dropdown-toggle-text')).to have_content(milestone.title)
end end
it 'should not change when closed link is clicked' do it 'does not change when closed link is clicked' do
find('.issues-state-filters a', text: "Closed").click find('.issues-state-filters a', text: "Closed").click
expect(find('.js-milestone-select .dropdown-toggle-text')).to have_content(milestone.title) expect(find('.js-milestone-select .dropdown-toggle-text')).to have_content(milestone.title)
end end
it 'should not change when all link is clicked' do it 'does not change when all link is clicked' do
find('.issues-state-filters a', text: "All").click find('.issues-state-filters a', text: "All").click
expect(find('.js-milestone-select .dropdown-toggle-text')).to have_content(milestone.title) expect(find('.js-milestone-select .dropdown-toggle-text')).to have_content(milestone.title)
...@@ -81,7 +81,7 @@ describe 'Filter issues', feature: true do ...@@ -81,7 +81,7 @@ describe 'Filter issues', feature: true do
wait_for_ajax wait_for_ajax
end end
it 'should filter by any label' do it 'filters by any label' do
find('.dropdown-menu-labels a', text: 'Any Label').click find('.dropdown-menu-labels a', text: 'Any Label').click
page.first('.labels-filter .dropdown-title .dropdown-menu-close-icon').click page.first('.labels-filter .dropdown-title .dropdown-menu-close-icon').click
wait_for_ajax wait_for_ajax
...@@ -89,7 +89,7 @@ describe 'Filter issues', feature: true do ...@@ -89,7 +89,7 @@ describe 'Filter issues', feature: true do
expect(find('.labels-filter')).to have_content 'Label' expect(find('.labels-filter')).to have_content 'Label'
end end
it 'should filter by no label' do it 'filters by no label' do
find('.dropdown-menu-labels a', text: 'No Label').click find('.dropdown-menu-labels a', text: 'No Label').click
page.first('.labels-filter .dropdown-title .dropdown-menu-close-icon').click page.first('.labels-filter .dropdown-title .dropdown-menu-close-icon').click
wait_for_ajax wait_for_ajax
...@@ -100,7 +100,7 @@ describe 'Filter issues', feature: true do ...@@ -100,7 +100,7 @@ describe 'Filter issues', feature: true do
expect(find('.js-label-select .dropdown-toggle-text')).to have_content('No Label') expect(find('.js-label-select .dropdown-toggle-text')).to have_content('No Label')
end end
it 'should filter by no label' do it 'filters by no label' do
find('.dropdown-menu-labels a', text: label.title).click find('.dropdown-menu-labels a', text: label.title).click
page.within '.labels-filter' do page.within '.labels-filter' do
expect(page).to have_content label.title expect(page).to have_content label.title
...@@ -128,19 +128,19 @@ describe 'Filter issues', feature: true do ...@@ -128,19 +128,19 @@ describe 'Filter issues', feature: true do
end end
context 'assignee and label', js: true do context 'assignee and label', js: true do
it 'should update to current assignee and label' do it 'updates to current assignee and label' do
expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name) expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
expect(find('.js-label-select .dropdown-toggle-text')).to have_content(label.title) expect(find('.js-label-select .dropdown-toggle-text')).to have_content(label.title)
end end
it 'should not change when closed link is clicked' do it 'does not change when closed link is clicked' do
find('.issues-state-filters a', text: "Closed").click find('.issues-state-filters a', text: "Closed").click
expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name) expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
expect(find('.js-label-select .dropdown-toggle-text')).to have_content(label.title) expect(find('.js-label-select .dropdown-toggle-text')).to have_content(label.title)
end end
it 'should not change when all link is clicked' do it 'does not change when all link is clicked' do
find('.issues-state-filters a', text: "All").click find('.issues-state-filters a', text: "All").click
expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name) expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
...@@ -168,7 +168,7 @@ describe 'Filter issues', feature: true do ...@@ -168,7 +168,7 @@ describe 'Filter issues', feature: true do
end end
context 'only text', js: true do context 'only text', js: true do
it 'should filter issues by searched text' do it 'filters issues by searched text' do
fill_in 'issue_search', with: 'Bug' fill_in 'issue_search', with: 'Bug'
page.within '.issues-list' do page.within '.issues-list' do
...@@ -176,7 +176,7 @@ describe 'Filter issues', feature: true do ...@@ -176,7 +176,7 @@ describe 'Filter issues', feature: true do
end end
end end
it 'should not show any issues' do it 'does not show any issues' do
fill_in 'issue_search', with: 'testing' fill_in 'issue_search', with: 'testing'
page.within '.issues-list' do page.within '.issues-list' do
...@@ -186,7 +186,7 @@ describe 'Filter issues', feature: true do ...@@ -186,7 +186,7 @@ describe 'Filter issues', feature: true do
end end
context 'text and dropdown options', js: true do context 'text and dropdown options', js: true do
it 'should filter by text and label' do it 'filters by text and label' do
fill_in 'issue_search', with: 'Bug' fill_in 'issue_search', with: 'Bug'
page.within '.issues-list' do page.within '.issues-list' do
...@@ -204,7 +204,7 @@ describe 'Filter issues', feature: true do ...@@ -204,7 +204,7 @@ describe 'Filter issues', feature: true do
end end
end end
it 'should filter by text and milestone' do it 'filters by text and milestone' do
fill_in 'issue_search', with: 'Bug' fill_in 'issue_search', with: 'Bug'
page.within '.issues-list' do page.within '.issues-list' do
...@@ -221,7 +221,7 @@ describe 'Filter issues', feature: true do ...@@ -221,7 +221,7 @@ describe 'Filter issues', feature: true do
end end
end end
it 'should filter by text and assignee' do it 'filters by text and assignee' do
fill_in 'issue_search', with: 'Bug' fill_in 'issue_search', with: 'Bug'
page.within '.issues-list' do page.within '.issues-list' do
...@@ -238,7 +238,7 @@ describe 'Filter issues', feature: true do ...@@ -238,7 +238,7 @@ describe 'Filter issues', feature: true do
end end
end end
it 'should filter by text and author' do it 'filters by text and author' do
fill_in 'issue_search', with: 'Bug' fill_in 'issue_search', with: 'Bug'
page.within '.issues-list' do page.within '.issues-list' do
...@@ -269,7 +269,7 @@ describe 'Filter issues', feature: true do ...@@ -269,7 +269,7 @@ describe 'Filter issues', feature: true do
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
end end
it 'should be able to filter and sort issues' do it 'is able to filter and sort issues' do
click_button 'Label' click_button 'Label'
wait_for_ajax wait_for_ajax
page.within '.labels-filter' do page.within '.labels-filter' do
......
...@@ -17,7 +17,7 @@ feature 'Issue Sidebar', feature: true do ...@@ -17,7 +17,7 @@ feature 'Issue Sidebar', feature: true do
end end
describe 'when clicking on edit labels', js: true do describe 'when clicking on edit labels', js: true do
it 'dropdown has an option to create a new label' do it 'shows dropdown option to create a new label' do
find('.block.labels .edit-link').click find('.block.labels .edit-link').click
page.within('.block.labels') do page.within('.block.labels') do
...@@ -27,7 +27,7 @@ feature 'Issue Sidebar', feature: true do ...@@ -27,7 +27,7 @@ feature 'Issue Sidebar', feature: true do
end end
context 'creating a new label', js: true do context 'creating a new label', js: true do
it 'option to crate a new label is present' do it 'shows option to crate a new label is present' do
page.within('.block.labels') do page.within('.block.labels') do
find('.edit-link').click find('.edit-link').click
...@@ -35,7 +35,7 @@ feature 'Issue Sidebar', feature: true do ...@@ -35,7 +35,7 @@ feature 'Issue Sidebar', feature: true do
end end
end end
it 'dropdown switches to "create label" section' do it 'shows dropdown switches to "create label" section' do
page.within('.block.labels') do page.within('.block.labels') do
find('.edit-link').click find('.edit-link').click
click_link 'Create new' click_link 'Create new'
...@@ -44,7 +44,7 @@ feature 'Issue Sidebar', feature: true do ...@@ -44,7 +44,7 @@ feature 'Issue Sidebar', feature: true do
end end
end end
it 'new label is added' do it 'adds new label' do
page.within('.block.labels') do page.within('.block.labels') do
find('.edit-link').click find('.edit-link').click
sleep 1 sleep 1
......
...@@ -41,7 +41,7 @@ feature 'Start new branch from an issue', feature: true do ...@@ -41,7 +41,7 @@ feature 'Start new branch from an issue', feature: true do
end end
context "for visiters" do context "for visiters" do
it 'no button is shown', js: true do it 'shows no buttons', js: true do
visit namespace_project_issue_path(project.namespace, project, issue) visit namespace_project_issue_path(project.namespace, project, issue)
expect(page).not_to have_css('#new-branch') expect(page).not_to have_css('#new-branch')
......
...@@ -11,7 +11,7 @@ feature 'Manually create a todo item from issue', feature: true, js: true do ...@@ -11,7 +11,7 @@ feature 'Manually create a todo item from issue', feature: true, js: true do
visit namespace_project_issue_path(project.namespace, project, issue) visit namespace_project_issue_path(project.namespace, project, issue)
end end
it 'should create todo when clicking button' do it 'creates todo when clicking button' do
page.within '.issuable-sidebar' do page.within '.issuable-sidebar' do
click_button 'Add Todo' click_button 'Add Todo'
expect(page).to have_content 'Mark Done' expect(page).to have_content 'Mark Done'
...@@ -28,7 +28,7 @@ feature 'Manually create a todo item from issue', feature: true, js: true do ...@@ -28,7 +28,7 @@ feature 'Manually create a todo item from issue', feature: true, js: true do
end end
end end
it 'should mark a todo as done' do it 'marks a todo as done' do
page.within '.issuable-sidebar' do page.within '.issuable-sidebar' do
click_button 'Add Todo' click_button 'Add Todo'
click_button 'Mark Done' click_button 'Mark Done'
......
...@@ -13,7 +13,7 @@ feature 'Multiple issue updating from issues#index', feature: true do ...@@ -13,7 +13,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
end end
context 'status', js: true do context 'status', js: true do
it 'should be set to closed' do it 'sets to closed' do
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
find('#check_all_issues').click find('#check_all_issues').click
...@@ -24,7 +24,7 @@ feature 'Multiple issue updating from issues#index', feature: true do ...@@ -24,7 +24,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
expect(page).to have_selector('.issue', count: 0) expect(page).to have_selector('.issue', count: 0)
end end
it 'should be set to open' do it 'sets to open' do
create_closed create_closed
visit namespace_project_issues_path(project.namespace, project, state: 'closed') visit namespace_project_issues_path(project.namespace, project, state: 'closed')
...@@ -38,7 +38,7 @@ feature 'Multiple issue updating from issues#index', feature: true do ...@@ -38,7 +38,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
end end
context 'assignee', js: true do context 'assignee', js: true do
it 'should update to current user' do it 'updates to current user' do
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
find('#check_all_issues').click find('#check_all_issues').click
...@@ -52,7 +52,7 @@ feature 'Multiple issue updating from issues#index', feature: true do ...@@ -52,7 +52,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
end end
end end
it 'should update to unassigned' do it 'updates to unassigned' do
create_assigned create_assigned
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
...@@ -68,7 +68,7 @@ feature 'Multiple issue updating from issues#index', feature: true do ...@@ -68,7 +68,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
context 'milestone', js: true do context 'milestone', js: true do
let(:milestone) { create(:milestone, project: project) } let(:milestone) { create(:milestone, project: project) }
it 'should update milestone' do it 'updates milestone' do
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
find('#check_all_issues').click find('#check_all_issues').click
...@@ -80,7 +80,7 @@ feature 'Multiple issue updating from issues#index', feature: true do ...@@ -80,7 +80,7 @@ feature 'Multiple issue updating from issues#index', feature: true do
expect(find('.issue')).to have_content milestone.title expect(find('.issue')).to have_content milestone.title
end end
it 'should set to no milestone' do it 'sets to no milestone' do
create_with_milestone create_with_milestone
visit namespace_project_issues_path(project.namespace, project) visit namespace_project_issues_path(project.namespace, project)
......
...@@ -26,7 +26,7 @@ describe 'Issues', feature: true do ...@@ -26,7 +26,7 @@ describe 'Issues', feature: true do
find('.js-zen-enter').click find('.js-zen-enter').click
end end
it 'should open new issue popup' do it 'opens new issue popup' do
expect(page).to have_content("Issue ##{issue.iid}") expect(page).to have_content("Issue ##{issue.iid}")
end end
...@@ -71,7 +71,7 @@ describe 'Issues', feature: true do ...@@ -71,7 +71,7 @@ describe 'Issues', feature: true do
visit new_namespace_project_issue_path(project.namespace, project) visit new_namespace_project_issue_path(project.namespace, project)
end end
it 'should save with due date' do it 'saves with due date' do
date = Date.today.at_beginning_of_month date = Date.today.at_beginning_of_month
fill_in 'issue_title', with: 'bug 345' fill_in 'issue_title', with: 'bug 345'
...@@ -99,7 +99,7 @@ describe 'Issues', feature: true do ...@@ -99,7 +99,7 @@ describe 'Issues', feature: true do
visit edit_namespace_project_issue_path(project.namespace, project, issue) visit edit_namespace_project_issue_path(project.namespace, project, issue)
end end
it 'should save with due date' do it 'saves with due date' do
date = Date.today.at_beginning_of_month date = Date.today.at_beginning_of_month
expect(find('#issuable-due-date').value).to eq date.to_s expect(find('#issuable-due-date').value).to eq date.to_s
...@@ -155,7 +155,7 @@ describe 'Issues', feature: true do ...@@ -155,7 +155,7 @@ describe 'Issues', feature: true do
let(:issue) { @issue } let(:issue) { @issue }
it 'should allow filtering by issues with no specified assignee' do it 'allows filtering by issues with no specified assignee' do
visit namespace_project_issues_path(project.namespace, project, assignee_id: IssuableFinder::NONE) visit namespace_project_issues_path(project.namespace, project, assignee_id: IssuableFinder::NONE)
expect(page).to have_content 'foobar' expect(page).to have_content 'foobar'
...@@ -163,7 +163,7 @@ describe 'Issues', feature: true do ...@@ -163,7 +163,7 @@ describe 'Issues', feature: true do
expect(page).not_to have_content 'gitlab' expect(page).not_to have_content 'gitlab'
end end
it 'should allow filtering by a specified assignee' do it 'allows filtering by a specified assignee' do
visit namespace_project_issues_path(project.namespace, project, assignee_id: @user.id) visit namespace_project_issues_path(project.namespace, project, assignee_id: @user.id)
expect(page).not_to have_content 'foobar' expect(page).not_to have_content 'foobar'
...@@ -514,7 +514,7 @@ describe 'Issues', feature: true do ...@@ -514,7 +514,7 @@ describe 'Issues', feature: true do
visit new_namespace_project_issue_path(project.namespace, project) visit new_namespace_project_issue_path(project.namespace, project)
end end
it 'should upload file when dragging into textarea' do it 'uploads file when dragging into textarea' do
drop_in_dropzone test_image_file drop_in_dropzone test_image_file
# Wait for the file to upload # Wait for the file to upload
...@@ -562,7 +562,7 @@ describe 'Issues', feature: true do ...@@ -562,7 +562,7 @@ describe 'Issues', feature: true do
visit namespace_project_issue_path(project.namespace, project, issue) visit namespace_project_issue_path(project.namespace, project, issue)
end end
it 'should add due date to issue' do it 'adds due date to issue' do
page.within '.due_date' do page.within '.due_date' do
click_link 'Edit' click_link 'Edit'
...@@ -574,7 +574,7 @@ describe 'Issues', feature: true do ...@@ -574,7 +574,7 @@ describe 'Issues', feature: true do
end end
end end
it 'should remove due date from issue' do it 'removes due date from issue' do
page.within '.due_date' do page.within '.due_date' do
click_link 'Edit' click_link 'Edit'
......
...@@ -131,7 +131,7 @@ feature 'Login', feature: true do ...@@ -131,7 +131,7 @@ feature 'Login', feature: true do
expect_any_instance_of(Object).to receive(:omniauth_authorize_path).with(:user, "saml").and_return('/users/auth/saml') expect_any_instance_of(Object).to receive(:omniauth_authorize_path).with(:user, "saml").and_return('/users/auth/saml')
end end
it 'should show 2FA prompt after OAuth login' do it 'shows 2FA prompt after OAuth login' do
stub_omniauth_config(enabled: true, auto_link_saml_user: true, allow_single_sign_on: ['saml'], providers: [saml_config]) stub_omniauth_config(enabled: true, auto_link_saml_user: true, allow_single_sign_on: ['saml'], providers: [saml_config])
user = create(:omniauth_user, :two_factor, extern_uid: 'my-uid', provider: 'saml') user = create(:omniauth_user, :two_factor, extern_uid: 'my-uid', provider: 'saml')
login_via('saml', user, 'my-uid') login_via('saml', user, 'my-uid')
......
...@@ -11,7 +11,7 @@ feature 'Merge request awards', js: true, feature: true do ...@@ -11,7 +11,7 @@ feature 'Merge request awards', js: true, feature: true do
visit namespace_project_merge_request_path(project.namespace, project, merge_request) visit namespace_project_merge_request_path(project.namespace, project, merge_request)
end end
it 'should add award to merge request' do it 'adds award to merge request' do
first('.js-emoji-btn').click first('.js-emoji-btn').click
expect(page).to have_selector('.js-emoji-btn.active') expect(page).to have_selector('.js-emoji-btn.active')
expect(first('.js-emoji-btn')).to have_content '1' expect(first('.js-emoji-btn')).to have_content '1'
...@@ -20,7 +20,7 @@ feature 'Merge request awards', js: true, feature: true do ...@@ -20,7 +20,7 @@ feature 'Merge request awards', js: true, feature: true do
expect(first('.js-emoji-btn')).to have_content '1' expect(first('.js-emoji-btn')).to have_content '1'
end end
it 'should remove award from merge request' do it 'removes award from merge request' do
first('.js-emoji-btn').click first('.js-emoji-btn').click
find('.js-emoji-btn.active').click find('.js-emoji-btn.active').click
expect(first('.js-emoji-btn')).to have_content '0' expect(first('.js-emoji-btn')).to have_content '0'
...@@ -29,7 +29,7 @@ feature 'Merge request awards', js: true, feature: true do ...@@ -29,7 +29,7 @@ feature 'Merge request awards', js: true, feature: true do
expect(first('.js-emoji-btn')).to have_content '0' expect(first('.js-emoji-btn')).to have_content '0'
end end
it 'should only have one menu on the page' do it 'has only one menu on the page' do
first('.js-add-award').click first('.js-add-award').click
expect(page).to have_selector('.emoji-menu') expect(page).to have_selector('.emoji-menu')
...@@ -42,7 +42,7 @@ feature 'Merge request awards', js: true, feature: true do ...@@ -42,7 +42,7 @@ feature 'Merge request awards', js: true, feature: true do
visit namespace_project_merge_request_path(project.namespace, project, merge_request) visit namespace_project_merge_request_path(project.namespace, project, merge_request)
end end
it 'should not see award menu button' do it 'does not see award menu button' do
expect(page).not_to have_selector('.js-award-holder') expect(page).not_to have_selector('.js-award-holder')
end end
end end
......
...@@ -14,7 +14,7 @@ feature 'Edit Merge Request', feature: true do ...@@ -14,7 +14,7 @@ feature 'Edit Merge Request', feature: true do
end end
context 'editing a MR' do context 'editing a MR' do
it 'form should have class js-quick-submit' do it 'has class js-quick-submit in form' do
expect(page).to have_selector('.js-quick-submit') expect(page).to have_selector('.js-quick-submit')
end end
end end
......
...@@ -21,7 +21,7 @@ feature 'Merge Request filtering by Milestone', feature: true do ...@@ -21,7 +21,7 @@ feature 'Merge Request filtering by Milestone', feature: true do
end end
context 'filters by upcoming milestone', js: true do context 'filters by upcoming milestone', js: true do
it 'should not show issues with no expiry' do it 'does not show issues with no expiry' do
create(:merge_request, :with_diffs, source_project: project) create(:merge_request, :with_diffs, source_project: project)
create(:merge_request, :simple, source_project: project, milestone: milestone) create(:merge_request, :simple, source_project: project, milestone: milestone)
...@@ -31,7 +31,7 @@ feature 'Merge Request filtering by Milestone', feature: true do ...@@ -31,7 +31,7 @@ feature 'Merge Request filtering by Milestone', feature: true do
expect(page).to have_css('.merge-request', count: 0) expect(page).to have_css('.merge-request', count: 0)
end end
it 'should show issues in future' do it 'shows issues in future' do
milestone = create(:milestone, project: project, due_date: Date.tomorrow) milestone = create(:milestone, project: project, due_date: Date.tomorrow)
create(:merge_request, :with_diffs, source_project: project) create(:merge_request, :with_diffs, source_project: project)
create(:merge_request, :simple, source_project: project, milestone: milestone) create(:merge_request, :simple, source_project: project, milestone: milestone)
...@@ -42,7 +42,7 @@ feature 'Merge Request filtering by Milestone', feature: true do ...@@ -42,7 +42,7 @@ feature 'Merge Request filtering by Milestone', feature: true do
expect(page).to have_css('.merge-request', count: 1) expect(page).to have_css('.merge-request', count: 1)
end end
it 'should not show issues in past' do it 'does not show issues in past' do
milestone = create(:milestone, project: project, due_date: Date.yesterday) milestone = create(:milestone, project: project, due_date: Date.yesterday)
create(:merge_request, :with_diffs, source_project: project) create(:merge_request, :with_diffs, source_project: project)
create(:merge_request, :simple, source_project: project, milestone: milestone) create(:merge_request, :simple, source_project: project, milestone: milestone)
......
...@@ -73,7 +73,7 @@ feature 'Merge When Build Succeeds', feature: true, js: true do ...@@ -73,7 +73,7 @@ feature 'Merge When Build Succeeds', feature: true, js: true do
end end
context 'Build is not active' do context 'Build is not active' do
it "should not allow for enabling" do it "does not allow for enabling" do
visit_merge_request(merge_request) visit_merge_request(merge_request)
expect(page).not_to have_link "Merge When Build Succeeds" expect(page).not_to have_link "Merge When Build Succeeds"
end end
......
...@@ -13,7 +13,7 @@ feature 'Milestone', feature: true do ...@@ -13,7 +13,7 @@ feature 'Milestone', feature: true do
end end
feature 'Create a milestone' do feature 'Create a milestone' do
scenario 'should show an informative message for a new issue' do scenario 'shows an informative message for a new issue' do
visit new_namespace_project_milestone_path(project.namespace, project) visit new_namespace_project_milestone_path(project.namespace, project)
page.within '.milestone-form' do page.within '.milestone-form' do
fill_in "milestone_title", with: '8.7' fill_in "milestone_title", with: '8.7'
...@@ -25,7 +25,7 @@ feature 'Milestone', feature: true do ...@@ -25,7 +25,7 @@ feature 'Milestone', feature: true do
end end
feature 'Open a milestone with closed issues' do feature 'Open a milestone with closed issues' do
scenario 'should show an informative message' do scenario 'shows an informative message' do
create(:issue, title: "Bugfix1", project: project, milestone: milestone, state: "closed") create(:issue, title: "Bugfix1", project: project, milestone: milestone, state: "closed")
visit namespace_project_milestone_path(project.namespace, project, milestone) visit namespace_project_milestone_path(project.namespace, project, milestone)
......
...@@ -23,7 +23,7 @@ describe 'Comments', feature: true do ...@@ -23,7 +23,7 @@ describe 'Comments', feature: true do
subject { page } subject { page }
describe 'the note form' do describe 'the note form' do
it 'should be valid' do it 'is valid' do
is_expected.to have_css('.js-main-target-form', visible: true, count: 1) is_expected.to have_css('.js-main-target-form', visible: true, count: 1)
expect(find('.js-main-target-form input[type=submit]').value). expect(find('.js-main-target-form input[type=submit]').value).
to eq('Comment') to eq('Comment')
...@@ -39,7 +39,7 @@ describe 'Comments', feature: true do ...@@ -39,7 +39,7 @@ describe 'Comments', feature: true do
end end
end end
it 'should have enable submit button and preview button' do it 'has enable submit button and preview button' do
page.within('.js-main-target-form') do page.within('.js-main-target-form') do
expect(page).not_to have_css('.js-comment-button[disabled]') expect(page).not_to have_css('.js-comment-button[disabled]')
expect(page).to have_css('.js-md-preview-button', visible: true) expect(page).to have_css('.js-md-preview-button', visible: true)
...@@ -57,7 +57,7 @@ describe 'Comments', feature: true do ...@@ -57,7 +57,7 @@ describe 'Comments', feature: true do
end end
end end
it 'should be added and form reset' do it 'is added and form reset' do
is_expected.to have_content('This is awsome!') is_expected.to have_content('This is awsome!')
page.within('.js-main-target-form') do page.within('.js-main-target-form') do
expect(page).to have_no_field('note[note]', with: 'This is awesome!') expect(page).to have_no_field('note[note]', with: 'This is awesome!')
...@@ -70,7 +70,7 @@ describe 'Comments', feature: true do ...@@ -70,7 +70,7 @@ describe 'Comments', feature: true do
end end
describe 'when editing a note', js: true do describe 'when editing a note', js: true do
it 'should contain the hidden edit form' do it 'contains the hidden edit form' do
page.within("#note_#{note.id}") do page.within("#note_#{note.id}") do
is_expected.to have_css('.note-edit-form', visible: false) is_expected.to have_css('.note-edit-form', visible: false)
end end
...@@ -82,7 +82,7 @@ describe 'Comments', feature: true do ...@@ -82,7 +82,7 @@ describe 'Comments', feature: true do
find(".js-note-edit").click find(".js-note-edit").click
end end
it 'should show the note edit form and hide the note body' do it 'shows the note edit form and hide the note body' do
page.within("#note_#{note.id}") do page.within("#note_#{note.id}") do
expect(find('.current-note-edit-form', visible: true)).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('.note-edit-form', visible: true)).to be_visible
...@@ -234,7 +234,7 @@ describe 'Comments', feature: true do ...@@ -234,7 +234,7 @@ describe 'Comments', feature: true do
end end
end end
it 'should be added as discussion' do it 'adds as discussion' do
is_expected.to have_content('Another comment on line 10') is_expected.to have_content('Another comment on line 10')
is_expected.to have_css('.notes_holder') is_expected.to have_css('.notes_holder')
is_expected.to have_css('.notes_holder .note', count: 1) is_expected.to have_css('.notes_holder .note', count: 1)
......
...@@ -12,17 +12,17 @@ feature 'Member autocomplete', feature: true do ...@@ -12,17 +12,17 @@ feature 'Member autocomplete', feature: true do
end end
shared_examples "open suggestions" do shared_examples "open suggestions" do
it 'suggestions are displayed' do it 'displays suggestions' do
expect(page).to have_selector('.atwho-view', visible: true) expect(page).to have_selector('.atwho-view', visible: true)
end end
it 'author is suggested' do it 'suggests author' do
page.within('.atwho-view', visible: true) do page.within('.atwho-view', visible: true) do
expect(page).to have_content(author.username) expect(page).to have_content(author.username)
end end
end end
it 'participant is suggested' do it 'suggests participant' do
page.within('.atwho-view', visible: true) do page.within('.atwho-view', visible: true) do
expect(page).to have_content(participant.username) expect(page).to have_content(participant.username)
end end
......
...@@ -82,11 +82,11 @@ describe "Pipelines" do ...@@ -82,11 +82,11 @@ describe "Pipelines" do
before { visit namespace_project_pipelines_path(project.namespace, project) } before { visit namespace_project_pipelines_path(project.namespace, project) }
it 'not be cancelable' do it 'is not cancelable' do
expect(page).not_to have_link('Cancel') expect(page).not_to have_link('Cancel')
end end
it 'pipeline is running' do it 'has pipeline running' do
expect(page).to have_selector('.ci-running') expect(page).to have_selector('.ci-running')
end end
end end
...@@ -96,11 +96,11 @@ describe "Pipelines" do ...@@ -96,11 +96,11 @@ describe "Pipelines" do
before { visit namespace_project_pipelines_path(project.namespace, project) } before { visit namespace_project_pipelines_path(project.namespace, project) }
it 'not be retryable' do it 'is not retryable' do
expect(page).not_to have_link('Retry') expect(page).not_to have_link('Retry')
end end
it 'pipeline is failed' do it 'has failed pipeline' do
expect(page).to have_selector('.ci-failed') expect(page).to have_selector('.ci-failed')
end end
end end
...@@ -147,7 +147,7 @@ describe "Pipelines" do ...@@ -147,7 +147,7 @@ describe "Pipelines" do
before { visit namespace_project_pipeline_path(project.namespace, project, pipeline) } before { visit namespace_project_pipeline_path(project.namespace, project, pipeline) }
it 'showing a list of builds' do it 'shows a list of builds' do
expect(page).to have_content('Test') expect(page).to have_content('Test')
expect(page).to have_content(@success.id) expect(page).to have_content(@success.id)
expect(page).to have_content('Deploy') expect(page).to have_content('Deploy')
......
...@@ -15,7 +15,7 @@ describe 'Profile account page', feature: true do ...@@ -15,7 +15,7 @@ describe 'Profile account page', feature: true do
it { expect(page).to have_content('Remove account') } it { expect(page).to have_content('Remove account') }
it 'should delete the account' do it 'deletes the account' do
expect { click_link 'Delete account' }.to change { User.count }.by(-1) expect { click_link 'Delete account' }.to change { User.count }.by(-1)
expect(current_path).to eq(new_user_session_path) expect(current_path).to eq(new_user_session_path)
end end
...@@ -27,7 +27,7 @@ describe 'Profile account page', feature: true do ...@@ -27,7 +27,7 @@ describe 'Profile account page', feature: true do
visit profile_account_path visit profile_account_path
end end
it 'should not have option to remove account' do it 'does not have option to remove account' do
expect(page).not_to have_content('Remove account') expect(page).not_to have_content('Remove account')
expect(current_path).to eq(profile_account_path) expect(current_path).to eq(profile_account_path)
end end
......
...@@ -87,7 +87,7 @@ feature 'Prioritize labels', feature: true do ...@@ -87,7 +87,7 @@ feature 'Prioritize labels', feature: true do
end end
context 'as a guest' do context 'as a guest' do
it 'can not prioritize labels' do it 'does not prioritize labels' do
user = create(:user) user = create(:user)
guest = create(:user) guest = create(:user)
project = create(:project, name: 'test', namespace: user.namespace) project = create(:project, name: 'test', namespace: user.namespace)
...@@ -102,7 +102,7 @@ feature 'Prioritize labels', feature: true do ...@@ -102,7 +102,7 @@ feature 'Prioritize labels', feature: true do
end end
context 'as a non signed in user' do context 'as a non signed in user' do
it 'can not prioritize labels' do it 'does not prioritize labels' do
user = create(:user) user = create(:user)
project = create(:project, name: 'test', namespace: user.namespace) project = create(:project, name: 'test', namespace: user.namespace)
......
...@@ -44,7 +44,7 @@ feature 'Project', feature: true do ...@@ -44,7 +44,7 @@ feature 'Project', feature: true do
visit edit_namespace_project_path(project.namespace, project) visit edit_namespace_project_path(project.namespace, project)
end end
it 'should remove fork' do it 'removes fork' do
expect(page).to have_content 'Remove fork relationship' expect(page).to have_content 'Remove fork relationship'
remove_with_confirm('Remove fork relationship', project.path) remove_with_confirm('Remove fork relationship', project.path)
...@@ -65,7 +65,7 @@ feature 'Project', feature: true do ...@@ -65,7 +65,7 @@ feature 'Project', feature: true do
visit edit_namespace_project_path(project.namespace, project) visit edit_namespace_project_path(project.namespace, project)
end end
it 'should remove project' do it 'removes project' do
expect { remove_with_confirm('Remove project', project.path) }.to change {Project.count}.by(-1) expect { remove_with_confirm('Remove project', project.path) }.to change {Project.count}.by(-1)
end end
end end
...@@ -82,7 +82,7 @@ feature 'Project', feature: true do ...@@ -82,7 +82,7 @@ feature 'Project', feature: true do
visit namespace_project_path(project.namespace, project) visit namespace_project_path(project.namespace, project)
end end
it 'click toggle and show dropdown', js: true do it 'clicks toggle and shows dropdown', js: true do
find('.js-projects-dropdown-toggle').click find('.js-projects-dropdown-toggle').click
expect(page).to have_css('.dropdown-menu-projects .dropdown-content li', count: 1) expect(page).to have_css('.dropdown-menu-projects .dropdown-content li', count: 1)
end end
...@@ -102,7 +102,7 @@ feature 'Project', feature: true do ...@@ -102,7 +102,7 @@ feature 'Project', feature: true do
visit namespace_project_issue_path(project.namespace, project, issue) visit namespace_project_issue_path(project.namespace, project, issue)
end end
it 'click toggle and show dropdown' do it 'clicks toggle and shows dropdown' do
find('.js-projects-dropdown-toggle').click find('.js-projects-dropdown-toggle').click
expect(page).to have_css('.dropdown-menu-projects .dropdown-content li', count: 2) expect(page).to have_css('.dropdown-menu-projects .dropdown-content li', count: 2)
......
...@@ -12,7 +12,7 @@ describe "Search", feature: true do ...@@ -12,7 +12,7 @@ describe "Search", feature: true do
visit search_path visit search_path
end end
it 'top right search form is not present' do it 'does not show top right search form' do
expect(page).not_to have_selector('.search') expect(page).not_to have_selector('.search')
end end
...@@ -76,16 +76,16 @@ describe "Search", feature: true do ...@@ -76,16 +76,16 @@ describe "Search", feature: true do
visit namespace_project_path(project.namespace, project) visit namespace_project_path(project.namespace, project)
end end
it 'top right search form is present' do it 'shows top right search form' do
expect(page).to have_selector('#search') expect(page).to have_selector('#search')
end end
it 'top right search form contains location badge' do it 'contains location badge in top right search form' do
expect(page).to have_selector('.has-location-badge') expect(page).to have_selector('.has-location-badge')
end end
context 'clicking the search field', js: true do context 'clicking the search field', js: true do
it 'should show category search dropdown' do it 'shows category search dropdown' do
page.find('#search').click page.find('#search').click
expect(page).to have_selector('.dropdown-header', text: /#{project.name}/i) expect(page).to have_selector('.dropdown-header', text: /#{project.name}/i)
...@@ -97,7 +97,7 @@ describe "Search", feature: true do ...@@ -97,7 +97,7 @@ describe "Search", feature: true do
page.find('#search').click page.find('#search').click
end end
it 'should take user to her issues page when issues assigned is clicked' do it 'takes user to her issues page when issues assigned is clicked' do
find('.dropdown-menu').click_link 'Issues assigned to me' find('.dropdown-menu').click_link 'Issues assigned to me'
sleep 2 sleep 2
...@@ -105,7 +105,7 @@ describe "Search", feature: true do ...@@ -105,7 +105,7 @@ describe "Search", feature: true do
expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name) expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
end end
it 'should take user to her issues page when issues authored is clicked' do it 'takes user to her issues page when issues authored is clicked' do
find('.dropdown-menu').click_link "Issues I've created" find('.dropdown-menu').click_link "Issues I've created"
sleep 2 sleep 2
...@@ -113,7 +113,7 @@ describe "Search", feature: true do ...@@ -113,7 +113,7 @@ describe "Search", feature: true do
expect(find('.js-author-search .dropdown-toggle-text')).to have_content(user.name) expect(find('.js-author-search .dropdown-toggle-text')).to have_content(user.name)
end end
it 'should take user to her MR page when MR assigned is clicked' do it 'takes user to her MR page when MR assigned is clicked' do
find('.dropdown-menu').click_link 'Merge requests assigned to me' find('.dropdown-menu').click_link 'Merge requests assigned to me'
sleep 2 sleep 2
...@@ -121,7 +121,7 @@ describe "Search", feature: true do ...@@ -121,7 +121,7 @@ describe "Search", feature: true do
expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name) expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
end end
it 'should take user to her MR page when MR authored is clicked' do it 'takes user to her MR page when MR authored is clicked' do
find('.dropdown-menu').click_link "Merge requests I've created" find('.dropdown-menu').click_link "Merge requests I've created"
sleep 2 sleep 2
...@@ -137,7 +137,7 @@ describe "Search", feature: true do ...@@ -137,7 +137,7 @@ describe "Search", feature: true do
end end
end end
it 'should not display the category search dropdown' do it 'does not display the category search dropdown' do
expect(page).not_to have_selector('.dropdown-header', text: /#{project.name}/i) expect(page).not_to have_selector('.dropdown-header', text: /#{project.name}/i)
end end
end end
......
...@@ -24,7 +24,7 @@ describe 'Dashboard Todos', feature: true do ...@@ -24,7 +24,7 @@ describe 'Dashboard Todos', feature: true do
visit dashboard_todos_path visit dashboard_todos_path
end end
it 'todo is present' do it 'has todo present' do
expect(page).to have_selector('.todos-list .todo', count: 1) expect(page).to have_selector('.todos-list .todo', count: 1)
end end
......
...@@ -13,13 +13,13 @@ describe 'Project variables', js: true do ...@@ -13,13 +13,13 @@ describe 'Project variables', js: true do
visit namespace_project_variables_path(project.namespace, project) visit namespace_project_variables_path(project.namespace, project)
end end
it 'should show list of variables' do it 'shows list of variables' do
page.within('.variables-table') do page.within('.variables-table') do
expect(page).to have_content(variable.key) expect(page).to have_content(variable.key)
end end
end end
it 'should add new variable' do it 'adds new variable' do
fill_in('variable_key', with: 'key') fill_in('variable_key', with: 'key')
fill_in('variable_value', with: 'key value') fill_in('variable_value', with: 'key value')
click_button('Add new variable') click_button('Add new variable')
...@@ -29,7 +29,7 @@ describe 'Project variables', js: true do ...@@ -29,7 +29,7 @@ describe 'Project variables', js: true do
end end
end end
it 'should delete variable' do it 'deletes variable' do
page.within('.variables-table') do page.within('.variables-table') do
find('.btn-variable-delete').click find('.btn-variable-delete').click
end end
...@@ -37,7 +37,7 @@ describe 'Project variables', js: true do ...@@ -37,7 +37,7 @@ describe 'Project variables', js: true do
expect(page).not_to have_selector('variables-table') expect(page).not_to have_selector('variables-table')
end end
it 'should edit variable' do it 'edits variable' do
page.within('.variables-table') do page.within('.variables-table') do
find('.btn-variable-edit').click find('.btn-variable-edit').click
end end
......
...@@ -18,13 +18,13 @@ describe MergeRequestsFinder do ...@@ -18,13 +18,13 @@ describe MergeRequestsFinder do
end end
describe "#execute" do describe "#execute" do
it 'should filter by scope' do it 'filters by scope' do
params = { scope: 'authored', state: 'opened' } params = { scope: 'authored', state: 'opened' }
merge_requests = MergeRequestsFinder.new(user, params).execute merge_requests = MergeRequestsFinder.new(user, params).execute
expect(merge_requests.size).to eq(2) expect(merge_requests.size).to eq(2)
end end
it 'should filter by project' do it 'filters by project' do
params = { project_id: project1.id, scope: 'authored', state: 'opened' } params = { project_id: project1.id, scope: 'authored', state: 'opened' }
merge_requests = MergeRequestsFinder.new(user, params).execute merge_requests = MergeRequestsFinder.new(user, params).execute
expect(merge_requests.size).to eq(1) expect(merge_requests.size).to eq(1)
......
...@@ -19,12 +19,12 @@ describe NotesFinder do ...@@ -19,12 +19,12 @@ describe NotesFinder do
note2 note2
end end
it 'should find all notes' do it 'finds all notes' do
notes = NotesFinder.new.execute(project, user, params) notes = NotesFinder.new.execute(project, user, params)
expect(notes.size).to eq(2) expect(notes.size).to eq(2)
end end
it 'should raise an exception for an invalid target_type' do it 'raises an exception for an invalid target_type' do
params.merge!(target_type: 'invalid') params.merge!(target_type: 'invalid')
expect { NotesFinder.new.execute(project, user, params) }.to raise_error('invalid target_type') expect { NotesFinder.new.execute(project, user, params) }.to raise_error('invalid target_type')
end end
......
...@@ -54,7 +54,7 @@ describe ApplicationHelper do ...@@ -54,7 +54,7 @@ describe ApplicationHelper do
describe 'project_icon' do describe 'project_icon' do
let(:avatar_file_path) { File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif') } let(:avatar_file_path) { File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif') }
it 'should return an url for the avatar' do it 'returns an url for the avatar' do
project = create(:project, avatar: File.open(avatar_file_path)) project = create(:project, avatar: File.open(avatar_file_path))
avatar_url = "http://localhost/uploads/project/avatar/#{project.id}/banana_sample.gif" avatar_url = "http://localhost/uploads/project/avatar/#{project.id}/banana_sample.gif"
...@@ -62,7 +62,7 @@ describe ApplicationHelper do ...@@ -62,7 +62,7 @@ describe ApplicationHelper do
to eq "<img src=\"#{avatar_url}\" alt=\"Banana sample\" />" to eq "<img src=\"#{avatar_url}\" alt=\"Banana sample\" />"
end end
it 'should give uploaded icon when present' do it 'gives uploaded icon when present' do
project = create(:project) project = create(:project)
allow_any_instance_of(Project).to receive(:avatar_in_git).and_return(true) allow_any_instance_of(Project).to receive(:avatar_in_git).and_return(true)
...@@ -76,14 +76,14 @@ describe ApplicationHelper do ...@@ -76,14 +76,14 @@ describe ApplicationHelper do
describe 'avatar_icon' do describe 'avatar_icon' do
let(:avatar_file_path) { File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif') } let(:avatar_file_path) { File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif') }
it 'should return an url for the avatar' do it 'returns an url for the avatar' do
user = create(:user, avatar: File.open(avatar_file_path)) user = create(:user, avatar: File.open(avatar_file_path))
expect(helper.avatar_icon(user.email).to_s). expect(helper.avatar_icon(user.email).to_s).
to match("/uploads/user/avatar/#{user.id}/banana_sample.gif") to match("/uploads/user/avatar/#{user.id}/banana_sample.gif")
end end
it 'should return an url for the avatar with relative url' do it 'returns an url for the avatar with relative url' do
stub_config_setting(relative_url_root: '/gitlab') stub_config_setting(relative_url_root: '/gitlab')
# Must be stubbed after the stub above, and separately # Must be stubbed after the stub above, and separately
stub_config_setting(url: Settings.send(:build_gitlab_url)) stub_config_setting(url: Settings.send(:build_gitlab_url))
...@@ -94,14 +94,14 @@ describe ApplicationHelper do ...@@ -94,14 +94,14 @@ describe ApplicationHelper do
to match("/gitlab/uploads/user/avatar/#{user.id}/banana_sample.gif") to match("/gitlab/uploads/user/avatar/#{user.id}/banana_sample.gif")
end end
it 'should call gravatar_icon when no User exists with the given email' do it 'calls gravatar_icon when no User exists with the given email' do
expect(helper).to receive(:gravatar_icon).with('foo@example.com', 20, 2) expect(helper).to receive(:gravatar_icon).with('foo@example.com', 20, 2)
helper.avatar_icon('foo@example.com', 20, 2) helper.avatar_icon('foo@example.com', 20, 2)
end end
describe 'using a User' do describe 'using a User' do
it 'should return an URL for the avatar' do it 'returns an URL for the avatar' do
user = create(:user, avatar: File.open(avatar_file_path)) user = create(:user, avatar: File.open(avatar_file_path))
expect(helper.avatar_icon(user).to_s). expect(helper.avatar_icon(user).to_s).
...@@ -146,7 +146,7 @@ describe ApplicationHelper do ...@@ -146,7 +146,7 @@ describe ApplicationHelper do
to match('https://secure.gravatar.com') to match('https://secure.gravatar.com')
end end
it 'should return custom gravatar path when gravatar_url is set' do it 'returns custom gravatar path when gravatar_url is set' do
stub_gravatar_setting(plain_url: 'http://example.local/?s=%{size}&hash=%{hash}') stub_gravatar_setting(plain_url: 'http://example.local/?s=%{size}&hash=%{hash}')
expect(gravatar_icon(user_email, 20)). expect(gravatar_icon(user_email, 20)).
...@@ -266,19 +266,19 @@ describe ApplicationHelper do ...@@ -266,19 +266,19 @@ describe ApplicationHelper do
allow(helper).to receive(:current_user).and_return(user) allow(helper).to receive(:current_user).and_return(user)
end end
it 'should preserve encoding' do it 'preserves encoding' do
expect(content.encoding.name).to eq('UTF-8') expect(content.encoding.name).to eq('UTF-8')
expect(helper.render_markup('foo.rst', content).encoding.name).to eq('UTF-8') expect(helper.render_markup('foo.rst', content).encoding.name).to eq('UTF-8')
end end
it "should delegate to #markdown when file name corresponds to Markdown" do it "delegates to #markdown when file name corresponds to Markdown" do
expect(helper).to receive(:gitlab_markdown?).with('foo.md').and_return(true) expect(helper).to receive(:gitlab_markdown?).with('foo.md').and_return(true)
expect(helper).to receive(:markdown).and_return('NOEL') expect(helper).to receive(:markdown).and_return('NOEL')
expect(helper.render_markup('foo.md', content)).to eq('NOEL') expect(helper.render_markup('foo.md', content)).to eq('NOEL')
end end
it "should delegate to #asciidoc when file name corresponds to AsciiDoc" do it "delegates to #asciidoc when file name corresponds to AsciiDoc" do
expect(helper).to receive(:asciidoc?).with('foo.adoc').and_return(true) expect(helper).to receive(:asciidoc?).with('foo.adoc').and_return(true)
expect(helper).to receive(:asciidoc).and_return('NOEL') expect(helper).to receive(:asciidoc).and_return('NOEL')
......
...@@ -17,19 +17,19 @@ describe BlobHelper do ...@@ -17,19 +17,19 @@ describe BlobHelper do
end end
describe '#highlight' do describe '#highlight' do
it 'should return plaintext for unknown lexer context' do it 'returns plaintext for unknown lexer context' do
result = helper.highlight(blob_name, no_context_content) result = helper.highlight(blob_name, no_context_content)
expect(result).to eq(%[<pre class="code highlight"><code><span id="LC1" class="line">:type "assem"))</span></code></pre>]) expect(result).to eq(%[<pre class="code highlight"><code><span id="LC1" class="line">:type "assem"))</span></code></pre>])
end end
it 'should highlight single block' do it 'highlights single block' do
expected = %Q[<pre class="code highlight"><code><span id="LC1" class="line"><span class="p">(</span><span class="nb">make-pathname</span> <span class="ss">:defaults</span> <span class="nv">name</span></span> expected = %Q[<pre class="code highlight"><code><span id="LC1" class="line"><span class="p">(</span><span class="nb">make-pathname</span> <span class="ss">:defaults</span> <span class="nv">name</span></span>
<span id="LC2" class="line"><span class="ss">:type</span> <span class="s">"assem"</span><span class="p">))</span></span></code></pre>] <span id="LC2" class="line"><span class="ss">:type</span> <span class="s">"assem"</span><span class="p">))</span></span></code></pre>]
expect(helper.highlight(blob_name, blob_content)).to eq(expected) expect(helper.highlight(blob_name, blob_content)).to eq(expected)
end end
it 'should highlight multi-line comments' do it 'highlights multi-line comments' do
result = helper.highlight(blob_name, multiline_content) result = helper.highlight(blob_name, multiline_content)
html = Nokogiri::HTML(result) html = Nokogiri::HTML(result)
lines = html.search('.s') lines = html.search('.s')
...@@ -49,7 +49,7 @@ describe BlobHelper do ...@@ -49,7 +49,7 @@ describe BlobHelper do
<span id="LC4" class="line"> ddd</span></code></pre>) <span id="LC4" class="line"> ddd</span></code></pre>)
end end
it 'should highlight each line properly' do it 'highlights each line properly' do
result = helper.highlight(blob_name, blob_content) result = helper.highlight(blob_name, blob_content)
expect(result).to eq(expected) expect(result).to eq(expected)
end end
...@@ -62,7 +62,7 @@ describe BlobHelper do ...@@ -62,7 +62,7 @@ describe BlobHelper do
let(:expected_svg_path) { File.join(Rails.root, 'spec', 'fixtures', 'sanitized.svg') } let(:expected_svg_path) { File.join(Rails.root, 'spec', 'fixtures', 'sanitized.svg') }
let(:expected) { open(expected_svg_path).read } let(:expected) { open(expected_svg_path).read }
it 'should retain essential elements' do it 'retains essential elements' do
blob = OpenStruct.new(data: data) blob = OpenStruct.new(data: data)
expect(sanitize_svg(blob).data).to eq(expected) expect(sanitize_svg(blob).data).to eq(expected)
end end
......
...@@ -32,27 +32,27 @@ describe DiffHelper do ...@@ -32,27 +32,27 @@ describe DiffHelper do
end end
describe 'diff_options' do describe 'diff_options' do
it 'should return no collapse false' do it 'returns no collapse false' do
expect(diff_options).to include(no_collapse: false) expect(diff_options).to include(no_collapse: false)
end end
it 'should return no collapse true if expand_all_diffs' do it 'returns no collapse true if expand_all_diffs' do
allow(controller).to receive(:params) { { expand_all_diffs: true } } allow(controller).to receive(:params) { { expand_all_diffs: true } }
expect(diff_options).to include(no_collapse: true) expect(diff_options).to include(no_collapse: true)
end end
it 'should return no collapse true if action name diff_for_path' do it 'returns no collapse true if action name diff_for_path' do
allow(controller).to receive(:action_name) { 'diff_for_path' } allow(controller).to receive(:action_name) { 'diff_for_path' }
expect(diff_options).to include(no_collapse: true) expect(diff_options).to include(no_collapse: true)
end end
it 'should return paths if action name diff_for_path and param old path' do it 'returns paths if action name diff_for_path and param old path' do
allow(controller).to receive(:params) { { old_path: 'lib/wadus.rb' } } allow(controller).to receive(:params) { { old_path: 'lib/wadus.rb' } }
allow(controller).to receive(:action_name) { 'diff_for_path' } allow(controller).to receive(:action_name) { 'diff_for_path' }
expect(diff_options[:paths]).to include('lib/wadus.rb') expect(diff_options[:paths]).to include('lib/wadus.rb')
end end
it 'should return paths if action name diff_for_path and param new path' do it 'returns paths if action name diff_for_path and param new path' do
allow(controller).to receive(:params) { { new_path: 'lib/wadus.rb' } } allow(controller).to receive(:params) { { new_path: 'lib/wadus.rb' } }
allow(controller).to receive(:action_name) { 'diff_for_path' } allow(controller).to receive(:action_name) { 'diff_for_path' }
expect(diff_options[:paths]).to include('lib/wadus.rb') expect(diff_options[:paths]).to include('lib/wadus.rb')
...@@ -60,11 +60,11 @@ describe DiffHelper do ...@@ -60,11 +60,11 @@ describe DiffHelper do
end end
describe '#diff_line_content' do describe '#diff_line_content' do
it 'should return non breaking space when line is empty' do it 'returns non breaking space when line is empty' do
expect(diff_line_content(nil)).to eq(' &nbsp;') expect(diff_line_content(nil)).to eq(' &nbsp;')
end end
it 'should return the line itself' do it 'returns the line itself' do
expect(diff_line_content(diff_file.diff_lines.first.text)). expect(diff_line_content(diff_file.diff_lines.first.text)).
to eq('@@ -6,12 +6,18 @@ module Popen') 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.type)).to eq('match')
......
...@@ -8,37 +8,37 @@ describe EmailsHelper do ...@@ -8,37 +8,37 @@ describe EmailsHelper do
end end
context 'when time limit is less than 2 hours' do context 'when time limit is less than 2 hours' do
it 'should display the time in hours using a singular unit' do it 'displays the time in hours using a singular unit' do
validate_time_string(1.hour, '1 hour') validate_time_string(1.hour, '1 hour')
end end
end end
context 'when time limit is 2 or more hours' do context 'when time limit is 2 or more hours' do
it 'should display the time in hours using a plural unit' do it 'displays the time in hours using a plural unit' do
validate_time_string(2.hours, '2 hours') validate_time_string(2.hours, '2 hours')
end end
end end
context 'when time limit contains fractions of an hour' do context 'when time limit contains fractions of an hour' do
it 'should round down to the nearest hour' do it 'rounds down to the nearest hour' do
validate_time_string(96.minutes, '1 hour') validate_time_string(96.minutes, '1 hour')
end end
end end
context 'when time limit is 24 or more hours' do context 'when time limit is 24 or more hours' do
it 'should display the time in days using a singular unit' do it 'displays the time in days using a singular unit' do
validate_time_string(24.hours, '1 day') validate_time_string(24.hours, '1 day')
end end
end end
context 'when time limit is 2 or more days' do context 'when time limit is 2 or more days' do
it 'should display the time in days using a plural unit' do it 'displays the time in days using a plural unit' do
validate_time_string(2.days, '2 days') validate_time_string(2.days, '2 days')
end end
end end
context 'when time limit contains fractions of a day' do context 'when time limit contains fractions of a day' do
it 'should round down to the nearest day' do it 'rounds down to the nearest day' do
validate_time_string(57.hours, '2 days') validate_time_string(57.hours, '2 days')
end end
end end
......
...@@ -6,34 +6,34 @@ describe EventsHelper do ...@@ -6,34 +6,34 @@ describe EventsHelper do
allow(helper).to receive(:current_user).and_return(double) allow(helper).to receive(:current_user).and_return(double)
end end
it 'should display one line of plain text without alteration' do it 'displays one line of plain text without alteration' do
input = 'A short, plain note' input = 'A short, plain note'
expect(helper.event_note(input)).to match(input) expect(helper.event_note(input)).to match(input)
expect(helper.event_note(input)).not_to match(/\.\.\.\z/) expect(helper.event_note(input)).not_to match(/\.\.\.\z/)
end end
it 'should display inline code' do it 'displays inline code' do
input = 'A note with `inline code`' input = 'A note with `inline code`'
expected = 'A note with <code>inline code</code>' expected = 'A note with <code>inline code</code>'
expect(helper.event_note(input)).to match(expected) expect(helper.event_note(input)).to match(expected)
end end
it 'should truncate a note with multiple paragraphs' do it 'truncates a note with multiple paragraphs' do
input = "Paragraph 1\n\nParagraph 2" input = "Paragraph 1\n\nParagraph 2"
expected = 'Paragraph 1...' expected = 'Paragraph 1...'
expect(helper.event_note(input)).to match(expected) expect(helper.event_note(input)).to match(expected)
end end
it 'should display the first line of a code block' do it 'displays the first line of a code block' do
input = "```\nCode block\nwith two lines\n```" input = "```\nCode block\nwith two lines\n```"
expected = %r{<pre.+><code>Code block\.\.\.</code></pre>} expected = %r{<pre.+><code>Code block\.\.\.</code></pre>}
expect(helper.event_note(input)).to match(expected) expect(helper.event_note(input)).to match(expected)
end end
it 'should truncate a single long line of text' do it 'truncates a single long line of text' do
text = 'The quick brown fox jumped over the lazy dog twice' # 50 chars text = 'The quick brown fox jumped over the lazy dog twice' # 50 chars
input = text * 4 input = text * 4
expected = (text * 2).sub(/.{3}/, '...') expected = (text * 2).sub(/.{3}/, '...')
...@@ -41,7 +41,7 @@ describe EventsHelper do ...@@ -41,7 +41,7 @@ describe EventsHelper do
expect(helper.event_note(input)).to match(expected) expect(helper.event_note(input)).to match(expected)
end end
it 'should preserve a link href when link text is truncated' do it 'preserves a link href when link text is truncated' do
text = 'The quick brown fox jumped over the lazy dog' # 44 chars text = 'The quick brown fox jumped over the lazy dog' # 44 chars
input = "#{text}#{text}#{text} " # 133 chars input = "#{text}#{text}#{text} " # 133 chars
link_url = 'http://example.com/foo/bar/baz' # 30 chars link_url = 'http://example.com/foo/bar/baz' # 30 chars
...@@ -52,7 +52,7 @@ describe EventsHelper do ...@@ -52,7 +52,7 @@ describe EventsHelper do
expect(helper.event_note(input)).to match(expected_link_text) expect(helper.event_note(input)).to match(expected_link_text)
end end
it 'should preserve code color scheme' do it 'preserves code color scheme' do
input = "```ruby\ndef test\n 'hello world'\nend\n```" input = "```ruby\ndef test\n 'hello world'\nend\n```"
expected = '<pre class="code highlight js-syntax-highlight ruby">' \ expected = '<pre class="code highlight js-syntax-highlight ruby">' \
"<code><span class=\"k\">def</span> <span class=\"nf\">test</span>\n" \ "<code><span class=\"k\">def</span> <span class=\"nf\">test</span>\n" \
......
...@@ -26,17 +26,17 @@ describe GitlabMarkdownHelper do ...@@ -26,17 +26,17 @@ describe GitlabMarkdownHelper do
describe "referencing multiple objects" do describe "referencing multiple objects" do
let(:actual) { "#{merge_request.to_reference} -> #{commit.to_reference} -> #{issue.to_reference}" } let(:actual) { "#{merge_request.to_reference} -> #{commit.to_reference} -> #{issue.to_reference}" }
it "should link to the merge request" do it "links to the merge request" do
expected = namespace_project_merge_request_path(project.namespace, project, merge_request) expected = namespace_project_merge_request_path(project.namespace, project, merge_request)
expect(helper.markdown(actual)).to match(expected) expect(helper.markdown(actual)).to match(expected)
end end
it "should link to the commit" do it "links to the commit" do
expected = namespace_project_commit_path(project.namespace, project, commit) expected = namespace_project_commit_path(project.namespace, project, commit)
expect(helper.markdown(actual)).to match(expected) expect(helper.markdown(actual)).to match(expected)
end end
it "should link to the issue" do it "links to the issue" do
expected = namespace_project_issue_path(project.namespace, project, issue) expected = namespace_project_issue_path(project.namespace, project, issue)
expect(helper.markdown(actual)).to match(expected) expect(helper.markdown(actual)).to match(expected)
end end
...@@ -47,7 +47,7 @@ describe GitlabMarkdownHelper do ...@@ -47,7 +47,7 @@ describe GitlabMarkdownHelper do
let(:second_project) { create(:project, :public) } let(:second_project) { create(:project, :public) }
let(:second_issue) { create(:issue, project: second_project) } let(:second_issue) { create(:issue, project: second_project) }
it 'should link to the issue' do it 'links to the issue' do
expected = namespace_project_issue_path(second_project.namespace, second_project, second_issue) expected = namespace_project_issue_path(second_project.namespace, second_project, second_issue)
expect(markdown(actual, project: second_project)).to match(expected) expect(markdown(actual, project: second_project)).to match(expected)
end end
...@@ -58,7 +58,7 @@ describe GitlabMarkdownHelper do ...@@ -58,7 +58,7 @@ describe GitlabMarkdownHelper do
let(:commit_path) { namespace_project_commit_path(project.namespace, project, commit) } let(:commit_path) { namespace_project_commit_path(project.namespace, project, commit) }
let(:issues) { create_list(:issue, 2, project: project) } let(:issues) { create_list(:issue, 2, project: project) }
it 'should handle references nested in links with all the text' do it 'handles references nested in links with all the text' do
actual = helper.link_to_gfm("This should finally fix #{issues[0].to_reference} and #{issues[1].to_reference} for real", commit_path) actual = helper.link_to_gfm("This should finally fix #{issues[0].to_reference} and #{issues[1].to_reference} for real", commit_path)
doc = Nokogiri::HTML.parse(actual) doc = Nokogiri::HTML.parse(actual)
...@@ -88,7 +88,7 @@ describe GitlabMarkdownHelper do ...@@ -88,7 +88,7 @@ describe GitlabMarkdownHelper do
expect(doc.css('a')[4].text).to eq ' for real' expect(doc.css('a')[4].text).to eq ' for real'
end end
it 'should forward HTML options' do it 'forwards HTML options' do
actual = helper.link_to_gfm("Fixed in #{commit.id}", commit_path, class: 'foo') actual = helper.link_to_gfm("Fixed in #{commit.id}", commit_path, class: 'foo')
doc = Nokogiri::HTML.parse(actual) doc = Nokogiri::HTML.parse(actual)
...@@ -110,7 +110,7 @@ describe GitlabMarkdownHelper do ...@@ -110,7 +110,7 @@ describe GitlabMarkdownHelper do
expect(act).to eq %Q(<a href="/foo">#{issues[0].to_reference}</a>) expect(act).to eq %Q(<a href="/foo">#{issues[0].to_reference}</a>)
end end
it 'should replace commit message with emoji to link' do it 'replaces commit message with emoji to link' do
actual = link_to_gfm(':book:Book', '/foo') actual = link_to_gfm(':book:Book', '/foo')
expect(actual). expect(actual).
to eq %Q(<img class="emoji" title=":book:" alt=":book:" src="http://localhost/assets/1F4D6.png" height="20" width="20" align="absmiddle"><a href="/foo">Book</a>) to eq %Q(<img class="emoji" title=":book:" alt=":book:" src="http://localhost/assets/1F4D6.png" height="20" width="20" align="absmiddle"><a href="/foo">Book</a>)
...@@ -125,7 +125,7 @@ describe GitlabMarkdownHelper do ...@@ -125,7 +125,7 @@ describe GitlabMarkdownHelper do
helper.instance_variable_set(:@project_wiki, @wiki) helper.instance_variable_set(:@project_wiki, @wiki)
end end
it "should use Wiki pipeline for markdown files" do it "uses Wiki pipeline for markdown files" do
allow(@wiki).to receive(:format).and_return(:markdown) allow(@wiki).to receive(:format).and_return(:markdown)
expect(helper).to receive(:markdown).with('wiki content', pipeline: :wiki, project_wiki: @wiki, page_slug: "nested/page") expect(helper).to receive(:markdown).with('wiki content', pipeline: :wiki, project_wiki: @wiki, page_slug: "nested/page")
...@@ -133,7 +133,7 @@ describe GitlabMarkdownHelper do ...@@ -133,7 +133,7 @@ describe GitlabMarkdownHelper do
helper.render_wiki_content(@wiki) helper.render_wiki_content(@wiki)
end end
it "should use Asciidoctor for asciidoc files" do it "uses Asciidoctor for asciidoc files" do
allow(@wiki).to receive(:format).and_return(:asciidoc) allow(@wiki).to receive(:format).and_return(:asciidoc)
expect(helper).to receive(:asciidoc).with('wiki content') expect(helper).to receive(:asciidoc).with('wiki content')
...@@ -141,7 +141,7 @@ describe GitlabMarkdownHelper do ...@@ -141,7 +141,7 @@ describe GitlabMarkdownHelper do
helper.render_wiki_content(@wiki) helper.render_wiki_content(@wiki)
end end
it "should use the Gollum renderer for all other file types" do it "uses the Gollum renderer for all other file types" do
allow(@wiki).to receive(:format).and_return(:rdoc) allow(@wiki).to receive(:format).and_return(:rdoc)
formatted_content_stub = double('formatted_content') formatted_content_stub = double('formatted_content')
expect(formatted_content_stub).to receive(:html_safe) expect(formatted_content_stub).to receive(:html_safe)
......
...@@ -6,7 +6,7 @@ describe GraphHelper do ...@@ -6,7 +6,7 @@ describe GraphHelper do
let(:commit) { project.commit("master") } let(:commit) { project.commit("master") }
let(:graph) { Network::Graph.new(project, 'master', commit, '') } let(:graph) { Network::Graph.new(project, 'master', commit, '') }
it 'filter our refs used by GitLab' do it 'filters our refs used by GitLab' do
allow(commit).to receive(:ref_names).and_return(['refs/merge-requests/abc', 'master', 'refs/tmp/xyz']) allow(commit).to receive(:ref_names).and_return(['refs/merge-requests/abc', 'master', 'refs/tmp/xyz'])
self.instance_variable_set(:@graph, graph) self.instance_variable_set(:@graph, graph)
refs = get_refs(project.repository, commit) refs = get_refs(project.repository, commit)
......
...@@ -4,7 +4,7 @@ describe GroupsHelper do ...@@ -4,7 +4,7 @@ describe GroupsHelper do
describe 'group_icon' do describe 'group_icon' do
avatar_file_path = File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif') avatar_file_path = File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif')
it 'should return an url for the avatar' do it 'returns an url for the avatar' do
group = create(:group) group = create(:group)
group.avatar = File.open(avatar_file_path) group.avatar = File.open(avatar_file_path)
group.save! group.save!
...@@ -12,7 +12,7 @@ describe GroupsHelper do ...@@ -12,7 +12,7 @@ describe GroupsHelper do
to match("/uploads/group/avatar/#{group.id}/banana_sample.gif") to match("/uploads/group/avatar/#{group.id}/banana_sample.gif")
end end
it 'should give default avatar_icon when no avatar is present' do it 'gives default avatar_icon when no avatar is present' do
group = create(:group) group = create(:group)
group.save! group.save!
expect(group_icon(group.path)).to match('group_avatar.png') expect(group_icon(group.path)).to match('group_avatar.png')
......
...@@ -10,18 +10,19 @@ describe IssuesHelper do ...@@ -10,18 +10,19 @@ describe IssuesHelper do
let(:ext_expected) { issues_url.gsub(':id', issue.iid.to_s).gsub(':project_id', ext_project.id.to_s) } let(:ext_expected) { issues_url.gsub(':id', issue.iid.to_s).gsub(':project_id', ext_project.id.to_s) }
let(:int_expected) { polymorphic_path([@project.namespace, project, issue]) } let(:int_expected) { polymorphic_path([@project.namespace, project, issue]) }
it "should return internal path if used internal tracker" do it "returns internal path if used internal tracker" do
@project = project @project = project
expect(url_for_issue(issue.iid)).to match(int_expected) expect(url_for_issue(issue.iid)).to match(int_expected)
end end
it "should return path to external tracker" do it "returns path to external tracker" do
@project = ext_project @project = ext_project
expect(url_for_issue(issue.iid)).to match(ext_expected) expect(url_for_issue(issue.iid)).to match(ext_expected)
end end
it "should return empty string if project nil" do it "returns empty string if project nil" do
@project = nil @project = nil
expect(url_for_issue(issue.iid)).to eq "" expect(url_for_issue(issue.iid)).to eq ""
...@@ -45,7 +46,7 @@ describe IssuesHelper do ...@@ -45,7 +46,7 @@ describe IssuesHelper do
allow(Gitlab.config).to receive(:issues_tracker).and_return(nil) allow(Gitlab.config).to receive(:issues_tracker).and_return(nil)
end end
it "should return external path" do it "returns external path" do
expect(url_for_issue(issue.iid)).to match(ext_expected) expect(url_for_issue(issue.iid)).to match(ext_expected)
end end
end end
......
...@@ -21,7 +21,7 @@ describe NotesHelper do ...@@ -21,7 +21,7 @@ describe NotesHelper do
end end
describe "#notes_max_access_for_users" do describe "#notes_max_access_for_users" do
it 'return human access levels' do it 'returns human access levels' do
expect(helper.note_max_access_for_user(owner_note)).to eq('Owner') expect(helper.note_max_access_for_user(owner_note)).to eq('Owner')
expect(helper.note_max_access_for_user(master_note)).to eq('Master') expect(helper.note_max_access_for_user(master_note)).to eq('Master')
expect(helper.note_max_access_for_user(reporter_note)).to eq('Reporter') expect(helper.note_max_access_for_user(reporter_note)).to eq('Reporter')
......
...@@ -42,7 +42,7 @@ describe SearchHelper do ...@@ -42,7 +42,7 @@ describe SearchHelper do
expect(search_autocomplete_opts(project.name).size).to eq(1) expect(search_autocomplete_opts(project.name).size).to eq(1)
end end
it "should not include the public group" do it "does not include the public group" do
group = create(:group) group = create(:group)
expect(search_autocomplete_opts(group.name).size).to eq(0) expect(search_autocomplete_opts(group.name).size).to eq(0)
end end
......
...@@ -17,35 +17,35 @@ describe SubmoduleHelper do ...@@ -17,35 +17,35 @@ describe SubmoduleHelper do
allow(Gitlab.config.gitlab).to receive(:protocol).and_return('http') # set this just to be sure allow(Gitlab.config.gitlab).to receive(:protocol).and_return('http') # set this just to be sure
end end
it 'should detect ssh on standard port' do it 'detects ssh on standard port' do
allow(Gitlab.config.gitlab_shell).to receive(:ssh_port).and_return(22) # set this just to be sure allow(Gitlab.config.gitlab_shell).to receive(:ssh_port).and_return(22) # set this just to be sure
allow(Gitlab.config.gitlab_shell).to receive(:ssh_path_prefix).and_return(Settings.send(:build_gitlab_shell_ssh_path_prefix)) allow(Gitlab.config.gitlab_shell).to receive(:ssh_path_prefix).and_return(Settings.send(:build_gitlab_shell_ssh_path_prefix))
stub_url([ config.user, '@', config.host, ':gitlab-org/gitlab-ce.git' ].join('')) stub_url([ config.user, '@', config.host, ':gitlab-org/gitlab-ce.git' ].join(''))
expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ]) expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ])
end end
it 'should detect ssh on non-standard port' do it 'detects ssh on non-standard port' do
allow(Gitlab.config.gitlab_shell).to receive(:ssh_port).and_return(2222) allow(Gitlab.config.gitlab_shell).to receive(:ssh_port).and_return(2222)
allow(Gitlab.config.gitlab_shell).to receive(:ssh_path_prefix).and_return(Settings.send(:build_gitlab_shell_ssh_path_prefix)) allow(Gitlab.config.gitlab_shell).to receive(:ssh_path_prefix).and_return(Settings.send(:build_gitlab_shell_ssh_path_prefix))
stub_url([ 'ssh://', config.user, '@', config.host, ':2222/gitlab-org/gitlab-ce.git' ].join('')) stub_url([ 'ssh://', config.user, '@', config.host, ':2222/gitlab-org/gitlab-ce.git' ].join(''))
expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ]) expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ])
end end
it 'should detect http on standard port' do it 'detects http on standard port' do
allow(Gitlab.config.gitlab).to receive(:port).and_return(80) allow(Gitlab.config.gitlab).to receive(:port).and_return(80)
allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url)) allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url))
stub_url([ 'http://', config.host, '/gitlab-org/gitlab-ce.git' ].join('')) stub_url([ 'http://', config.host, '/gitlab-org/gitlab-ce.git' ].join(''))
expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ]) expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ])
end end
it 'should detect http on non-standard port' do it 'detects http on non-standard port' do
allow(Gitlab.config.gitlab).to receive(:port).and_return(3000) allow(Gitlab.config.gitlab).to receive(:port).and_return(3000)
allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url)) allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url))
stub_url([ 'http://', config.host, ':3000/gitlab-org/gitlab-ce.git' ].join('')) stub_url([ 'http://', config.host, ':3000/gitlab-org/gitlab-ce.git' ].join(''))
expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ]) expect(submodule_links(submodule_item)).to eq([ namespace_project_path('gitlab-org', 'gitlab-ce'), namespace_project_tree_path('gitlab-org', 'gitlab-ce', 'hash') ])
end end
it 'should work with relative_url_root' do it 'works with relative_url_root' do
allow(Gitlab.config.gitlab).to receive(:port).and_return(80) # set this just to be sure allow(Gitlab.config.gitlab).to receive(:port).and_return(80) # set this just to be sure
allow(Gitlab.config.gitlab).to receive(:relative_url_root).and_return('/gitlab/root') allow(Gitlab.config.gitlab).to receive(:relative_url_root).and_return('/gitlab/root')
allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url)) allow(Gitlab.config.gitlab).to receive(:url).and_return(Settings.send(:build_gitlab_url))
...@@ -55,22 +55,22 @@ describe SubmoduleHelper do ...@@ -55,22 +55,22 @@ describe SubmoduleHelper do
end end
context 'submodule on github.com' do context 'submodule on github.com' do
it 'should detect ssh' do it 'detects ssh' do
stub_url('git@github.com:gitlab-org/gitlab-ce.git') stub_url('git@github.com:gitlab-org/gitlab-ce.git')
expect(submodule_links(submodule_item)).to eq([ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ]) expect(submodule_links(submodule_item)).to eq([ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ])
end end
it 'should detect http' do it 'detects http' do
stub_url('http://github.com/gitlab-org/gitlab-ce.git') stub_url('http://github.com/gitlab-org/gitlab-ce.git')
expect(submodule_links(submodule_item)).to eq([ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ]) expect(submodule_links(submodule_item)).to eq([ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ])
end end
it 'should detect https' do it 'detects https' do
stub_url('https://github.com/gitlab-org/gitlab-ce.git') stub_url('https://github.com/gitlab-org/gitlab-ce.git')
expect(submodule_links(submodule_item)).to eq([ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ]) expect(submodule_links(submodule_item)).to eq([ 'https://github.com/gitlab-org/gitlab-ce', 'https://github.com/gitlab-org/gitlab-ce/tree/hash' ])
end end
it 'should return original with non-standard url' do it 'returns original with non-standard url' do
stub_url('http://github.com/gitlab-org/gitlab-ce') stub_url('http://github.com/gitlab-org/gitlab-ce')
expect(submodule_links(submodule_item)).to eq([ repo.submodule_url_for, nil ]) expect(submodule_links(submodule_item)).to eq([ repo.submodule_url_for, nil ])
...@@ -80,22 +80,22 @@ describe SubmoduleHelper do ...@@ -80,22 +80,22 @@ describe SubmoduleHelper do
end end
context 'submodule on gitlab.com' do context 'submodule on gitlab.com' do
it 'should detect ssh' do it 'detects ssh' do
stub_url('git@gitlab.com:gitlab-org/gitlab-ce.git') stub_url('git@gitlab.com:gitlab-org/gitlab-ce.git')
expect(submodule_links(submodule_item)).to eq([ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ]) expect(submodule_links(submodule_item)).to eq([ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ])
end end
it 'should detect http' do it 'detects http' do
stub_url('http://gitlab.com/gitlab-org/gitlab-ce.git') stub_url('http://gitlab.com/gitlab-org/gitlab-ce.git')
expect(submodule_links(submodule_item)).to eq([ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ]) expect(submodule_links(submodule_item)).to eq([ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ])
end end
it 'should detect https' do it 'detects https' do
stub_url('https://gitlab.com/gitlab-org/gitlab-ce.git') stub_url('https://gitlab.com/gitlab-org/gitlab-ce.git')
expect(submodule_links(submodule_item)).to eq([ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ]) expect(submodule_links(submodule_item)).to eq([ 'https://gitlab.com/gitlab-org/gitlab-ce', 'https://gitlab.com/gitlab-org/gitlab-ce/tree/hash' ])
end end
it 'should return original with non-standard url' do it 'returns original with non-standard url' do
stub_url('http://gitlab.com/gitlab-org/gitlab-ce') stub_url('http://gitlab.com/gitlab-org/gitlab-ce')
expect(submodule_links(submodule_item)).to eq([ repo.submodule_url_for, nil ]) expect(submodule_links(submodule_item)).to eq([ repo.submodule_url_for, nil ])
...@@ -105,7 +105,7 @@ describe SubmoduleHelper do ...@@ -105,7 +105,7 @@ describe SubmoduleHelper do
end end
context 'submodule on unsupported' do context 'submodule on unsupported' do
it 'should return original' do it 'returns original' do
stub_url('http://mygitserver.com/gitlab-org/gitlab-ce') stub_url('http://mygitserver.com/gitlab-org/gitlab-ce')
expect(submodule_links(submodule_item)).to eq([ repo.submodule_url_for, nil ]) expect(submodule_links(submodule_item)).to eq([ repo.submodule_url_for, nil ])
......
...@@ -12,7 +12,7 @@ describe TreeHelper do ...@@ -12,7 +12,7 @@ describe TreeHelper do
context "on a directory containing more than one file/directory" do context "on a directory containing more than one file/directory" do
let(:tree_item) { double(name: "files", path: "files") } let(:tree_item) { double(name: "files", path: "files") }
it "should return the directory name" do it "returns the directory name" do
expect(flatten_tree(tree_item)).to match('files') expect(flatten_tree(tree_item)).to match('files')
end end
end end
...@@ -20,7 +20,7 @@ describe TreeHelper do ...@@ -20,7 +20,7 @@ describe TreeHelper do
context "on a directory containing only one directory" do context "on a directory containing only one directory" do
let(:tree_item) { double(name: "foo", path: "foo") } let(:tree_item) { double(name: "foo", path: "foo") }
it "should return the flattened path" do it "returns the flattened path" do
expect(flatten_tree(tree_item)).to match('foo/bar') expect(flatten_tree(tree_item)).to match('foo/bar')
end end
end end
......
...@@ -7,12 +7,12 @@ describe Ci::Charts, lib: true do ...@@ -7,12 +7,12 @@ describe Ci::Charts, lib: true do
FactoryGirl.create(:ci_build, pipeline: @pipeline) FactoryGirl.create(:ci_build, pipeline: @pipeline)
end end
it 'should return build times in minutes' do it 'returns build times in minutes' do
chart = Ci::Charts::BuildTime.new(@pipeline.project) chart = Ci::Charts::BuildTime.new(@pipeline.project)
expect(chart.build_times).to eq([2]) expect(chart.build_times).to eq([2])
end end
it 'should handle nil build times' do it 'handles nil build times' do
create(:ci_pipeline, duration: nil, project: @pipeline.project) create(:ci_pipeline, duration: nil, project: @pipeline.project)
chart = Ci::Charts::BuildTime.new(@pipeline.project) chart = Ci::Charts::BuildTime.new(@pipeline.project)
......
...@@ -5,7 +5,7 @@ describe DisableEmailInterceptor, lib: true do ...@@ -5,7 +5,7 @@ describe DisableEmailInterceptor, lib: true do
Mail.register_interceptor(DisableEmailInterceptor) Mail.register_interceptor(DisableEmailInterceptor)
end end
it 'should not send emails' do it 'does not send emails' do
allow(Gitlab.config.gitlab).to receive(:email_enabled).and_return(false) allow(Gitlab.config.gitlab).to receive(:email_enabled).and_return(false)
expect { deliver_mail }.not_to change(ActionMailer::Base.deliveries, :count) expect { deliver_mail }.not_to change(ActionMailer::Base.deliveries, :count)
end end
......
...@@ -25,7 +25,7 @@ describe ExtractsPath, lib: true do ...@@ -25,7 +25,7 @@ describe ExtractsPath, lib: true do
@project = create(:project) @project = create(:project)
end end
it "log tree path should have no escape sequences" do it "log tree path has no escape sequences" do
assign_ref_vars assign_ref_vars
expect(@logs_path).to eq("/#{@project.path_with_namespace}/refs/#{ref}/logs_tree/files/ruby/popen.rb") expect(@logs_path).to eq("/#{@project.path_with_namespace}/refs/#{ref}/logs_tree/files/ruby/popen.rb")
end end
...@@ -33,7 +33,7 @@ describe ExtractsPath, lib: true do ...@@ -33,7 +33,7 @@ describe ExtractsPath, lib: true do
context 'escaped sequences in ref' do context 'escaped sequences in ref' do
let(:ref) { "improve%2Fawesome" } let(:ref) { "improve%2Fawesome" }
it "id should have no escape sequences" do it "id has no escape sequences" do
assign_ref_vars assign_ref_vars
expect(@ref).to eq('improve/awesome') expect(@ref).to eq('improve/awesome')
expect(@logs_path).to eq("/#{@project.path_with_namespace}/refs/#{ref}/logs_tree/files/ruby/popen.rb") expect(@logs_path).to eq("/#{@project.path_with_namespace}/refs/#{ref}/logs_tree/files/ruby/popen.rb")
......
...@@ -8,7 +8,7 @@ module Gitlab ...@@ -8,7 +8,7 @@ module Gitlab
let(:html) { 'H<sub>2</sub>O' } let(:html) { 'H<sub>2</sub>O' }
context "without project" do context "without project" do
it "should convert the input using Asciidoctor and default options" do it "converts the input using Asciidoctor and default options" do
expected_asciidoc_opts = { expected_asciidoc_opts = {
safe: :secure, safe: :secure,
backend: :html5, backend: :html5,
...@@ -24,7 +24,7 @@ module Gitlab ...@@ -24,7 +24,7 @@ module Gitlab
context "with asciidoc_opts" do context "with asciidoc_opts" do
let(:asciidoc_opts) { { safe: :safe, attributes: ['foo'] } } let(:asciidoc_opts) { { safe: :safe, attributes: ['foo'] } }
it "should merge the options with default ones" do it "merges the options with default ones" do
expected_asciidoc_opts = { expected_asciidoc_opts = {
safe: :safe, safe: :safe,
backend: :html5, backend: :html5,
......
...@@ -51,24 +51,24 @@ describe Gitlab::Auth, lib: true do ...@@ -51,24 +51,24 @@ describe Gitlab::Auth, lib: true do
let(:username) { 'John' } # username isn't lowercase, test this let(:username) { 'John' } # username isn't lowercase, test this
let(:password) { 'my-secret' } let(:password) { 'my-secret' }
it "should find user by valid login/password" do it "finds user by valid login/password" do
expect( gl_auth.find_with_user_password(username, password) ).to eql user expect( gl_auth.find_with_user_password(username, password) ).to eql user
end end
it 'should find user by valid email/password with case-insensitive email' do it 'finds user by valid email/password with case-insensitive email' do
expect(gl_auth.find_with_user_password(user.email.upcase, password)).to eql user expect(gl_auth.find_with_user_password(user.email.upcase, password)).to eql user
end end
it 'should find user by valid username/password with case-insensitive username' do it 'finds user by valid username/password with case-insensitive username' do
expect(gl_auth.find_with_user_password(username.upcase, password)).to eql user expect(gl_auth.find_with_user_password(username.upcase, password)).to eql user
end end
it "should not find user with invalid password" do it "does not find user with invalid password" do
password = 'wrong' password = 'wrong'
expect( gl_auth.find_with_user_password(username, password) ).not_to eql user expect( gl_auth.find_with_user_password(username, password) ).not_to eql user
end end
it "should not find user with invalid login" do it "does not find user with invalid login" do
user = 'wrong' user = 'wrong'
expect( gl_auth.find_with_user_password(username, password) ).not_to eql user expect( gl_auth.find_with_user_password(username, password) ).not_to eql user
end end
......
...@@ -64,7 +64,7 @@ describe Gitlab::LDAP::Access, lib: true do ...@@ -64,7 +64,7 @@ describe Gitlab::LDAP::Access, lib: true do
user.ldap_block user.ldap_block
end end
it 'should unblock user in GitLab' do it 'unblocks user in GitLab' do
access.allowed? access.allowed?
expect(user).not_to be_blocked expect(user).not_to be_blocked
end end
......
...@@ -36,7 +36,7 @@ describe Gitlab::LDAP::User, lib: true do ...@@ -36,7 +36,7 @@ describe Gitlab::LDAP::User, lib: true do
expect(ldap_user.changed?).to be_truthy expect(ldap_user.changed?).to be_truthy
end end
it "dont marks existing ldap user as changed" do it "does not mark existing ldap user as changed" do
create(:omniauth_user, email: 'john@example.com', extern_uid: 'my-uid', provider: 'ldapmain', ldap_email: true) create(:omniauth_user, email: 'john@example.com', extern_uid: 'my-uid', provider: 'ldapmain', ldap_email: true)
expect(ldap_user.changed?).to be_falsey expect(ldap_user.changed?).to be_falsey
end end
......
...@@ -42,7 +42,7 @@ describe Gitlab::OAuth::User, lib: true do ...@@ -42,7 +42,7 @@ describe Gitlab::OAuth::User, lib: true do
describe 'signup' do describe 'signup' do
shared_examples 'to verify compliance with allow_single_sign_on' do shared_examples 'to verify compliance with allow_single_sign_on' do
context 'provider is marked as external' do context 'provider is marked as external' do
it 'should mark user as external' do it 'marks user as external' do
stub_omniauth_config(allow_single_sign_on: ['twitter'], external_providers: ['twitter']) stub_omniauth_config(allow_single_sign_on: ['twitter'], external_providers: ['twitter'])
oauth_user.save oauth_user.save
expect(gl_user).to be_valid expect(gl_user).to be_valid
...@@ -51,7 +51,7 @@ describe Gitlab::OAuth::User, lib: true do ...@@ -51,7 +51,7 @@ describe Gitlab::OAuth::User, lib: true do
end end
context 'provider was external, now has been removed' do context 'provider was external, now has been removed' do
it 'should not mark external user as internal' do it 'does not mark external user as internal' do
create(:omniauth_user, extern_uid: 'my-uid', provider: 'twitter', external: true) create(:omniauth_user, extern_uid: 'my-uid', provider: 'twitter', external: true)
stub_omniauth_config(allow_single_sign_on: ['twitter'], external_providers: ['facebook']) stub_omniauth_config(allow_single_sign_on: ['twitter'], external_providers: ['facebook'])
oauth_user.save oauth_user.save
...@@ -62,7 +62,7 @@ describe Gitlab::OAuth::User, lib: true do ...@@ -62,7 +62,7 @@ describe Gitlab::OAuth::User, lib: true do
context 'provider is not external' do context 'provider is not external' do
context 'when adding a new OAuth identity' do context 'when adding a new OAuth identity' do
it 'should not promote an external user to internal' do it 'does not promote an external user to internal' do
user = create(:user, email: 'john@mail.com', external: true) user = create(:user, email: 'john@mail.com', external: true)
user.identities.create(provider: provider, extern_uid: uid) user.identities.create(provider: provider, extern_uid: uid)
......
...@@ -33,7 +33,7 @@ describe Gitlab::ProjectSearchResults, lib: true do ...@@ -33,7 +33,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
let!(:security_issue_1) { create(:issue, :confidential, project: project, title: 'Security issue 1', author: author) } let!(:security_issue_1) { create(:issue, :confidential, project: project, title: 'Security issue 1', author: author) }
let!(:security_issue_2) { create(:issue, :confidential, title: 'Security issue 2', project: project, assignee: assignee) } let!(:security_issue_2) { create(:issue, :confidential, title: 'Security issue 2', project: project, assignee: assignee) }
it 'should not list project confidential issues for non project members' do it 'does not list project confidential issues for non project members' do
results = described_class.new(non_member, project, query) results = described_class.new(non_member, project, query)
issues = results.objects('issues') issues = results.objects('issues')
...@@ -43,7 +43,7 @@ describe Gitlab::ProjectSearchResults, lib: true do ...@@ -43,7 +43,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
expect(results.issues_count).to eq 1 expect(results.issues_count).to eq 1
end end
it 'should not list project confidential issues for project members with guest role' do it 'does not list project confidential issues for project members with guest role' do
project.team << [member, :guest] project.team << [member, :guest]
results = described_class.new(member, project, query) results = described_class.new(member, project, query)
...@@ -55,7 +55,7 @@ describe Gitlab::ProjectSearchResults, lib: true do ...@@ -55,7 +55,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
expect(results.issues_count).to eq 1 expect(results.issues_count).to eq 1
end end
it 'should list project confidential issues for author' do it 'lists project confidential issues for author' do
results = described_class.new(author, project, query) results = described_class.new(author, project, query)
issues = results.objects('issues') issues = results.objects('issues')
...@@ -65,7 +65,7 @@ describe Gitlab::ProjectSearchResults, lib: true do ...@@ -65,7 +65,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
expect(results.issues_count).to eq 2 expect(results.issues_count).to eq 2
end end
it 'should list project confidential issues for assignee' do it 'lists project confidential issues for assignee' do
results = described_class.new(assignee, project.id, query) results = described_class.new(assignee, project.id, query)
issues = results.objects('issues') issues = results.objects('issues')
...@@ -75,7 +75,7 @@ describe Gitlab::ProjectSearchResults, lib: true do ...@@ -75,7 +75,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
expect(results.issues_count).to eq 2 expect(results.issues_count).to eq 2
end end
it 'should list project confidential issues for project members' do it 'lists project confidential issues for project members' do
project.team << [member, :developer] project.team << [member, :developer]
results = described_class.new(member, project, query) results = described_class.new(member, project, query)
...@@ -87,7 +87,7 @@ describe Gitlab::ProjectSearchResults, lib: true do ...@@ -87,7 +87,7 @@ describe Gitlab::ProjectSearchResults, lib: true do
expect(results.issues_count).to eq 3 expect(results.issues_count).to eq 3
end end
it 'should list all project issues for admin' do it 'lists all project issues for admin' do
results = described_class.new(admin, project, query) results = described_class.new(admin, project, query)
issues = results.objects('issues') issues = results.objects('issues')
......
...@@ -67,7 +67,7 @@ describe Gitlab::Saml::User, lib: true do ...@@ -67,7 +67,7 @@ describe Gitlab::Saml::User, lib: true do
end end
context 'user was external, now should not be' do context 'user was external, now should not be' do
it 'should make user internal' do it 'makes user internal' do
existing_user.update_attribute('external', true) existing_user.update_attribute('external', true)
saml_user.save saml_user.save
expect(gl_user).to be_valid expect(gl_user).to be_valid
...@@ -94,14 +94,14 @@ describe Gitlab::Saml::User, lib: true do ...@@ -94,14 +94,14 @@ describe Gitlab::Saml::User, lib: true do
context 'with allow_single_sign_on default (["saml"])' do context 'with allow_single_sign_on default (["saml"])' do
before { stub_omniauth_config(allow_single_sign_on: ['saml']) } before { stub_omniauth_config(allow_single_sign_on: ['saml']) }
it 'should not throw an error' do it 'does not throw an error' do
expect{ saml_user.save }.not_to raise_error expect{ saml_user.save }.not_to raise_error
end end
end end
context 'with allow_single_sign_on disabled' do context 'with allow_single_sign_on disabled' do
before { stub_omniauth_config(allow_single_sign_on: false) } before { stub_omniauth_config(allow_single_sign_on: false) }
it 'should throw an error' do it 'throws an error' do
expect{ saml_user.save }.to raise_error StandardError expect{ saml_user.save }.to raise_error StandardError
end end
end end
...@@ -223,7 +223,7 @@ describe Gitlab::Saml::User, lib: true do ...@@ -223,7 +223,7 @@ describe Gitlab::Saml::User, lib: true do
context 'dont block on create' do context 'dont block on create' do
before { stub_omniauth_config(block_auto_created_users: false) } before { stub_omniauth_config(block_auto_created_users: false) }
it 'should not block the user' do it 'does not block the user' do
saml_user.save saml_user.save
expect(gl_user).to be_valid expect(gl_user).to be_valid
expect(gl_user).not_to be_blocked expect(gl_user).not_to be_blocked
...@@ -233,7 +233,7 @@ describe Gitlab::Saml::User, lib: true do ...@@ -233,7 +233,7 @@ describe Gitlab::Saml::User, lib: true do
context 'block on create' do context 'block on create' do
before { stub_omniauth_config(block_auto_created_users: true) } before { stub_omniauth_config(block_auto_created_users: true) }
it 'should block user' do it 'blocks user' do
saml_user.save saml_user.save
expect(gl_user).to be_valid expect(gl_user).to be_valid
expect(gl_user).to be_blocked expect(gl_user).to be_blocked
......
...@@ -73,7 +73,7 @@ describe Gitlab::SearchResults do ...@@ -73,7 +73,7 @@ describe Gitlab::SearchResults do
let!(:security_issue_4) { create(:issue, :confidential, project: project_3, title: 'Security issue 4', assignee: assignee) } let!(:security_issue_4) { create(:issue, :confidential, project: project_3, title: 'Security issue 4', assignee: assignee) }
let!(:security_issue_5) { create(:issue, :confidential, project: project_4, title: 'Security issue 5') } let!(:security_issue_5) { create(:issue, :confidential, project: project_4, title: 'Security issue 5') }
it 'should not list confidential issues for non project members' do it 'does not list confidential issues for non project members' do
results = described_class.new(non_member, limit_projects, query) results = described_class.new(non_member, limit_projects, query)
issues = results.objects('issues') issues = results.objects('issues')
...@@ -86,7 +86,7 @@ describe Gitlab::SearchResults do ...@@ -86,7 +86,7 @@ describe Gitlab::SearchResults do
expect(results.issues_count).to eq 1 expect(results.issues_count).to eq 1
end end
it 'should not list confidential issues for project members with guest role' do it 'does not list confidential issues for project members with guest role' do
project_1.team << [member, :guest] project_1.team << [member, :guest]
project_2.team << [member, :guest] project_2.team << [member, :guest]
...@@ -102,7 +102,7 @@ describe Gitlab::SearchResults do ...@@ -102,7 +102,7 @@ describe Gitlab::SearchResults do
expect(results.issues_count).to eq 1 expect(results.issues_count).to eq 1
end end
it 'should list confidential issues for author' do it 'lists confidential issues for author' do
results = described_class.new(author, limit_projects, query) results = described_class.new(author, limit_projects, query)
issues = results.objects('issues') issues = results.objects('issues')
...@@ -115,7 +115,7 @@ describe Gitlab::SearchResults do ...@@ -115,7 +115,7 @@ describe Gitlab::SearchResults do
expect(results.issues_count).to eq 3 expect(results.issues_count).to eq 3
end end
it 'should list confidential issues for assignee' do it 'lists confidential issues for assignee' do
results = described_class.new(assignee, limit_projects, query) results = described_class.new(assignee, limit_projects, query)
issues = results.objects('issues') issues = results.objects('issues')
...@@ -128,7 +128,7 @@ describe Gitlab::SearchResults do ...@@ -128,7 +128,7 @@ describe Gitlab::SearchResults do
expect(results.issues_count).to eq 3 expect(results.issues_count).to eq 3
end end
it 'should list confidential issues for project members' do it 'lists confidential issues for project members' do
project_1.team << [member, :developer] project_1.team << [member, :developer]
project_2.team << [member, :developer] project_2.team << [member, :developer]
...@@ -144,7 +144,7 @@ describe Gitlab::SearchResults do ...@@ -144,7 +144,7 @@ describe Gitlab::SearchResults do
expect(results.issues_count).to eq 4 expect(results.issues_count).to eq 4
end end
it 'should list all issues for admin' do it 'lists all issues for admin' do
results = described_class.new(admin, limit_projects, query) results = described_class.new(admin, limit_projects, query)
issues = results.objects('issues') issues = results.objects('issues')
......
...@@ -9,19 +9,19 @@ describe Gitlab::Upgrader, lib: true do ...@@ -9,19 +9,19 @@ describe Gitlab::Upgrader, lib: true do
end end
describe 'latest_version?' do describe 'latest_version?' do
it 'should be true if newest version' do it 'is true if newest version' do
allow(upgrader).to receive(:latest_version_raw).and_return(current_version) allow(upgrader).to receive(:latest_version_raw).and_return(current_version)
expect(upgrader.latest_version?).to be_truthy expect(upgrader.latest_version?).to be_truthy
end end
end end
describe 'latest_version_raw' do describe 'latest_version_raw' do
it 'should be latest version for GitLab 5' do it 'is the latest version for GitLab 5' do
allow(upgrader).to receive(:current_version_raw).and_return("5.3.0") allow(upgrader).to receive(:current_version_raw).and_return("5.3.0")
expect(upgrader.latest_version_raw).to eq("v5.4.2") expect(upgrader.latest_version_raw).to eq("v5.4.2")
end end
it 'should get the latest version from tags' do it 'gets the latest version from tags' do
allow(upgrader).to receive(:fetch_git_tags).and_return([ allow(upgrader).to receive(:fetch_git_tags).and_return([
'6f0733310546402c15d3ae6128a95052f6c8ea96 refs/tags/v7.1.1', '6f0733310546402c15d3ae6128a95052f6c8ea96 refs/tags/v7.1.1',
'facfec4b242ce151af224e20715d58e628aa5e74 refs/tags/v7.1.1^{}', 'facfec4b242ce151af224e20715d58e628aa5e74 refs/tags/v7.1.1^{}',
......
...@@ -48,7 +48,7 @@ describe Notify do ...@@ -48,7 +48,7 @@ describe Notify do
it_behaves_like 'it should not have Gmail Actions links' it_behaves_like 'it should not have Gmail Actions links'
it_behaves_like 'a user cannot unsubscribe through footer link' it_behaves_like 'a user cannot unsubscribe through footer link'
it 'should not contain the new user\'s password' do it 'does not contain the new user\'s password' do
is_expected.not_to have_body_text /password/ is_expected.not_to have_body_text /password/
end end
end end
......
...@@ -591,7 +591,7 @@ describe Notify do ...@@ -591,7 +591,7 @@ describe Notify do
is_expected.to have_body_text /#{note.note}/ is_expected.to have_body_text /#{note.note}/
end end
it 'not contains note author' do it 'does not contain note author' do
is_expected.not_to have_body_text /wrote\:/ is_expected.not_to have_body_text /wrote\:/
end end
......
...@@ -53,59 +53,59 @@ describe ApplicationSetting, models: true do ...@@ -53,59 +53,59 @@ describe ApplicationSetting, models: true do
end end
context 'restricted signup domains' do context 'restricted signup domains' do
it 'set single domain' do it 'sets single domain' do
setting.domain_whitelist_raw = 'example.com' setting.domain_whitelist_raw = 'example.com'
expect(setting.domain_whitelist).to eq(['example.com']) expect(setting.domain_whitelist).to eq(['example.com'])
end end
it 'set multiple domains with spaces' do it 'sets multiple domains with spaces' do
setting.domain_whitelist_raw = 'example.com *.example.com' setting.domain_whitelist_raw = 'example.com *.example.com'
expect(setting.domain_whitelist).to eq(['example.com', '*.example.com']) expect(setting.domain_whitelist).to eq(['example.com', '*.example.com'])
end end
it 'set multiple domains with newlines and a space' do it 'sets multiple domains with newlines and a space' do
setting.domain_whitelist_raw = "example.com\n *.example.com" setting.domain_whitelist_raw = "example.com\n *.example.com"
expect(setting.domain_whitelist).to eq(['example.com', '*.example.com']) expect(setting.domain_whitelist).to eq(['example.com', '*.example.com'])
end end
it 'set multiple domains with commas' do it 'sets multiple domains with commas' do
setting.domain_whitelist_raw = "example.com, *.example.com" setting.domain_whitelist_raw = "example.com, *.example.com"
expect(setting.domain_whitelist).to eq(['example.com', '*.example.com']) expect(setting.domain_whitelist).to eq(['example.com', '*.example.com'])
end end
end end
context 'blacklisted signup domains' do context 'blacklisted signup domains' do
it 'set single domain' do it 'sets single domain' do
setting.domain_blacklist_raw = 'example.com' setting.domain_blacklist_raw = 'example.com'
expect(setting.domain_blacklist).to contain_exactly('example.com') expect(setting.domain_blacklist).to contain_exactly('example.com')
end end
it 'set multiple domains with spaces' do it 'sets multiple domains with spaces' do
setting.domain_blacklist_raw = 'example.com *.example.com' setting.domain_blacklist_raw = 'example.com *.example.com'
expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com') expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com')
end end
it 'set multiple domains with newlines and a space' do it 'sets multiple domains with newlines and a space' do
setting.domain_blacklist_raw = "example.com\n *.example.com" setting.domain_blacklist_raw = "example.com\n *.example.com"
expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com') expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com')
end end
it 'set multiple domains with commas' do it 'sets multiple domains with commas' do
setting.domain_blacklist_raw = "example.com, *.example.com" setting.domain_blacklist_raw = "example.com, *.example.com"
expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com') expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com')
end end
it 'set multiple domains with semicolon' do it 'sets multiple domains with semicolon' do
setting.domain_blacklist_raw = "example.com; *.example.com" setting.domain_blacklist_raw = "example.com; *.example.com"
expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com') expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com')
end end
it 'set multiple domains with mixture of everything' do it 'sets multiple domains with mixture of everything' do
setting.domain_blacklist_raw = "example.com; *.example.com\n test.com\sblock.com yes.com" setting.domain_blacklist_raw = "example.com; *.example.com\n test.com\sblock.com yes.com"
expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com', 'test.com', 'block.com', 'yes.com') expect(setting.domain_blacklist).to contain_exactly('example.com', '*.example.com', 'test.com', 'block.com', 'yes.com')
end end
it 'set multiple domain with file' do it 'sets multiple domain with file' do
setting.domain_blacklist_file = File.open(Rails.root.join('spec/fixtures/', 'domain_blacklist.txt')) setting.domain_blacklist_file = File.open(Rails.root.join('spec/fixtures/', 'domain_blacklist.txt'))
expect(setting.domain_blacklist).to contain_exactly('example.com', 'test.com', 'foo.bar') expect(setting.domain_blacklist).to contain_exactly('example.com', 'test.com', 'foo.bar')
end end
......
...@@ -23,19 +23,19 @@ describe BroadcastMessage, models: true do ...@@ -23,19 +23,19 @@ describe BroadcastMessage, models: true do
end end
describe '.current' do describe '.current' do
it "should return last message if time match" do it "returns last message if time match" do
message = create(:broadcast_message) message = create(:broadcast_message)
expect(BroadcastMessage.current).to eq message expect(BroadcastMessage.current).to eq message
end end
it "should return nil if time not come" do it "returns nil if time not come" do
create(:broadcast_message, :future) create(:broadcast_message, :future)
expect(BroadcastMessage.current).to be_nil expect(BroadcastMessage.current).to be_nil
end end
it "should return nil if time has passed" do it "returns nil if time has passed" do
create(:broadcast_message, :expired) create(:broadcast_message, :expired)
expect(BroadcastMessage.current).to be_nil expect(BroadcastMessage.current).to be_nil
......
...@@ -32,7 +32,7 @@ describe Ci::Build, models: true do ...@@ -32,7 +32,7 @@ describe Ci::Build, models: true do
end end
let(:create_from_build) { Ci::Build.create_from build } let(:create_from_build) { Ci::Build.create_from build }
it 'there should be a pending task' do it 'exists a pending task' do
expect(Ci::Build.pending.count(:all)).to eq 0 expect(Ci::Build.pending.count(:all)).to eq 0
create_from_build create_from_build
expect(Ci::Build.pending.count(:all)).to be > 0 expect(Ci::Build.pending.count(:all)).to be > 0
...@@ -573,19 +573,19 @@ describe Ci::Build, models: true do ...@@ -573,19 +573,19 @@ describe Ci::Build, models: true do
let!(:rubocop_test) { create(:ci_build, pipeline: pipeline, name: 'rubocop', stage_idx: 1, stage: 'test') } let!(:rubocop_test) { create(:ci_build, pipeline: pipeline, name: 'rubocop', stage_idx: 1, stage: 'test') }
let!(:staging) { create(:ci_build, pipeline: pipeline, name: 'staging', stage_idx: 2, stage: 'deploy') } let!(:staging) { create(:ci_build, pipeline: pipeline, name: 'staging', stage_idx: 2, stage: 'deploy') }
it 'to have no dependents if this is first build' do it 'expects to have no dependents if this is first build' do
expect(build.depends_on_builds).to be_empty expect(build.depends_on_builds).to be_empty
end end
it 'to have one dependent if this is test' do it 'expects to have one dependent if this is test' do
expect(rspec_test.depends_on_builds.map(&:id)).to contain_exactly(build.id) expect(rspec_test.depends_on_builds.map(&:id)).to contain_exactly(build.id)
end end
it 'to have all builds from build and test stage if this is last' do it 'expects to have all builds from build and test stage if this is last' do
expect(staging.depends_on_builds.map(&:id)).to contain_exactly(build.id, rspec_test.id, rubocop_test.id) expect(staging.depends_on_builds.map(&:id)).to contain_exactly(build.id, rspec_test.id, rubocop_test.id)
end end
it 'to have retried builds instead the original ones' do it 'expects to have retried builds instead the original ones' do
retried_rspec = Ci::Build.retry(rspec_test) retried_rspec = Ci::Build.retry(rspec_test)
expect(staging.depends_on_builds.map(&:id)).to contain_exactly(build.id, retried_rspec.id, rubocop_test.id) expect(staging.depends_on_builds.map(&:id)).to contain_exactly(build.id, retried_rspec.id, rubocop_test.id)
end end
...@@ -655,23 +655,23 @@ describe Ci::Build, models: true do ...@@ -655,23 +655,23 @@ describe Ci::Build, models: true do
describe 'build erasable' do describe 'build erasable' do
shared_examples 'erasable' do shared_examples 'erasable' do
it 'should remove artifact file' do it 'removes artifact file' do
expect(build.artifacts_file.exists?).to be_falsy expect(build.artifacts_file.exists?).to be_falsy
end end
it 'should remove artifact metadata file' do it 'removes artifact metadata file' do
expect(build.artifacts_metadata.exists?).to be_falsy expect(build.artifacts_metadata.exists?).to be_falsy
end end
it 'should erase build trace in trace file' do it 'erases build trace in trace file' do
expect(build.trace).to be_empty expect(build.trace).to be_empty
end end
it 'should set erased to true' do it 'sets erased to true' do
expect(build.erased?).to be true expect(build.erased?).to be true
end end
it 'should set erase date' do it 'sets erase date' do
expect(build.erased_at).not_to be_falsy expect(build.erased_at).not_to be_falsy
end end
end end
...@@ -704,7 +704,7 @@ describe Ci::Build, models: true do ...@@ -704,7 +704,7 @@ describe Ci::Build, models: true do
include_examples 'erasable' include_examples 'erasable'
it 'should record user who erased a build' do it 'records user who erased a build' do
expect(build.erased_by).to eq user expect(build.erased_by).to eq user
end end
end end
...@@ -714,7 +714,7 @@ describe Ci::Build, models: true do ...@@ -714,7 +714,7 @@ describe Ci::Build, models: true do
include_examples 'erasable' include_examples 'erasable'
it 'should not set user who erased a build' do it 'does not set user who erased a build' do
expect(build.erased_by).to be_nil expect(build.erased_by).to be_nil
end end
end end
...@@ -750,7 +750,7 @@ describe Ci::Build, models: true do ...@@ -750,7 +750,7 @@ describe Ci::Build, models: true do
end end
describe '#erase' do describe '#erase' do
it 'should not raise error' do it 'does not raise error' do
expect { build.erase }.not_to raise_error expect { build.erase }.not_to raise_error
end end
end end
...@@ -900,7 +900,7 @@ describe Ci::Build, models: true do ...@@ -900,7 +900,7 @@ describe Ci::Build, models: true do
context 'when build is running' do context 'when build is running' do
before { build.run! } before { build.run! }
it 'should return false' do it 'returns false' do
expect(build.retryable?).to be false expect(build.retryable?).to be false
end end
end end
...@@ -908,7 +908,7 @@ describe Ci::Build, models: true do ...@@ -908,7 +908,7 @@ describe Ci::Build, models: true do
context 'when build is finished' do context 'when build is finished' do
before { build.success! } before { build.success! }
it 'should return true' do it 'returns true' do
expect(build.retryable?).to be true expect(build.retryable?).to be true
end end
end end
......
...@@ -427,7 +427,7 @@ describe Ci::Pipeline, models: true do ...@@ -427,7 +427,7 @@ describe Ci::Pipeline, models: true do
end end
describe '#update_state' do describe '#update_state' do
it 'execute update_state after touching object' do it 'executes update_state after touching object' do
expect(pipeline).to receive(:update_state).and_return(true) expect(pipeline).to receive(:update_state).and_return(true)
pipeline.touch pipeline.touch
end end
...@@ -435,7 +435,7 @@ describe Ci::Pipeline, models: true do ...@@ -435,7 +435,7 @@ describe Ci::Pipeline, models: true do
context 'dependent objects' do context 'dependent objects' do
let(:commit_status) { build :commit_status, pipeline: pipeline } let(:commit_status) { build :commit_status, pipeline: pipeline }
it 'execute update_state after saving dependent object' do it 'executes update_state after saving dependent object' do
expect(pipeline).to receive(:update_state).and_return(true) expect(pipeline).to receive(:update_state).and_return(true)
commit_status.save commit_status.save
end end
......
...@@ -4,12 +4,12 @@ describe Ci::Trigger, models: true do ...@@ -4,12 +4,12 @@ describe Ci::Trigger, models: true do
let(:project) { FactoryGirl.create :empty_project } let(:project) { FactoryGirl.create :empty_project }
describe 'before_validation' do describe 'before_validation' do
it 'should set an random token if none provided' do it 'sets an random token if none provided' do
trigger = FactoryGirl.create :ci_trigger_without_token, project: project trigger = FactoryGirl.create :ci_trigger_without_token, project: project
expect(trigger.token).not_to be_nil expect(trigger.token).not_to be_nil
end end
it 'should not set an random token if one provided' do it 'does not set an random token if one provided' do
trigger = FactoryGirl.create :ci_trigger, project: project trigger = FactoryGirl.create :ci_trigger, project: project
expect(trigger.token).to eq('token') expect(trigger.token).to eq('token')
end end
......
...@@ -133,7 +133,7 @@ describe CommitStatus, models: true do ...@@ -133,7 +133,7 @@ describe CommitStatus, models: true do
@commit5 = FactoryGirl.create :commit_status, pipeline: pipeline, name: 'aa', ref: 'bb', status: 'success' @commit5 = FactoryGirl.create :commit_status, pipeline: pipeline, name: 'aa', ref: 'bb', status: 'success'
end end
it 'return unique statuses' do it 'returns unique statuses' do
is_expected.to eq([@commit4, @commit5]) is_expected.to eq([@commit4, @commit5])
end end
end end
...@@ -149,7 +149,7 @@ describe CommitStatus, models: true do ...@@ -149,7 +149,7 @@ describe CommitStatus, models: true do
@commit5 = FactoryGirl.create :commit_status, pipeline: pipeline, name: 'ee', ref: nil, status: 'canceled' @commit5 = FactoryGirl.create :commit_status, pipeline: pipeline, name: 'ee', ref: nil, status: 'canceled'
end end
it 'return statuses that are running or pending' do it 'returns statuses that are running or pending' do
is_expected.to eq([@commit1, @commit2]) is_expected.to eq([@commit1, @commit2])
end end
end end
...@@ -160,7 +160,7 @@ describe CommitStatus, models: true do ...@@ -160,7 +160,7 @@ describe CommitStatus, models: true do
context 'when no before_sha is set for pipeline' do context 'when no before_sha is set for pipeline' do
before { pipeline.before_sha = nil } before { pipeline.before_sha = nil }
it 'return blank sha' do it 'returns blank sha' do
is_expected.to eq(Gitlab::Git::BLANK_SHA) is_expected.to eq(Gitlab::Git::BLANK_SHA)
end end
end end
...@@ -169,7 +169,7 @@ describe CommitStatus, models: true do ...@@ -169,7 +169,7 @@ describe CommitStatus, models: true do
let(:value) { '1234' } let(:value) { '1234' }
before { pipeline.before_sha = value } before { pipeline.before_sha = value }
it 'return the set value' do it 'returns the set value' do
is_expected.to eq(value) is_expected.to eq(value)
end end
end end
...@@ -186,7 +186,7 @@ describe CommitStatus, models: true do ...@@ -186,7 +186,7 @@ describe CommitStatus, models: true do
context 'stages list' do context 'stages list' do
subject { CommitStatus.where(pipeline: pipeline).stages } subject { CommitStatus.where(pipeline: pipeline).stages }
it 'return ordered list of stages' do it 'returns ordered list of stages' do
is_expected.to eq(%w(build test deploy)) is_expected.to eq(%w(build test deploy))
end end
end end
...@@ -194,7 +194,7 @@ describe CommitStatus, models: true do ...@@ -194,7 +194,7 @@ describe CommitStatus, models: true do
context 'stages with statuses' do context 'stages with statuses' do
subject { CommitStatus.where(pipeline: pipeline).latest.stages_status } subject { CommitStatus.where(pipeline: pipeline).latest.stages_status }
it 'return list of stages with statuses' do it 'returns list of stages with statuses' do
is_expected.to eq({ is_expected.to eq({
'build' => 'failed', 'build' => 'failed',
'test' => 'success', 'test' => 'success',
......
...@@ -26,53 +26,53 @@ describe Milestone, 'Milestoneish' do ...@@ -26,53 +26,53 @@ describe Milestone, 'Milestoneish' do
end end
describe '#closed_items_count' do describe '#closed_items_count' do
it 'should not count confidential issues for non project members' do it 'does not count confidential issues for non project members' do
expect(milestone.closed_items_count(non_member)).to eq 2 expect(milestone.closed_items_count(non_member)).to eq 2
end end
it 'should not count confidential issues for project members with guest role' do it 'does not count confidential issues for project members with guest role' do
expect(milestone.closed_items_count(guest)).to eq 2 expect(milestone.closed_items_count(guest)).to eq 2
end end
it 'should count confidential issues for author' do it 'counts confidential issues for author' do
expect(milestone.closed_items_count(author)).to eq 4 expect(milestone.closed_items_count(author)).to eq 4
end end
it 'should count confidential issues for assignee' do it 'counts confidential issues for assignee' do
expect(milestone.closed_items_count(assignee)).to eq 4 expect(milestone.closed_items_count(assignee)).to eq 4
end end
it 'should count confidential issues for project members' do it 'counts confidential issues for project members' do
expect(milestone.closed_items_count(member)).to eq 6 expect(milestone.closed_items_count(member)).to eq 6
end end
it 'should count all issues for admin' do it 'counts all issues for admin' do
expect(milestone.closed_items_count(admin)).to eq 6 expect(milestone.closed_items_count(admin)).to eq 6
end end
end end
describe '#total_items_count' do describe '#total_items_count' do
it 'should not count confidential issues for non project members' do it 'does not count confidential issues for non project members' do
expect(milestone.total_items_count(non_member)).to eq 4 expect(milestone.total_items_count(non_member)).to eq 4
end end
it 'should not count confidential issues for project members with guest role' do it 'does not count confidential issues for project members with guest role' do
expect(milestone.total_items_count(guest)).to eq 4 expect(milestone.total_items_count(guest)).to eq 4
end end
it 'should count confidential issues for author' do it 'counts confidential issues for author' do
expect(milestone.total_items_count(author)).to eq 7 expect(milestone.total_items_count(author)).to eq 7
end end
it 'should count confidential issues for assignee' do it 'counts confidential issues for assignee' do
expect(milestone.total_items_count(assignee)).to eq 7 expect(milestone.total_items_count(assignee)).to eq 7
end end
it 'should count confidential issues for project members' do it 'counts confidential issues for project members' do
expect(milestone.total_items_count(member)).to eq 10 expect(milestone.total_items_count(member)).to eq 10
end end
it 'should count all issues for admin' do it 'counts all issues for admin' do
expect(milestone.total_items_count(admin)).to eq 10 expect(milestone.total_items_count(admin)).to eq 10
end end
end end
...@@ -91,27 +91,27 @@ describe Milestone, 'Milestoneish' do ...@@ -91,27 +91,27 @@ describe Milestone, 'Milestoneish' do
end end
describe '#percent_complete' do describe '#percent_complete' do
it 'should not count confidential issues for non project members' do it 'does not count confidential issues for non project members' do
expect(milestone.percent_complete(non_member)).to eq 50 expect(milestone.percent_complete(non_member)).to eq 50
end end
it 'should not count confidential issues for project members with guest role' do it 'does not count confidential issues for project members with guest role' do
expect(milestone.percent_complete(guest)).to eq 50 expect(milestone.percent_complete(guest)).to eq 50
end end
it 'should count confidential issues for author' do it 'counts confidential issues for author' do
expect(milestone.percent_complete(author)).to eq 57 expect(milestone.percent_complete(author)).to eq 57
end end
it 'should count confidential issues for assignee' do it 'counts confidential issues for assignee' do
expect(milestone.percent_complete(assignee)).to eq 57 expect(milestone.percent_complete(assignee)).to eq 57
end end
it 'should count confidential issues for project members' do it 'counts confidential issues for project members' do
expect(milestone.percent_complete(member)).to eq 60 expect(milestone.percent_complete(member)).to eq 60
end end
it 'should count confidential issues for admin' do it 'counts confidential issues for admin' do
expect(milestone.percent_complete(admin)).to eq 60 expect(milestone.percent_complete(admin)).to eq 60
end end
end end
......
...@@ -41,7 +41,7 @@ describe ApplicationSetting, 'TokenAuthenticatable' do ...@@ -41,7 +41,7 @@ describe ApplicationSetting, 'TokenAuthenticatable' do
describe 'ensured! token' do describe 'ensured! token' do
subject { described_class.new.send("ensure_#{token_field}!") } subject { described_class.new.send("ensure_#{token_field}!") }
it 'should persist new token' do it 'persists new token' do
expect(subject).to eq described_class.current[token_field] expect(subject).to eq described_class.current[token_field]
end end
end end
......
...@@ -9,11 +9,11 @@ describe ForkedProjectLink, "add link on fork" do ...@@ -9,11 +9,11 @@ describe ForkedProjectLink, "add link on fork" do
@project_to = fork_project(project_from, user) @project_to = fork_project(project_from, user)
end end
it "project_to should know it is forked" do it "project_to knows it is forked" do
expect(@project_to.forked?).to be_truthy expect(@project_to.forked?).to be_truthy
end end
it "project should know who it is forked from" do it "project knows who it is forked from" do
expect(@project_to.forked_from_project).to eq(project_from) expect(@project_to.forked_from_project).to eq(project_from)
end end
end end
...@@ -29,15 +29,15 @@ describe '#forked?' do ...@@ -29,15 +29,15 @@ describe '#forked?' do
forked_project_link.save! forked_project_link.save!
end end
it "project_to should know it is forked" do it "project_to knows it is forked" do
expect(project_to.forked?).to be_truthy expect(project_to.forked?).to be_truthy
end end
it "project_from should not be forked" do it "project_from is not forked" do
expect(project_from.forked?).to be_falsey expect(project_from.forked?).to be_falsey
end end
it "project_to.destroy should destroy fork_link" do it "project_to.destroy destroys fork_link" do
expect(forked_project_link).to receive(:destroy) expect(forked_project_link).to receive(:destroy)
project_to.destroy project_to.destroy
end end
......
...@@ -29,15 +29,15 @@ describe GlobalMilestone, models: true do ...@@ -29,15 +29,15 @@ describe GlobalMilestone, models: true do
@global_milestones = GlobalMilestone.build_collection(milestones) @global_milestones = GlobalMilestone.build_collection(milestones)
end end
it 'should have all project milestones' do it 'has all project milestones' do
expect(@global_milestones.count).to eq(2) expect(@global_milestones.count).to eq(2)
end end
it 'should have all project milestones titles' do it 'has all project milestones titles' do
expect(@global_milestones.map(&:title)).to match_array(['Milestone v1.2', 'VD-123']) expect(@global_milestones.map(&:title)).to match_array(['Milestone v1.2', 'VD-123'])
end end
it 'should have all project milestones' do it 'has all project milestones' do
expect(@global_milestones.map { |group_milestone| group_milestone.milestones.count }.sum).to eq(6) expect(@global_milestones.map { |group_milestone| group_milestone.milestones.count }.sum).to eq(6)
end end
end end
...@@ -54,11 +54,11 @@ describe GlobalMilestone, models: true do ...@@ -54,11 +54,11 @@ describe GlobalMilestone, models: true do
@global_milestone = GlobalMilestone.new(milestone1_project1.title, milestones) @global_milestone = GlobalMilestone.new(milestone1_project1.title, milestones)
end end
it 'should have exactly one group milestone' do it 'has exactly one group milestone' do
expect(@global_milestone.title).to eq('Milestone v1.2') expect(@global_milestone.title).to eq('Milestone v1.2')
end end
it 'should have all project milestones with the same title' do it 'has all project milestones with the same title' do
expect(@global_milestone.milestones.count).to eq(3) expect(@global_milestone.milestones.count).to eq(3)
end end
end end
...@@ -66,7 +66,7 @@ describe GlobalMilestone, models: true do ...@@ -66,7 +66,7 @@ describe GlobalMilestone, models: true do
describe '#safe_title' do describe '#safe_title' do
let(:milestone) { create(:milestone, title: "git / test", project: project1) } let(:milestone) { create(:milestone, title: "git / test", project: project1) }
it 'should strip out slashes and spaces' do it 'strips out slashes and spaces' do
global_milestone = GlobalMilestone.new(milestone.title, [milestone]) global_milestone = GlobalMilestone.new(milestone.title, [milestone])
expect(global_milestone.safe_title).to eq('git-test') expect(global_milestone.safe_title).to eq('git-test')
......
...@@ -116,7 +116,7 @@ describe Group, models: true do ...@@ -116,7 +116,7 @@ describe Group, models: true do
let(:user) { create(:user) } let(:user) { create(:user) }
before { group.add_users([user.id], GroupMember::GUEST) } before { group.add_users([user.id], GroupMember::GUEST) }
it "should update the group permission" do it "updates the group permission" do
expect(group.group_members.guests.map(&:user)).to include(user) expect(group.group_members.guests.map(&:user)).to include(user)
group.add_users([user.id], GroupMember::DEVELOPER) group.add_users([user.id], GroupMember::DEVELOPER)
expect(group.group_members.developers.map(&:user)).to include(user) expect(group.group_members.developers.map(&:user)).to include(user)
...@@ -128,12 +128,12 @@ describe Group, models: true do ...@@ -128,12 +128,12 @@ describe Group, models: true do
let(:user) { create(:user) } let(:user) { create(:user) }
before { group.add_user(user, GroupMember::MASTER) } before { group.add_user(user, GroupMember::MASTER) }
it "should be true if avatar is image" do it "is true if avatar is image" do
group.update_attribute(:avatar, 'uploads/avatar.png') group.update_attribute(:avatar, 'uploads/avatar.png')
expect(group.avatar_type).to be_truthy expect(group.avatar_type).to be_truthy
end end
it "should be false if avatar is html page" do it "is false if avatar is html page" do
group.update_attribute(:avatar, 'uploads/avatar.html') group.update_attribute(:avatar, 'uploads/avatar.html')
expect(group.avatar_type).to eq(["only images allowed"]) expect(group.avatar_type).to eq(["only images allowed"])
end end
......
...@@ -24,7 +24,7 @@ describe ProjectHook, models: true do ...@@ -24,7 +24,7 @@ describe ProjectHook, models: true do
end end
describe '.push_hooks' do describe '.push_hooks' do
it 'should return hooks for push events only' do it 'returns hooks for push events only' do
hook = create(:project_hook, push_events: true) hook = create(:project_hook, push_events: true)
create(:project_hook, push_events: false) create(:project_hook, push_events: false)
expect(ProjectHook.push_hooks).to eq([hook]) expect(ProjectHook.push_hooks).to eq([hook])
...@@ -32,7 +32,7 @@ describe ProjectHook, models: true do ...@@ -32,7 +32,7 @@ describe ProjectHook, models: true do
end end
describe '.tag_push_hooks' do describe '.tag_push_hooks' do
it 'should return hooks for tag push events only' do it 'returns hooks for tag push events only' do
hook = create(:project_hook, tag_push_events: true) hook = create(:project_hook, tag_push_events: true)
create(:project_hook, tag_push_events: false) create(:project_hook, tag_push_events: false)
expect(ProjectHook.tag_push_hooks).to eq([hook]) expect(ProjectHook.tag_push_hooks).to eq([hook])
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment