diff options
author | Marius Mathiesen <marius@shortcut.no> | 2009-07-13 14:03:10 +0200 |
---|---|---|
committer | Marius Mathiesen <marius@shortcut.no> | 2009-07-13 15:15:42 +0200 |
commit | 0ec2f19f20a0bda061ed233779543ce1d1336f0c (patch) | |
tree | e6fb8a5022db2db8e1953dc37944612823afeec4 | |
parent | c8095706a0948361346e83e8de6974bf3a29674a (diff) | |
download | gitorious-mainline-outdated-0ec2f19f20a0bda061ed233779543ce1d1336f0c.zip gitorious-mainline-outdated-0ec2f19f20a0bda061ed233779543ce1d1336f0c.tar.gz gitorious-mainline-outdated-0ec2f19f20a0bda061ed233779543ce1d1336f0c.tar.bz2 |
Supplying a list of status tags per repository when listing merge requests:
- add a list of unique status_tags
- MergeRequest.from_filter uses a named scope by filter when given a non-defined string
MergeRequest.from_filter now uses either a predefined name scope, the by_status named scope
or open (when given nil)
-rw-r--r-- | app/controllers/merge_requests_controller.rb | 4 | ||||
-rw-r--r-- | app/models/merge_request.rb | 7 | ||||
-rw-r--r-- | app/models/repository.rb | 5 | ||||
-rw-r--r-- | app/views/merge_requests/index.html.erb | 4 | ||||
-rw-r--r-- | test/fixtures/merge_requests.yml | 12 | ||||
-rw-r--r-- | test/unit/merge_request_test.rb | 8 | ||||
-rw-r--r-- | test/unit/repository_test.rb | 8 |
7 files changed, 39 insertions, 9 deletions
diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 539c5a2..999e0bc 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -38,9 +38,11 @@ class MergeRequestsController < ApplicationController # #@open_merge_requests = @repository.merge_requests.open @open_merge_requests = @repository.merge_requests.from_filter(params[:status]).paginate(:all, {:page => params[:page], :per_page => 10}) + @recently_closed_merge_requests = @repository.merge_requests.closed.find(:all, { :limit => 10, :order => "updated_at desc" - }) + }) + @status_tags = @repository.merge_request_status_tags @comment_count = @repository.comments.count respond_to do |wants| wants.html diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 374fd50..bef3a0b 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -80,10 +80,13 @@ class MergeRequest < ActiveRecord::Base end end - named_scope :open, :conditions => ['LCASE(status_tag) in (?)', ['open','verifying']] + named_scope :open, :conditions => ['LCASE(status_tag) in (?) OR status_tag IS NULL', ['open','verifying']] named_scope :closed, :conditions => ["LCASE(status_tag) in (?)", ['merged','rejected']] named_scope :merged, :conditions => ["LCASE(status_tag) = ?", 'merged'] named_scope :rejected, :conditions => ["LCASE(status_tag) = ?", 'rejected'] + named_scope :by_status, lambda {|state| + {:conditions => ["LCASE(status_tag) = ?", state ] } + } def reopen_with_user(a_user) @@ -119,6 +122,8 @@ class MergeRequest < ActiveRecord::Base merged when "rejected" rejected + when String + by_status(filter_name) else open end diff --git a/app/models/repository.rb b/app/models/repository.rb index d41446d..5371991 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -572,6 +572,11 @@ class Repository < ActiveRecord::Base def has_tracking_repository? !tracking_repository.nil? end + + def merge_request_status_tags + result = MergeRequest.find_by_sql(["SELECT status_tag FROM merge_requests WHERE target_repository_id = ? GROUP BY status_tag", self.id]).collect(&:status_tag) + result.compact + end protected def sharded_hashed_path(h) diff --git a/app/views/merge_requests/index.html.erb b/app/views/merge_requests/index.html.erb index d6dcd7d..0db9702 100644 --- a/app/views/merge_requests/index.html.erb +++ b/app/views/merge_requests/index.html.erb @@ -39,7 +39,7 @@ <% content_for :sidebar do -%> <h4>Filter</h4> <ul class="links"> - <% ["open", "merged", "rejected"].each do |status| -%> + <% @status_tags.each do |status| -%> <li class="merge_requests"><%= link_to_status(@repository, status) -%></li> <% end -%> </ul> @@ -56,4 +56,4 @@ </li> <% end -%> </ul> -<% end -%>
\ No newline at end of file +<% end -%> diff --git a/test/fixtures/merge_requests.yml b/test/fixtures/merge_requests.yml index 37c952c..be1d41d 100644 --- a/test/fixtures/merge_requests.yml +++ b/test/fixtures/merge_requests.yml @@ -24,4 +24,14 @@ mikes_to_johans: proposal: A merge in progress sha_snapshot: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 ending_commit: 286e8afb9576366a2a43b12b94738f07 - status: <%= MergeRequest::STATUS_OPEN %>
\ No newline at end of file + status: <%= MergeRequest::STATUS_OPEN %> + status_tag: open + +johans_to_mikes: + user_id: 1 + source_repository_id: 1 + target_repository_id: 2 + proposal: Yeah + sha_snapshot: a99238 + ending_commit: a99238 + status_tag: orphaned
\ No newline at end of file diff --git a/test/unit/merge_request_test.rb b/test/unit/merge_request_test.rb index 86c0933..9054893 100644 --- a/test/unit/merge_request_test.rb +++ b/test/unit/merge_request_test.rb @@ -492,10 +492,10 @@ class MergeRequestTest < ActiveSupport::TestCase assert_equal [merge_requests(:moes_to_johans_open)], @repo.merge_requests.from_filter(nil) end - should "fall back to open merge-requests on invalid filter name" do - merge_requests(:moes_to_johans).update_attribute(:status_tag, 'merged') - assert !@repo.merge_requests.from_filter("kittens").include?(merge_requests(:moes_to_johans)) - assert_equal [merge_requests(:moes_to_johans_open)], @repo.merge_requests.from_filter("kittens") + should "fall back to using named_scope on other filter name" do + merge_requests(:moes_to_johans).update_attribute(:status_tag, 'kittens') + assert !@repo.merge_requests.from_filter("kittens").include?(merge_requests(:moes_to_johans_open)) + assert_equal [merge_requests(:moes_to_johans)], @repo.merge_requests.from_filter("kittens") end should "find merged merge-requests" do diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb index 277928c..7d53870 100644 --- a/test/unit/repository_test.rb +++ b/test/unit/repository_test.rb @@ -733,6 +733,14 @@ class RepositoryTest < ActiveSupport::TestCase assert !@other_repository.requires_signoff_on_merge_requests? end end + + context "Merge request status tags" do + setup {@repo = repositories(:johans)} + + should "have a list of used status tags" do + assert_equal %w(open), @repo.merge_request_status_tags + end + end context "Thottling" do setup{ Repository.destroy_all } |