Project

General

Profile

Feature #15201 » 15201_include_locked_members_in_assignee_users.patch

Marius BĂLTEANU, 2017-05-14 08:48

View differences:

app/models/principal.rb
89 89
      where("1=0")
90 90
    else
91 91
      ids = projects.map(&:id)
92
      active.where("#{Principal.table_name}.id IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE project_id IN (?))", ids)
92
      # include active and locked users
93
      where(:status => [STATUS_LOCKED, STATUS_ACTIVE]).
94
      where("#{Principal.table_name}.id IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE project_id IN (?))", ids)
93 95
    end
94 96
  }
95 97
  # Principals that are not members of projects
app/models/query.rb
509 509
    @principal ||= begin
510 510
      principals = []
511 511
      if project
512
        principals += project.principals.visible
512
        principals += Principal.member_of(project).visible
513 513
        unless project.leaf?
514 514
          principals += Principal.member_of(project.descendants.visible).visible
515 515
        end
test/unit/principal_test.rb
52 52
    assert_equal expected.map(&:id).sort, Principal.visible(user).pluck(:id).sort
53 53
  end
54 54

  
55
  def test_member_of_scope_should_return_the_union_of_all_members
55
  def test_member_of_scope_should_return_the_union_of_all_active_and_locked_members
56 56
    projects = Project.find([1])
57
    assert_equal [3, 2], Principal.member_of(projects).sort.map(&:id)
57
    assert_equal [3, 5, 2], Principal.member_of(projects).sort.map(&:id)
58 58
    projects = Project.find([1, 2])
59
    assert_equal [3, 2, 8, 11], Principal.member_of(projects).sort.map(&:id)
59
    assert_equal [3, 5, 2, 8, 11], Principal.member_of(projects).sort.map(&:id)
60 60
  end
61 61

  
62 62
  def test_member_of_scope_should_be_empty_for_no_projects
(1-1/6)