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