]> git.openstreetmap.org Git - rails.git/commitdiff
Link to previous/next nonempty user's changeset on changeset pages
authorAnton Khorev <tony29@yandex.ru>
Wed, 1 May 2024 12:02:59 +0000 (15:02 +0300)
committerAnton Khorev <tony29@yandex.ru>
Wed, 1 May 2024 12:02:59 +0000 (15:02 +0300)
app/controllers/changesets_controller.rb
test/controllers/changesets_controller_test.rb

index 3ea5fb64e96288551aac8169b5dfaaecc5630087..6a80f260ad05f99128a631558c2adac886f49b2a 100644 (file)
@@ -84,8 +84,9 @@ class ChangesetsController < ApplicationController
     @way_pages, @ways = paginate(:old_ways, :conditions => { :changeset_id => @changeset.id }, :per_page => 20, :parameter => "way_page")
     @relation_pages, @relations = paginate(:old_relations, :conditions => { :changeset_id => @changeset.id }, :per_page => 20, :parameter => "relation_page")
     if @changeset.user.active? && @changeset.user.data_public?
-      @next_by_user = @changeset.user.changesets.where("id > ?", @changeset.id).reorder(:id => :asc).first
-      @prev_by_user = @changeset.user.changesets.where("id < ?", @changeset.id).reorder(:id => :desc).first
+      changesets = conditions_nonempty(@changeset.user.changesets)
+      @next_by_user = changesets.where("id > ?", @changeset.id).reorder(:id => :asc).first
+      @prev_by_user = changesets.where("id < ?", @changeset.id).reorder(:id => :desc).first
     end
     render :layout => map_layout
   rescue ActiveRecord::RecordNotFound
index 1fd9de2e810fb8a9735731055213fecd5148f967..3d264181c4cde89bb6e65dea54d6291d4351bb5a 100644 (file)
@@ -321,13 +321,26 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest
 
   def test_show_adjacent_changesets
     user = create(:user)
-    changesets = create_list(:changeset, 3, :user => user)
+    changesets = create_list(:changeset, 3, :user => user, :num_changes => 1)
 
     sidebar_browse_check :changeset_path, changesets[1].id, "changesets/show"
     assert_dom "a[href='#{changeset_path changesets[0]}']", :count => 1
     assert_dom "a[href='#{changeset_path changesets[2]}']", :count => 1
   end
 
+  def test_show_adjacent_nonempty_changesets
+    user = create(:user)
+    changeset1 = create(:changeset, :user => user, :num_changes => 1)
+    create(:changeset, :user => user, :num_changes => 0)
+    changeset3 = create(:changeset, :user => user, :num_changes => 1)
+    create(:changeset, :user => user, :num_changes => 0)
+    changeset5 = create(:changeset, :user => user, :num_changes => 1)
+
+    sidebar_browse_check :changeset_path, changeset3.id, "changesets/show"
+    assert_dom "a[href='#{changeset_path changeset1}']", :count => 1
+    assert_dom "a[href='#{changeset_path changeset5}']", :count => 1
+  end
+
   ##
   # This should display the last 20 non-empty changesets
   def test_feed