def validate_branches
- if target_branch == source_branch
+ if target_branch == source_branch
errors.add :base, "You can not use same branch for source and target branches"
end
end
def last_commit
project.commit(source_branch)
end
+
+ # Return the number of +1 comments (upvotes)
+ def upvotes
+ notes.select(&:upvote?).size
+ end
end
# == Schema Information
#
%span.label.important critical
- if issue.today?
%span.label.success today
+ - if issue.notes.any?
+ %span.label= pluralize issue.notes.count, 'note'
- if issue.upvotes > 0
%span.label.success= "+#{issue.upvotes}"
- else
= link_to 'Close', project_issue_path(@project, @issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "btn", :title => "Close Issue"
- if can?(current_user, :admin_project, @project) || @issue.author == current_user
- = link_to edit_project_issue_path(@project, @issue), :class => "btn small" do
+ = link_to edit_project_issue_path(@project, @issue), :class => "btn" do
Edit
+ - if @issue.upvotes > 0
+ %button.btn.success= "+#{@issue.upvotes}"
+
+
.back_link
= link_to project_issues_path(@project) do
← To issues list
= image_tag gravatar_icon(@issue.assignee_email), :width => 16, :class => "lil_av"
%strong.author= link_to_issue_assignee(@issue)
- - if @issue.upvotes > 0
- %span.label.success= "+#{@issue.upvotes}"
-
%hr
%div= simple_format @issue.title
authored
= time_ago_in_words(merge_request.created_at)
ago
+ - if merge_request.notes.any?
+ %span.label= pluralize merge_request.notes.count, 'note'
+ - if merge_request.upvotes > 0
+ %span.label.success= "+#{merge_request.upvotes}"
.right
%span.label= merge_request.source_branch
→
= link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small" do
Edit
+ - if @merge_request.upvotes > 0
+ %button.btn.success= "+#{@merge_request.upvotes}"
+
.back_link
= link_to project_merge_requests_path(@project) do
← To merge requests
:author => Factory(:user),
:assignee => Factory(:user),
:project => Factory.create(:project)).should be_valid }
+
+ describe "plus 1" do
+ let(:project) { Factory(:project) }
+ subject {
+ Factory.create(:merge_request,
+ :author => Factory(:user),
+ :assignee => Factory(:user),
+ :project => project)
+ }
+
+ it "with no notes has a 0/0 score" do
+ subject.upvotes.should == 0
+ end
+
+ it "should recognize non-+1 notes" do
+ subject.notes << Factory(:note, note: "No +1 here", project: Factory(:project, path: 'plusone', code: 'plusone'))
+ subject.should have(1).note
+ subject.notes.first.upvote?.should be_false
+ subject.upvotes.should == 0
+ end
+
+ it "should recognize a single +1 note" do
+ subject.notes << Factory(:note, note: "+1 This is awesome", project: Factory(:project, path: 'plusone', code: 'plusone'))
+ subject.upvotes.should == 1
+ end
+
+ it "should recognize a multiple +1 notes" do
+ subject.notes << Factory(:note, note: "+1 This is awesome", project: Factory(:project, path: 'plusone', code: 'plusone'))
+ subject.notes << Factory(:note, note: "+1 I want this", project: Factory(:project, path: 'plustwo', code: 'plustwo'))
+ subject.upvotes.should == 2
+ end
+ end
end
# == Schema Information
#