socialforge/test/functional/projects_controller_test.rb

96 lines
2.9 KiB
Ruby

require File.expand_path('../../test_helper', __FILE__)
class ProjectsControllerTest < ActionController::TestCase
fixtures :projects,
:issues,
:issue_statuses,
:enumerations,
:users,
:issue_categories,
:trackers,
:projects_trackers,
:roles,
:member_roles,
:members,
:enabled_modules,
:journals,
:journal_details,
:journals_for_messages
def setup
@request.session[:user_id] = nil
@request.session[:ctime] = Time.now
@request.session[:atime] = Time.now
Setting.default_language = 'en'
end
test 'get :index' do
get :index
assert_response :success
end
test ':new by admin should accept get' do
@request.session[:user_id] = 1
get :new
assert_response :success
end
test ':new by non-admin user with add_project permission should accept get' do
Role.non_member.add_permission! :add_project
@request.session[:user_id] = 9
get :new
assert_response :success
assert_template 'new'
end
test ':create by admin user should create a new project' do
@request.session[:user_id] = 1
post :create, :project => {
name: "blog1",
description: 'weblog',
homepage: 'http://weblog',
identifier: 'blog',
is_public: 1,
custom_field_values: {'3' => 'Beta'},
tracker_ids: ['1', '3'],
:issue_custom_field_ids => ['9'],
:enabled_module_names => ['issue_tracking', 'news', 'repository']
}
project = Project.find_by_name(blog)
assert_not_nil project
assert_redirected_to "/projects/#{project.id}/settings"
assert_kind_of Project, project
assert project.active?
assert_equal 'weblog', project.description
assert_equal 'http://weblog', project.homepage
assert_equal true, project.is_public?
assert_nil project.parent
assert_equal 'Beta', project.custom_value_for(3).value
assert_equal [1, 3], project.trackers.map(&:id).sort
assert_equal ['issue_tracking', 'news', 'repository'], project.enabled_module_names.sort
assert project.issue_custom_fields.include?(IssueCustomField.find(9))
end
test 'get :show trustie' do
get :show, {id: 2}
assert_response :success
end
test 'get :search, forge' do
query_condition = "forge"
get :search, {'name' => query_condition }
projects = assigns(:projects_all)
assert projects.any?, "projects should have anything."
projects.each do |project|
assert project.name.downcase.include?(query_condition), "project name is invalid: #{project.name}"
end
end
test 'get :feedback' do
get :feedback, {id: 2}
assert_response :success
# prject_id = 2 总有8个留言
assert_equal assigns(:jour).count, 8
end
end