Commit f8b1f66d782513549f1e2390b9e197dec822ef29

Authored by Rodrigo Souto
1 parent 895776ac

users-controller: order users by name

Also adding a new assert helper to test the order of a collection
without assuming all elements inside it.

(ActionItem2996)
app/controllers/admin/users_controller.rb
... ... @@ -16,6 +16,7 @@ class UsersController < AdminController
16 16 elsif @filter == 'deactivated_users'
17 17 scope = scope.deactivated
18 18 end
  19 + scope = scope.order('name ASC')
19 20 @q = params[:q]
20 21 @collection = find_by_contents(:people, scope, @q, {:per_page => per_page, :page => params[:npage]})[:results]
21 22 end
... ...
test/functional/users_controller_test.rb
... ... @@ -107,6 +107,16 @@ class UsersControllerTest < ActionController::TestCase
107 107 assert_equal false, u.activated?
108 108 end
109 109  
  110 + should 'order users by name' do
  111 + create_user('jeremy')
  112 + create_user('bill')
  113 + create_user('ana')
  114 + create_user('creed')
  115 + get :index
  116 +
  117 + assert_order ['ana', 'bill', 'creed', 'jeremy'], assigns(:collection).map(&:name)
  118 + end
  119 +
110 120 should 'response as XML to export users' do
111 121 get :download, :format => 'xml'
112 122 assert_equal 'text/xml', @response.content_type
... ...
test/test_helper.rb
... ... @@ -177,6 +177,19 @@ class ActiveSupport::TestCase
177 177 assert !tag, "expected no tag #{options.inspect}, but tag found in #{text.inspect}"
178 178 end
179 179  
  180 + def assert_order(reference, original)
  181 + original.each do |value|
  182 + if reference.include?(value)
  183 + if reference.first == value
  184 + reference.shift
  185 + else
  186 + assert false, "'#{value}' was found before it should be on: #{original.inspect}"
  187 + end
  188 + end
  189 + end
  190 + assert reference.blank?, "The following elements are not in the collection: #{reference.inspect}"
  191 + end
  192 +
180 193 # For models that render views (blocks, articles, ...)
181 194 def render(*args)
182 195 view_paths = @explicit_view_paths || ActionController::Base.view_paths
... ...