refactored comments_controller tests; fixed access to Administration link into user_menu view
This commit is contained in:
parent
a9a43d726f
commit
37339dccc1
4 changed files with 19 additions and 42 deletions
|
|
@ -94,6 +94,7 @@ class Ability
|
||||||
signed_in_with_volunteers_coordinator_role(user) if user.has_role? :volunteer_coordinator, :any
|
signed_in_with_volunteers_coordinator_role(user) if user.has_role? :volunteer_coordinator, :any
|
||||||
|
|
||||||
# for users with any role
|
# for users with any role
|
||||||
|
can :access, Admin
|
||||||
can [:show], Conference
|
can [:show], Conference
|
||||||
can :index, Commercial, commercialable_type: 'Conference'
|
can :index, Commercial, commercialable_type: 'Conference'
|
||||||
cannot [:edit, :update, :destroy], Question, global: true
|
cannot [:edit, :update, :destroy], Question, global: true
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,7 @@
|
||||||
= link_to(destroy_user_session_path, :method=>'delete') do
|
= link_to(destroy_user_session_path, :method=>'delete') do
|
||||||
%span.fa.fa-minus
|
%span.fa.fa-minus
|
||||||
Sign out
|
Sign out
|
||||||
- if current_user.is_admin || (current_user.has_any_role? :admin, { :name => :organizer, :resource => :any },
|
- if can? :access, Admin
|
||||||
{ :name => :cfp, :resource => :any },
|
|
||||||
{ :name => :info_desk, :resource => :any },
|
|
||||||
{ :name => :volunteer_coordinator, :resource => :any })
|
|
||||||
%li.divider
|
%li.divider
|
||||||
%li
|
%li
|
||||||
= link_to(admin_conference_index_path()) do
|
= link_to(admin_conference_index_path()) do
|
||||||
|
|
|
||||||
|
|
@ -2,16 +2,19 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Admin::CommentsController, type: :controller do
|
describe Admin::CommentsController, type: :controller do
|
||||||
|
|
||||||
|
# It is necessary to use bang version of let to build roles before user
|
||||||
|
let(:conference) { create(:conference) }
|
||||||
|
let!(:first_user) { create(:user) }
|
||||||
|
let!(:organizer_role) { create(:role, name: 'organizer', resource: conference) }
|
||||||
|
let(:organizer) { create(:user, role_ids: organizer_role.id, last_sign_in_at: Time.now - 1.day) }
|
||||||
|
let(:participant) { create(:user) }
|
||||||
|
let(:event) { create(:event, conference: conference) }
|
||||||
|
let(:comment) { create(:comment, commentable_type: 'Event', commentable_id: event.id) }
|
||||||
|
|
||||||
context 'not logged in user' do
|
context 'not logged in user' do
|
||||||
describe 'GET #index' do
|
describe 'GET #index' do
|
||||||
it 'renders the :index template' do
|
it 'renders the :index template' do
|
||||||
conference = create(:conference)
|
comment
|
||||||
first_user = create(:user)
|
|
||||||
organizer_role = create(:role, name: 'organizer', resource: conference)
|
|
||||||
organizer = create(:user, role_ids: organizer_role.id)
|
|
||||||
event = create(:event, conference: conference)
|
|
||||||
comment = create(:comment, commentable_type: 'Event', commentable_id: event.id)
|
|
||||||
|
|
||||||
get :index
|
get :index
|
||||||
expect(response).to redirect_to(user_session_path)
|
expect(response).to redirect_to(user_session_path)
|
||||||
end
|
end
|
||||||
|
|
@ -19,16 +22,12 @@ describe Admin::CommentsController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'logged in as admin, organizer or cfp' do
|
context 'logged in as admin, organizer or cfp' do
|
||||||
|
before :each do
|
||||||
|
sign_in(organizer)
|
||||||
|
end
|
||||||
describe 'GET #index' do
|
describe 'GET #index' do
|
||||||
it 'populates a hash with comments' do
|
it 'populates a hash with comments' do
|
||||||
conference = create(:conference)
|
comment
|
||||||
first_user = create(:user)
|
|
||||||
organizer_role = create(:role, name: 'organizer', resource: conference)
|
|
||||||
organizer = create(:user, role_ids: organizer_role.id)
|
|
||||||
event = create(:event, conference: conference)
|
|
||||||
comment = create(:comment, commentable_type: 'Event', commentable_id: event.id)
|
|
||||||
sign_in(organizer)
|
|
||||||
|
|
||||||
get :index
|
get :index
|
||||||
expect(assigns(:comments)).to be_a(Hash)
|
expect(assigns(:comments)).to be_a(Hash)
|
||||||
# assigns(:comments).first returns an array of first pair key-value from hash.
|
# assigns(:comments).first returns an array of first pair key-value from hash.
|
||||||
|
|
@ -36,26 +35,12 @@ describe Admin::CommentsController, type: :controller do
|
||||||
expect(assigns(:comments).first.first.title).to eq(comment.commentable.conference.title)
|
expect(assigns(:comments).first.first.title).to eq(comment.commentable.conference.title)
|
||||||
end
|
end
|
||||||
it 'has status 200: OK' do
|
it 'has status 200: OK' do
|
||||||
conference = create(:conference)
|
comment
|
||||||
first_user = create(:user)
|
|
||||||
organizer_role = create(:role, name: 'organizer', resource: conference)
|
|
||||||
organizer = create(:user, role_ids: organizer_role.id)
|
|
||||||
event = create(:event, conference: conference)
|
|
||||||
comment = create(:comment, commentable_type: 'Event', commentable_id: event.id)
|
|
||||||
sign_in(organizer)
|
|
||||||
|
|
||||||
get :index
|
get :index
|
||||||
expect(response).to have_http_status(:ok)
|
expect(response).to have_http_status(:ok)
|
||||||
end
|
end
|
||||||
it 'renders the :index template' do
|
it 'renders the :index template' do
|
||||||
conference = create(:conference)
|
comment
|
||||||
first_user = create(:user)
|
|
||||||
organizer_role = create(:role, name: 'organizer', resource: conference)
|
|
||||||
organizer = create(:user, role_ids: organizer_role.id)
|
|
||||||
event = create(:event, conference: conference)
|
|
||||||
comment = create(:comment, commentable_type: 'Event', commentable_id: event.id)
|
|
||||||
sign_in(organizer)
|
|
||||||
|
|
||||||
get :index
|
get :index
|
||||||
expect(response).to render_template(:index)
|
expect(response).to render_template(:index)
|
||||||
end
|
end
|
||||||
|
|
@ -65,13 +50,8 @@ describe Admin::CommentsController, type: :controller do
|
||||||
context 'logged in with any other role or normal user' do
|
context 'logged in with any other role or normal user' do
|
||||||
describe 'GET#index' do
|
describe 'GET#index' do
|
||||||
it 'requires organizer privileges' do
|
it 'requires organizer privileges' do
|
||||||
conference = create(:conference)
|
|
||||||
first_user = create(:user)
|
|
||||||
participant = create(:user)
|
|
||||||
event = create(:event, conference: conference)
|
|
||||||
comment = create(:comment, commentable_type: 'Event', commentable_id: event.id)
|
|
||||||
sign_in(participant)
|
sign_in(participant)
|
||||||
|
comment
|
||||||
get :index
|
get :index
|
||||||
expect(response).to redirect_to(root_path)
|
expect(response).to redirect_to(root_path)
|
||||||
expect(flash[:alert]).to match('You are not authorized to access this area!')
|
expect(flash[:alert]).to match('You are not authorized to access this area!')
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ FactoryGirl.define do
|
||||||
sequence(:username) { |n| "username#{n}" }
|
sequence(:username) { |n| "username#{n}" }
|
||||||
password 'changeme'
|
password 'changeme'
|
||||||
password_confirmation 'changeme'
|
password_confirmation 'changeme'
|
||||||
last_sign_in_at { Time.now - 10.days }
|
|
||||||
confirmed_at { Time.now }
|
confirmed_at { Time.now }
|
||||||
biography <<-EOS
|
biography <<-EOS
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue