summaryrefslogtreecommitdiff
path: root/spec/models/commit_spec.rb
diff options
context:
space:
mode:
authorash wilson <smashwilson@gmail.com>2013-05-30 23:16:49 +0000
committerAsh Wilson <smashwilson@gmail.com>2013-08-25 18:58:41 -0400
commitc8a115c0e3a9c8242c2a422572d47a49e0cb2874 (patch)
tree5a36c3e0f364fdfb710e01090fc81b9676ea53c4 /spec/models/commit_spec.rb
parent2b36dee64485062c69779217d4a202e5ca1b67bd (diff)
downloadgitlab-ce-c8a115c0e3a9c8242c2a422572d47a49e0cb2874.tar.gz
Link issues from comments and automatically close them
Any mention of Issues, MergeRequests, or Commits via GitLab-flavored markdown references in descriptions, titles, or attached Notes creates a back-reference Note that links to the original referencer. Furthermore, pushing commits with commit messages that match a (configurable) regexp to a project's default branch will close any issues mentioned by GFM in the matched closing phrase. If accepting a merge request would close any Issues in this way, a banner is appended to the merge request's main panel to indicate this.
Diffstat (limited to 'spec/models/commit_spec.rb')
-rw-r--r--spec/models/commit_spec.rb22
1 files changed, 21 insertions, 1 deletions
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index 73418efd3f2..fa556f94a1d 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -1,7 +1,8 @@
require 'spec_helper'
describe Commit do
- let(:commit) { create(:project_with_code).repository.commit }
+ let(:project) { create :project_with_code }
+ let(:commit) { project.repository.commit }
describe '#title' do
it "returns no_commit_message when safe_message is blank" do
@@ -46,4 +47,23 @@ describe Commit do
it { should respond_to(:id) }
it { should respond_to(:to_patch) }
end
+
+ describe '#closes_issues' do
+ let(:issue) { create :issue, project: project }
+
+ it 'detects issues that this commit is marked as closing' do
+ commit.stub(issue_closing_regex: /^([Cc]loses|[Ff]ixes) #\d+/, safe_message: "Fixes ##{issue.iid}")
+ commit.closes_issues(project).should == [issue]
+ end
+ end
+
+ it_behaves_like 'a mentionable' do
+ let(:subject) { commit }
+ let(:mauthor) { create :user, email: commit.author_email }
+ let(:backref_text) { "commit #{subject.sha[0..5]}" }
+ let(:set_mentionable_text) { ->(txt){ subject.stub(safe_message: txt) } }
+
+ # Include the subject in the repository stub.
+ let(:extra_commits) { [subject] }
+ end
end