2012-10-02 22:57:13 +00:00
require 'spec_helper'
describe Commit do
2014-01-22 19:03:52 +00:00
let ( :project ) { create :project }
2015-04-21 13:13:40 +00:00
let ( :commit ) { project . commit }
2012-10-02 22:57:13 +00:00
2013-04-01 13:56:25 +00:00
describe '#title' do
it " returns no_commit_message when safe_message is blank " do
2015-02-12 18:17:35 +00:00
allow ( commit ) . to receive ( :safe_message ) . and_return ( '' )
expect ( commit . title ) . to eq ( " --no commit message " )
2013-04-01 13:56:25 +00:00
end
2012-10-02 22:57:13 +00:00
2013-08-13 09:24:10 +00:00
it " truncates a message without a newline at 80 characters " do
2014-08-01 15:06:28 +00:00
message = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sodales id felis id blandit. Vivamus egestas lacinia lacus, sed rutrum mauris.'
2012-10-02 22:57:13 +00:00
2015-02-12 18:17:35 +00:00
allow ( commit ) . to receive ( :safe_message ) . and_return ( message )
2015-04-14 13:45:06 +00:00
expect ( commit . title ) . to eq ( " #{ message [ 0 .. 79 ] } … " )
2013-04-01 13:56:25 +00:00
end
2012-10-02 22:57:13 +00:00
2013-04-01 13:56:25 +00:00
it " truncates a message with a newline before 80 characters at the newline " do
message = commit . safe_message . split ( " " ) . first
2012-10-02 22:57:13 +00:00
2015-02-12 18:17:35 +00:00
allow ( commit ) . to receive ( :safe_message ) . and_return ( message + " \n " + message )
expect ( commit . title ) . to eq ( message )
2013-04-01 13:56:25 +00:00
end
2012-10-02 22:57:13 +00:00
2014-08-01 15:06:28 +00:00
it " does not truncates a message with a newline after 80 but less 100 characters " do
message = <<eos
Lorem ipsum dolor sit amet , consectetur adipiscing elit . Donec sodales id felis id blandit .
Vivamus egestas lacinia lacus , sed rutrum mauris .
eos
2012-10-02 22:57:13 +00:00
2015-02-12 18:17:35 +00:00
allow ( commit ) . to receive ( :safe_message ) . and_return ( message )
expect ( commit . title ) . to eq ( message . split ( " \n " ) . first )
2012-10-02 22:57:13 +00:00
end
end
2013-01-03 17:11:14 +00:00
describe " delegation " do
subject { commit }
2015-02-12 18:17:35 +00:00
it { is_expected . to respond_to ( :message ) }
it { is_expected . to respond_to ( :authored_date ) }
it { is_expected . to respond_to ( :committed_date ) }
it { is_expected . to respond_to ( :committer_email ) }
it { is_expected . to respond_to ( :author_email ) }
it { is_expected . to respond_to ( :parents ) }
it { is_expected . to respond_to ( :date ) }
it { is_expected . to respond_to ( :diffs ) }
it { is_expected . to respond_to ( :tree ) }
it { is_expected . to respond_to ( :id ) }
it { is_expected . to respond_to ( :to_patch ) }
2013-01-03 17:11:14 +00:00
end
2013-05-30 23:16:49 +00:00
describe '#closes_issues' do
let ( :issue ) { create :issue , project : project }
2014-10-03 05:48:35 +00:00
let ( :other_project ) { create :project , :public }
let ( :other_issue ) { create :issue , project : other_project }
2013-05-30 23:16:49 +00:00
it 'detects issues that this commit is marked as closing' do
2014-10-03 05:48:35 +00:00
commit . stub ( safe_message : " Fixes # #{ issue . iid } " )
2015-04-21 13:15:49 +00:00
expect ( commit . closes_issues ) . to eq ( [ issue ] )
2013-05-30 23:16:49 +00:00
end
2014-10-03 05:48:35 +00:00
it 'does not detect issues from other projects' do
ext_ref = " #{ other_project . path_with_namespace } # #{ other_issue . iid } "
commit . stub ( safe_message : " Fixes #{ ext_ref } " )
2015-04-21 13:15:49 +00:00
expect ( commit . closes_issues ) . to be_empty
2014-10-03 05:48:35 +00:00
end
2013-05-30 23:16:49 +00:00
end
it_behaves_like 'a mentionable' do
2015-04-16 20:25:25 +00:00
subject { commit }
2015-04-16 20:26:28 +00:00
let ( :author ) { create ( :user , email : commit . author_email ) }
2014-10-10 13:30:14 +00:00
let ( :backref_text ) { " commit #{ subject . id } " }
2013-05-30 23:16:49 +00:00
let ( :set_mentionable_text ) { - > ( txt ) { subject . stub ( safe_message : txt ) } }
# Include the subject in the repository stub.
let ( :extra_commits ) { [ subject ] }
end
2012-10-02 22:57:13 +00:00
end