@@ -31,6 +31,13 class Member < ActiveRecord::Base | |||
|
31 | 31 | |
|
32 | 32 | scope :active, lambda { joins(:principal).where(:users => {:status => Principal::STATUS_ACTIVE})} |
|
33 | 33 | |
|
34 | # Sort by first role and principal | |
|
35 | scope :sorted, lambda { | |
|
36 | includes(:member_roles, :roles, :principal). | |
|
37 | reorder("#{Role.table_name}.position"). | |
|
38 | order(Principal.fields_for_order_statement) | |
|
39 | } | |
|
40 | ||
|
34 | 41 | alias :base_reload :reload |
|
35 | 42 | def reload(*args) |
|
36 | 43 | @managed_roles = nil |
@@ -1,5 +1,5 | |||
|
1 | 1 | <% roles = Role.find_all_givable |
|
2 |
members = @project.memberships.active. |
|
|
2 | members = @project.memberships.active.sorted.to_a %> | |
|
3 | 3 | |
|
4 | 4 | <p><%= link_to l(:label_member_new), new_project_membership_path(@project), :remote => true, :class => "icon icon-add" %></p> |
|
5 | 5 |
@@ -38,6 +38,12 class MemberTest < ActiveSupport::TestCase | |||
|
38 | 38 | @jsmith = Member.find(1) |
|
39 | 39 | end |
|
40 | 40 | |
|
41 | def test_sorted_scope_on_project_members | |
|
42 | members = Project.find(1).members.sorted.to_a | |
|
43 | roles = members.map {|m| m.roles.sort.first} | |
|
44 | assert_equal roles, roles.sort | |
|
45 | end | |
|
46 | ||
|
41 | 47 | def test_create |
|
42 | 48 | member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2]) |
|
43 | 49 | assert member.save |
General Comments 0
You need to be logged in to leave comments.
Login now