You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trustieforge/test/functional/courses_controller_test.rb

160 lines
4.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

require File.expand_path('../../test_helper', __FILE__)
class CoursesControllerTest < ActionController::TestCase
fixtures :courses,
:course_infos,
:course_statuses,
:users,
:user_extensions,
:bids,
:homework_for_courses,
:journals_for_messages,
:schools,
:roles,
:members,
:member_roles,
:enabled_modules,
:boards,
:messages
def setup
@request.session[:user_id] = nil
@request.session[:ctime] = Time.now.to_i
@request.session[:atime] = Time.now.to_i
Setting.default_language = 'en'
end
# Get :index
def test_index_by_anonymous_should_not_show_private_projects
get :index
assert_response :success
assert_template 'index'
courses = assigns(:courses)
assert_not_nil courses
assert courses.all?(&:is_public?)
end
# Get :new
# 人员添加课程的权限是不属于任何角色
def test_new_course_anyone_temporary
@request.session[:user_id] = 20
Role.find_by_name("Non member").add_permission! :add_course #Non member
get :new
assert_response :success
assert_template :new
end
# post :create
def test_create_course_with_access_control
@request.session[:user_id] = 20
Role.find_by_name("Non member").add_permission! :add_course #Non member
course_name = 'course_one'
post :create,
:class_period => '32',
:time => '2014',
:term => 'spring',
:course => {
:name => course_name, # names can't contain space.
:password => '1234',
:description => 'description',
:is_public => '1',
:course_type => '1'
}
assert_response :found
course = Course.find_by_name(course_name)
red_url = "courses/#{course.id}/settings"
assert_match %r(#{red_url}), @response.redirect_url
# 创建成功跳转settings方法会带参数一枚故一下方法失败
# assert_redirected_to "courses/#{course.id}/settings"
end
# post :create 403
def test_create_course_without_access_control
@request.session[:user_id] = 20
#Role.find_by_name("Non member").add_permission! :add_course #Non member
course_name = 'course_one'
post :create,
:class_period => '32',
:time => '2014',
:term => 'spring',
:course => {
:name => course_name, # names can't contain space.
:password => '1234',
:description => 'description',
:is_public => '1',
:course_type => '1'
}
assert_response :forbidden
end
test ':homework get by non-member is access' do
get :homework, {id: 1}
assert_response :success
end
test ':feedback Get by non-member is access' do
get :feedback, {id: 1}
assert_response :success
# 检测留言是否在其中以及不报错
jfms = JournalsForMessage.where(jour_type: 'Course', jour_id: 1, m_parent_id: nil).reorder('id DESC')
jfms.take(5).each do |j|
assert_select "li#word_li_#{j.id}"
end
end
test ':homework get by non-member' do
get :homework, {id: 1}
assert_response :success
course = Course.find(1)
assert course.homeworks.any?
course.homeworks.each do |homework|
assert_select '.bid_path', homework.name
end
end
test ':new_homework by no user should not new_homework course_001' do
get :new_homework, {id: 1}
assert_response 403
end
test ':new_homework by loged & allowed user should get new_homework course_001' do
user_id = 25
member = Member.create(user_id: user_id, project_id: -1, course_id: 1, roles: [Role.last])
MemberRole.create(member_id: member.id, role_id: 3)
@request.session[:user_id] = user_id
get :new_homework, {id: 1}
assert_response :success
assert_template 'new_homework'
end
test ':member by ano' do
get :member, {id: 1}
assert_response :success
assert_template 'member'
assert assigns(:members).any?
end
# test "#index by non-admin user with view_time_entries permission should show overall spent time link" do
# @request.session[:user_id] = 3
# get :index
# assert_template 'index'
# assert_select 'a[href=?]', '/time_entries'
# end
#
# test "#index by non-admin user without view_time_entries permission should not show overall spent time link" do
# Role.find(2).remove_permission! :view_time_entries
# Role.non_member.remove_permission! :view_time_entries
# Role.anonymous.remove_permission! :view_time_entries
# @request.session[:user_id] = 3
#
# get :index
# assert_template 'index'
# assert_select 'a[href=?]', '/time_entries', 0
# end
end