From 157cd001d5bf2e014a7e87e1791b081f2f788db4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Mart=C3=ADn?= Date: Sat, 28 Jul 2018 21:28:22 +0200 Subject: [PATCH] Add spec to expose a bug finding manager logged in I've moved the method to the User model in order to make it easier to test. I'm not sure where it belongs, though. There was already a failing spec in `spec/features/management_spec.rb`, but it passed if run standalone because it only failed if previous tests had already created nine users or more. --- app/controllers/management/base_controller.rb | 2 +- app/models/user.rb | 4 ++++ spec/models/user_spec.rb | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/controllers/management/base_controller.rb b/app/controllers/management/base_controller.rb index 1bae36a76..ba8ece9f2 100644 --- a/app/controllers/management/base_controller.rb +++ b/app/controllers/management/base_controller.rb @@ -56,7 +56,7 @@ class Management::BaseController < ActionController::Base def manager_logged_in if current_manager - @manager_logged_in = User.find_by(id: session[:manager]["login"].last(1)) + @manager_logged_in = User.find_by_manager_login(session[:manager]["login"]) end end diff --git a/app/models/user.rb b/app/models/user.rb index 4b999207d..604132857 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -329,6 +329,10 @@ class User < ActiveRecord::Base where(conditions.to_hash).where(["username = ?", login]).first end + def self.find_by_manager_login(manager_login) + find_by(id: manager_login.last(1)) + end + def interests followables = follows.map(&:followable) followables.compact.map { |followable| followable.tags.map(&:name) }.flatten.compact.uniq diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index c201fc03c..1d860e121 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -690,4 +690,17 @@ describe User do end + describe ".find_by_manager_login" do + it "works with a low ID" do + user = create(:user) + expect(User.find_by_manager_login("admin_user_#{user.id}")).to eq user + end + + it "works with a high ID" do + 10.times { create(:user) } + user = User.last + expect(User.find_by_manager_login("admin_user_#{user.id}")).to eq user + end + end + end