2012-10-02 18:57:13 -04:00
require 'spec_helper'
describe Commit do
2014-01-22 14:03:52 -05:00
let ( :project ) { create :project }
2015-04-21 09:13:40 -04:00
let ( :commit ) { project . commit }
2012-10-02 18:57:13 -04:00
2013-04-01 09:56:25 -04:00
describe '#title' do
it " returns no_commit_message when safe_message is blank " do
2015-02-12 13:17:35 -05:00
allow ( commit ) . to receive ( :safe_message ) . and_return ( '' )
expect ( commit . title ) . to eq ( " --no commit message " )
2013-04-01 09:56:25 -04:00
end
2012-10-02 18:57:13 -04:00
2013-08-13 05:24:10 -04:00
it " truncates a message without a newline at 80 characters " do
2014-08-01 11:06:28 -04: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 18:57:13 -04:00
2015-02-12 13:17:35 -05:00
allow ( commit ) . to receive ( :safe_message ) . and_return ( message )
2015-04-14 09:45:06 -04:00
expect ( commit . title ) . to eq ( " #{ message [ 0 .. 79 ] } … " )
2013-04-01 09:56:25 -04:00
end
2012-10-02 18:57:13 -04:00
2013-04-01 09:56:25 -04:00
it " truncates a message with a newline before 80 characters at the newline " do
message = commit . safe_message . split ( " " ) . first
2012-10-02 18:57:13 -04:00
2015-02-12 13:17:35 -05:00
allow ( commit ) . to receive ( :safe_message ) . and_return ( message + " \n " + message )
expect ( commit . title ) . to eq ( message )
2013-04-01 09:56:25 -04:00
end
2012-10-02 18:57:13 -04:00
2014-08-01 11:06:28 -04: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 18:57:13 -04:00
2015-02-12 13:17:35 -05:00
allow ( commit ) . to receive ( :safe_message ) . and_return ( message )
expect ( commit . title ) . to eq ( message . split ( " \n " ) . first )
2012-10-02 18:57:13 -04:00
end
end
2013-01-03 12:11:14 -05:00
describe " delegation " do
subject { commit }
2015-02-12 13:17:35 -05: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 12:11:14 -05:00
end
2013-05-30 19:16:49 -04:00
describe '#closes_issues' do
let ( :issue ) { create :issue , project : project }
2014-10-03 01:48:35 -04:00
let ( :other_project ) { create :project , :public }
let ( :other_issue ) { create :issue , project : other_project }
2013-05-30 19:16:49 -04:00
it 'detects issues that this commit is marked as closing' do
2014-10-03 01:48:35 -04:00
commit . stub ( safe_message : " Fixes # #{ issue . iid } " )
2015-04-21 09:15:49 -04:00
expect ( commit . closes_issues ) . to eq ( [ issue ] )
2013-05-30 19:16:49 -04:00
end
2014-10-03 01:48:35 -04: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 09:15:49 -04:00
expect ( commit . closes_issues ) . to be_empty
2014-10-03 01:48:35 -04:00
end
2013-05-30 19:16:49 -04:00
end
it_behaves_like 'a mentionable' do
2015-04-16 16:25:25 -04:00
subject { commit }
2015-04-16 16:26:28 -04:00
let ( :author ) { create ( :user , email : commit . author_email ) }
2014-10-10 09:30:14 -04:00
let ( :backref_text ) { " commit #{ subject . id } " }
2013-05-30 19:16:49 -04: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 18:57:13 -04:00
end