]> source.dussan.org Git - redmine.git/commitdiff
Fixes project query scope that does not take into account limit and offset options...
authorMarius Balteanu <marius.balteanu@zitec.com>
Sat, 23 Nov 2024 11:17:54 +0000 (11:17 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Sat, 23 Nov 2024 11:17:54 +0000 (11:17 +0000)
git-svn-id: https://svn.redmine.org/redmine/trunk@23300 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project_query.rb
test/unit/project_query_test.rb

index 6defbcc834f43288b0be2189b61d7241e78521ad..726721bd8fc15f657f0c306d24df9d3fc6c2054e 100644 (file)
@@ -156,7 +156,9 @@ class ProjectQuery < Query
     order_option << "#{Project.table_name}.lft ASC"
     scope = base_scope.
       order(order_option).
-      joins(joins_for_order_statement(order_option.join(',')))
+      joins(joins_for_order_statement(order_option.join(','))).
+      limit(options[:limit]).
+      offset(options[:offset])
 
     if has_custom_field_column?
       scope = scope.preload(:custom_values)
index 360bc08b71baeb7e934bd5d839728d53b8b6319e..156949ea8a41fc7b7fb20f654057eb8fb0ec3334 100644 (file)
@@ -162,4 +162,18 @@ class ProjectQueryTest < ActiveSupport::TestCase
     assert_not_nil last_activitiy_date
     assert_equal Redmine::Activity::Fetcher.new(User.current).events(nil, nil, :project => Project.find(1)).first.updated_on, last_activitiy_date
   end
+
+  def test_results_scope_with_offset_and_limit
+    q = ProjectQuery.new
+
+    ((q.results_scope.count / 2) + 1).times do |i|
+      limit = 2
+      offset = i * 2
+
+      scope_without = q.results_scope.offset(offset).limit(limit).ids
+      scope_with = q.results_scope(:offset => offset, :limit => limit).ids
+
+      assert_equal scope_without, scope_with
+    end
+  end
 end