mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
WIP created tests for comments_controller.rb
This commit is contained in:
parent
81c4d1381c
commit
a8815aff5e
3 changed files with 73 additions and 21 deletions
|
|
@ -8,6 +8,8 @@ module Admin
|
|||
@posted_comments = grouped_comments(accessible_ordered_comments.find_comments_by_user(current_user))
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def accessible_ordered_comments
|
||||
Comment.accessible_by(current_ability).joins('INNER JOIN events ON commentable_id = events.id').order('events.title', 'comments.created_at DESC')
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,32 +1,81 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Admin::CommentsController do
|
||||
describe Admin::CommentsController, type: :controller do
|
||||
|
||||
# some settings to be done before like creating objects used by tests
|
||||
describe 'GET #index' do
|
||||
context 'all comments' do
|
||||
it 'populates a hash with conference, event, and comment objects'
|
||||
it 'renders the :index template'
|
||||
end
|
||||
context 'not logged in user' do
|
||||
describe 'GET #index' do
|
||||
it 'renders the :index template' do
|
||||
conference = create(:conference)
|
||||
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)
|
||||
|
||||
context 'unread_comments' do
|
||||
it 'populates a hash with conference, event, and comment objects created since last login of current_user'
|
||||
it 'renders the :index template'
|
||||
end
|
||||
|
||||
context 'posted_comments' do
|
||||
it 'populates a hash with conference, event, and comments posted by current_user'
|
||||
it 'renders the :index template'
|
||||
get :index
|
||||
expect(response).to redirect_to(user_session_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'accessible_ordered_comments' do
|
||||
it 'returns comments'
|
||||
it 'sorts comments by created_at and event title'
|
||||
context 'logged in as admin, organizer or cfp' do
|
||||
describe 'GET #index' do
|
||||
it 'populates a hash with comments' do
|
||||
conference = create(:conference)
|
||||
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
|
||||
expect(assigns(:comments)).to be_a(Hash)
|
||||
# assigns(:comments).first returns an array of first pair key-value from hash.
|
||||
# Calling again 'first' returns the key, meaning the Conference object.
|
||||
expect(assigns(:comments).first.first.title).to eq(comment.commentable.conference.title)
|
||||
end
|
||||
it 'has status 200: OK' do
|
||||
conference = create(:conference)
|
||||
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
|
||||
expect(response).to have_http_status(:ok)
|
||||
end
|
||||
it 'renders the :index template' do
|
||||
conference = create(:conference)
|
||||
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
|
||||
expect(response).to render_template(:index)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'grouped_comments(remarks)' do
|
||||
it 'groups comments by conference and by event'
|
||||
it 'returns a hash'
|
||||
context 'logged in with any other role or normal user' do
|
||||
describe 'GET#index' 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)
|
||||
|
||||
get :index
|
||||
expect(response).to redirect_to(root_path)
|
||||
expect(flash[:alert]).to match('You are not authorized to access this area!')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ FactoryGirl.define do
|
|||
sequence(:username) { |n| "username#{n}" }
|
||||
password 'changeme'
|
||||
password_confirmation 'changeme'
|
||||
last_sign_in_at { Time.now - 10.days }
|
||||
confirmed_at { Time.now }
|
||||
biography <<-EOS
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue