From 466f8967e272ef38bc3f8061358ddfa7caacd6f7 Mon Sep 17 00:00:00 2001 From: Hauke Klement Date: Mon, 23 Feb 2015 10:39:04 +0100 Subject: [PATCH] eliminated naming clash with Sorcery --- app/controllers/sessions_controller.rb | 2 +- app/models/concerns/user.rb | 8 ++------ app/policies/admin_or_author_policy.rb | 2 +- app/policies/exercise_policy.rb | 2 +- app/policies/team_policy.rb | 2 +- app/views/application/_breadcrumbs.html.slim | 2 +- app/views/application/_navigation.html.slim | 2 +- app/views/application/_session.html.slim | 2 +- spec/controllers/sessions_controller_spec.rb | 4 ++-- spec/models/external_user_spec.rb | 12 ++++++++++++ spec/models/internal_user_spec.rb | 12 ++++++++++++ 11 files changed, 35 insertions(+), 15 deletions(-) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index a2036d81..f605d782 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -26,7 +26,7 @@ class SessionsController < ApplicationController end def destroy - if current_user.external? + if current_user.external_user? clear_lti_session_data else logout diff --git a/app/models/concerns/user.rb b/app/models/concerns/user.rb index 5f80152e..ee72a715 100644 --- a/app/models/concerns/user.rb +++ b/app/models/concerns/user.rb @@ -16,12 +16,8 @@ module User define_method("#{role}?") { try(:role) == role } end - def external? - is_a?(ExternalUser) - end - - def internal? - is_a?(InternalUser) + [ExternalUser, InternalUser].each do |klass| + define_method("#{klass.name.underscore}?") { is_a?(klass) } end def to_s diff --git a/app/policies/admin_or_author_policy.rb b/app/policies/admin_or_author_policy.rb index 7ab1db5e..195d8438 100644 --- a/app/policies/admin_or_author_policy.rb +++ b/app/policies/admin_or_author_policy.rb @@ -1,6 +1,6 @@ class AdminOrAuthorPolicy < ApplicationPolicy [:create?, :index?, :new?].each do |action| - define_method(action) { @user.internal? } + define_method(action) { @user.internal_user? } end [:destroy?, :edit?, :show?, :update?].each do |action| diff --git a/app/policies/exercise_policy.rb b/app/policies/exercise_policy.rb index 3ba765ca..ea8fb768 100644 --- a/app/policies/exercise_policy.rb +++ b/app/policies/exercise_policy.rb @@ -21,7 +21,7 @@ class ExercisePolicy < AdminOrAuthorPolicy def resolve if @user.admin? @scope.all - elsif @user.internal? + elsif @user.internal_user? @scope.where("user_id = #{@user.id} OR public = TRUE OR (team_id IS NOT NULL AND team_id IN (SELECT t.id FROM teams t JOIN internal_users_teams iut ON t.id = iut.team_id WHERE iut.internal_user_id = #{@user.id}))") else @scope.none diff --git a/app/policies/team_policy.rb b/app/policies/team_policy.rb index a03d63b7..ed48699d 100644 --- a/app/policies/team_policy.rb +++ b/app/policies/team_policy.rb @@ -1,6 +1,6 @@ class TeamPolicy < ApplicationPolicy [:create?, :index?, :new?].each do |action| - define_method(action) { @user.internal? } + define_method(action) { @user.internal_user? } end [:destroy?, :edit?, :show?, :update?].each do |action| diff --git a/app/views/application/_breadcrumbs.html.slim b/app/views/application/_breadcrumbs.html.slim index b62104cf..2a1f33a8 100644 --- a/app/views/application/_breadcrumbs.html.slim +++ b/app/views/application/_breadcrumbs.html.slim @@ -1,4 +1,4 @@ -- if current_user.try(:internal?) +- if current_user.try(:internal_user?) ul.breadcrumb - if model = Kernel.const_get(controller_name.classify) rescue nil - object = model.find_by(id: params[:id]) diff --git a/app/views/application/_navigation.html.slim b/app/views/application/_navigation.html.slim index 01f2811e..c6afd5f5 100644 --- a/app/views/application/_navigation.html.slim +++ b/app/views/application/_navigation.html.slim @@ -1,4 +1,4 @@ -- if current_user.try(:internal?) +- if current_user.try(:internal_user?) ul.nav.navbar-nav li.dropdown a.dropdown-toggle data-toggle='dropdown' href='#' diff --git a/app/views/application/_session.html.slim b/app/views/application/_session.html.slim index 02047cfe..fb401cdb 100644 --- a/app/views/application/_session.html.slim +++ b/app/views/application/_session.html.slim @@ -1,5 +1,5 @@ - if current_user - - if current_user.internal? + - if current_user.internal_user? li.dropdown a.dropdown-toggle data-toggle='dropdown' href='#' i.glyphicon.glyphicon-user diff --git a/spec/controllers/sessions_controller_spec.rb b/spec/controllers/sessions_controller_spec.rb index 017fbec8..d06ca7f8 100644 --- a/spec/controllers/sessions_controller_spec.rb +++ b/spec/controllers/sessions_controller_spec.rb @@ -129,7 +129,7 @@ describe SessionsController do context 'with an internal user' do before(:each) do - allow(user).to receive(:external?).and_return(false) + allow(user).to receive(:external_user?).and_return(false) allow(user).to receive(:forget_me!) delete :destroy end @@ -146,7 +146,7 @@ describe SessionsController do context 'with an external user' do before(:each) do - allow(user).to receive(:external?).and_return(true) + allow(user).to receive(:external_user?).and_return(true) delete :destroy end diff --git a/spec/models/external_user_spec.rb b/spec/models/external_user_spec.rb index 29243246..a47f4aca 100644 --- a/spec/models/external_user_spec.rb +++ b/spec/models/external_user_spec.rb @@ -17,6 +17,18 @@ describe ExternalUser do end end + describe '#external_user?' do + it 'is true' do + expect(user.external_user?).to be true + end + end + + describe '#internal_user?' do + it 'is false' do + expect(user.internal_user?).to be false + end + end + describe '#teacher?' do it 'is false' do expect(FactoryGirl.build(:external_user).teacher?).to be false diff --git a/spec/models/internal_user_spec.rb b/spec/models/internal_user_spec.rb index f7f01f20..28b313dd 100644 --- a/spec/models/internal_user_spec.rb +++ b/spec/models/internal_user_spec.rb @@ -56,6 +56,18 @@ describe InternalUser do end end + describe '#external_user?' do + it 'is false' do + expect(user.external_user?).to be false + end + end + + describe '#internal_user?' do + it 'is true' do + expect(user.internal_user?).to be true + end + end + describe '#teacher?' do it 'is only true for teachers' do expect(FactoryGirl.build(:admin).teacher?).to be false