Skip to content

Commit

Permalink
Show data for membership in current organization
Browse files Browse the repository at this point in the history
Now, we show the first membership of the user regardless of the
organization it belongs to.
  • Loading branch information
sauloperez committed Jan 30, 2018
1 parent 1db6442 commit 83c575d
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 83c575d

Please sign in to comment.