summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/commits_controller.rb3
-rw-r--r--test/functional/commits_controller_test.rb14
2 files changed, 16 insertions, 1 deletions
diff --git a/app/controllers/commits_controller.rb b/app/controllers/commits_controller.rb
index 4663a1b..b14c1ec 100644
--- a/app/controllers/commits_controller.rb
+++ b/app/controllers/commits_controller.rb
@@ -57,7 +57,8 @@ class CommitsController < ApplicationController
handle_missing_sha and return
end
@comments = @repository.comments.find_all_by_sha1(@commit.id, :include => :user)
- if stale_conditional?([@commit.id, @comments.size], @commit.committed_date.utc)
+ last_modified = @comments.size > 0 ? @comments.last.created_at.utc : @commit.committed_date.utc
+ if stale_conditional?([@commit.id, @comments.size], last_modified)
@root = Breadcrumb::Commit.new(:repository => @repository, :id => @commit.id_abbrev)
@diffs = @commit.parents.empty? ? [] : @commit.diffs
@comment_count = @repository.comments.count(:all, :conditions => {:sha1 => @commit.id.to_s})
diff --git a/test/functional/commits_controller_test.rb b/test/functional/commits_controller_test.rb
index 98c326a..fac82ea 100644
--- a/test/functional/commits_controller_test.rb
+++ b/test/functional/commits_controller_test.rb
@@ -101,6 +101,20 @@ class CommitsControllerTest < ActionController::TestCase
assert_equal [], assigns(:diffs)
assert_select "#content p", /This is the initial commit in this repository/
end
+
+ should "have a different last-modified if there's a comment" do
+ Comment.create!({
+ :user => users(:johan),
+ :body => "foo",
+ :sha1 => @sha,
+ :target => @repository,
+ :project => @repository.project,
+ })
+ get :show, :project_id => @project.slug,
+ :repository_id => @repository.name, :id => @sha
+ assert_response :success
+ assert_not_equal "Fri, 18 Apr 2008 23:26:07 GMT", @response.headers["Last-Modified"]
+ end
end
context "Routing" do