From 475374090aed656f9f423d2650a6cd70f80c0911 Mon Sep 17 00:00:00 2001 From: Ahmad Farhat Date: Mon, 24 Feb 2020 16:48:51 -0500 Subject: [PATCH] Fixed issue with rooms not correctly ordering (#963) --- app/models/user.rb | 5 +++++ app/views/rooms/show.html.erb | 2 +- spec/models/user_spec.rb | 22 ++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 0d14ea3d..d87e6a4b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -103,6 +103,11 @@ class User < ApplicationRecord order(Arel.sql("#{column} #{direction}")) end + # Returns a list of rooms ordered by last session + def ordered_rooms + [main_room] + rooms.where.not(id: main_room.id).order("last_session desc") + end + # Activates an account and initialize a users main room def activate update_attributes(email_verified: true, activated_at: Time.zone.now) diff --git a/app/views/rooms/show.html.erb b/app/views/rooms/show.html.erb index 99413afc..897768d1 100644 --- a/app/views/rooms/show.html.erb +++ b/app/views/rooms/show.html.erb @@ -77,7 +77,7 @@
- <% current_user.rooms.each do |room| %> + <% current_user.ordered_rooms.each do |room| %>
<%= link_to room do %> <%= render "rooms/components/room_block", room: room %> diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 44568837..7ab823f5 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -112,6 +112,28 @@ describe User, type: :model do end end + context '#ordered_rooms' do + it 'correctly orders the users rooms' do + user = create(:user) + room1 = create(:room, owner: user) + room2 = create(:room, owner: user) + room3 = create(:room, owner: user) + room4 = create(:room, owner: user) + + room4.update_attributes(sessions: 1, last_session: "2020-02-24 19:52:57") + room3.update_attributes(sessions: 1, last_session: "2020-01-25 19:52:57") + room2.update_attributes(sessions: 1, last_session: "2019-09-05 19:52:57") + room1.update_attributes(sessions: 1, last_session: "2015-02-24 19:52:57") + + rooms = user.ordered_rooms + expect(rooms[0]).to eq(user.main_room) + expect(rooms[1]).to eq(room4) + expect(rooms[2]).to eq(room3) + expect(rooms[3]).to eq(room2) + expect(rooms[4]).to eq(room1) + end + end + context 'password reset' do it 'creates token and respective reset digest' do user = create(:user)