Skip to content

Commit

Permalink
Merge pull request #304 from coopdevs/fix/membership-in-users-list
Browse files Browse the repository at this point in the history
Show data for membership in current organization
  • Loading branch information
sauloperez authored Jan 30, 2018
2 parents 1db6442 + 83c575d commit a9f6661
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 8 deletions.
6 changes: 6 additions & 0 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ def index
.eager_load(members: :account)
.page(params[:page])
.per(25)

@memberships = current_organization.members.
where(user_id: @users.map(&:id)).
includes(:account).each_with_object({}) do |mem, ob|
ob[mem.user_id] = mem
end
end

def show
Expand Down
2 changes: 1 addition & 1 deletion app/views/users/_user_rows.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<% users.each do |user| %>
<% membership = user.members.first %>
<% membership = memberships[user.id] %>

<%= content_tag(:tr, class: membership.active? ? "" : "bg-danger") do %>
<td>
Expand Down
2 changes: 1 addition & 1 deletion app/views/users/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
</tr>
</thead>
<tbody>
<%= render "user_rows", users: @users %>
<%= render "user_rows", users: @users, memberships: @memberships %>
</tbody>
</table>

Expand Down
41 changes: 35 additions & 6 deletions spec/controllers/users_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
require "spec_helper"

describe UsersController do
let (:test_organization) { Fabricate(:organization) }
let (:member_admin) do
let(:test_organization) { Fabricate(:organization) }
let(:member_admin) do
Fabricate(:member,
organization: test_organization,
manager: true)
end
let (:member) do
let(:member) do
Fabricate(:member,
organization: test_organization,
manager: false)
end
let (:another_member) do
let(:another_member) do
Fabricate(:member,
organization: test_organization,
manager: false)
end
let (:wrong_email_member) do
let(:wrong_email_member) do
Fabricate(:member,
organization: test_organization,
manager: false)
end
let (:empty_email_member) do
let(:empty_email_member) do
Fabricate(:member,
organization: test_organization,
manager: false)
Expand All @@ -38,6 +38,35 @@
before { set_browser_locale("ca") }

describe "GET #index" do
context 'when a user has many memberships' do
let!(:member_in_another_organization) { Fabricate(:member, user: user) }

before do
login(user)
member.account.update_attribute(
:balance,
Time.parse('13:33').seconds_since_midnight
)
end

it 'gets her membership in the current organization' do
get :index

expect(assigns(:memberships)).to eq({
member.user_id => member,
another_member.user_id => another_member,
member_admin.user_id => member_admin,
wrong_email_member.user_id => wrong_email_member,
empty_email_member.user_id => empty_email_member
})
end

it 'shows data for her membership in the current organization' do
get :index
expect(response.body).to include("<td> 13:33 </td>")
end
end

context "with an normal logged user" do
it "populates and array of users" do
login(user)
Expand Down

0 comments on commit a9f6661

Please sign in to comment.