172 lines
5.3 KiB
Ruby
172 lines
5.3 KiB
Ruby
require File.expand_path('../../test_helper', __FILE__)
|
|
|
|
class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
|
|
fixtures :users, :dmsf_workflows, :dmsf_workflow_steps, :projects, :roles,
|
|
:members, :member_roles
|
|
|
|
def setup
|
|
User.current = nil
|
|
|
|
@manager_role = Role.find_by_name('Manager')
|
|
@project = Project.find(5)
|
|
end
|
|
|
|
def test_index_admin
|
|
@request.session[:user_id] = 1 # admin
|
|
get :index
|
|
assert_response :success
|
|
assert_template 'index'
|
|
end
|
|
|
|
def test_index_user
|
|
@request.session[:user_id] = 2 # non admin
|
|
get :index
|
|
assert_response :forbidden
|
|
end
|
|
|
|
def test_index_member
|
|
old_controller = @controller
|
|
@controller = ProjectsController.new
|
|
|
|
@request.session[:user_id] = 2
|
|
get :settings, :id => @project.id
|
|
assert_response :success
|
|
assert_template 'settings'
|
|
|
|
@controller = old_controller
|
|
end
|
|
|
|
def test_new_admin
|
|
@request.session[:user_id] = 1 # admin
|
|
get :new
|
|
assert_response :success
|
|
assert_template 'new'
|
|
end
|
|
|
|
def test_new_member_no_permission
|
|
@project.enable_module!(:dmsf)
|
|
@manager_role.remove_permission! :approval_workflows
|
|
@request.session[:user_id] = 2
|
|
get :new, {:project_id => @project.id}
|
|
assert_response :forbidden
|
|
end
|
|
|
|
def test_new_member_no_module
|
|
@project.disable_module!(:dmsf)
|
|
@manager_role.add_permission! :approval_workflows
|
|
@request.session[:user_id] = 2
|
|
get :new, {:project_id => @project.id}
|
|
assert_response :forbidden
|
|
end
|
|
|
|
def test_new_member
|
|
@manager_role.add_permission! :approval_workflows
|
|
@request.session[:user_id] = 2
|
|
@project.enable_module!(:dmsf)
|
|
get :new, {:project_id => @project.id}
|
|
assert_response :success
|
|
assert_template 'new'
|
|
end
|
|
|
|
def test_new_no_member
|
|
@manager_role.add_permission! :approval_workflows
|
|
@request.session[:user_id] = 3
|
|
@project.enable_module!(:dmsf)
|
|
get :new, {:project_id => @project.id}
|
|
assert_response :forbidden
|
|
end
|
|
|
|
def test_edit
|
|
@request.session[:user_id] = 1 # admin
|
|
get :edit, :id => 1
|
|
assert_response :success
|
|
assert_template 'edit'
|
|
end
|
|
|
|
def test_create
|
|
@request.session[:user_id] = 1 # admin
|
|
assert_difference 'DmsfWorkflow.count', +1 do
|
|
post :create, :dmsf_workflow => {:name => 'wf3'}
|
|
end
|
|
workflow = DmsfWorkflow.first(:order => 'id DESC')
|
|
assert_redirected_to dmsf_workflows_path
|
|
assert_equal 'wf3', workflow.name
|
|
end
|
|
|
|
def test_update
|
|
@request.session[:user_id] = 1 # admin
|
|
put :update, :id => 1, :dmsf_workflow => {:name => 'wf1a'}
|
|
workflow = DmsfWorkflow.find(1)
|
|
assert_equal 'wf1a', workflow.name
|
|
end
|
|
|
|
def test_destroy
|
|
@request.session[:user_id] = 1 # admin
|
|
assert_difference 'DmsfWorkflow.count', -1 do
|
|
delete :destroy, :id => 1
|
|
end
|
|
assert_redirected_to dmsf_workflows_path
|
|
assert_nil DmsfWorkflow.find_by_id(1)
|
|
end
|
|
|
|
def test_add_step
|
|
@request.session[:user_id] = 1 # admin
|
|
assert_difference 'DmsfWorkflowStep.count', +1 do
|
|
post :add_step, :commit => 'OR', :step => 1, :id => 1, :user_ids =>[3]
|
|
end
|
|
assert_response :success
|
|
ws = DmsfWorkflowStep.first(:order => 'id DESC')
|
|
assert_equal 1, ws.dmsf_workflow_id
|
|
assert_equal 1, ws.step
|
|
assert_equal 3, ws.user_id
|
|
assert_equal 0, ws.operator
|
|
end
|
|
|
|
def test_remove_step
|
|
@request.session[:user_id] = 1 # admin
|
|
n = DmsfWorkflowStep.where(:dmsf_workflow_id => 1, :step => 1).count
|
|
assert_difference 'DmsfWorkflowStep.count', -n do
|
|
delete :remove_step, :step => 1, :id => 1
|
|
end
|
|
assert_response :success
|
|
ws = DmsfWorkflowStep.where(:dmsf_workflow_id => 1).first(:order => 'id ASC')
|
|
assert_equal 1, ws.step
|
|
end
|
|
|
|
def test_reorder_steps_to_lower
|
|
@request.session[:user_id] = 1 # admin
|
|
put :reorder_steps, :step => 1, :id => 1, :workflow_step => {:move_to => 'lower'}
|
|
assert_response :success
|
|
assert_equal 2, DmsfWorkflowStep.find(1).step
|
|
assert_equal 1, DmsfWorkflowStep.find(2).step
|
|
assert_equal 3, DmsfWorkflowStep.find(3).step
|
|
end
|
|
|
|
def test_reorder_steps_to_lowest
|
|
@request.session[:user_id] = 1 # admin
|
|
put :reorder_steps, :step => 1, :id => 1, :workflow_step => {:move_to => 'lowest'}
|
|
assert_response :success
|
|
assert_equal 3, DmsfWorkflowStep.find(1).step
|
|
assert_equal 1, DmsfWorkflowStep.find(2).step
|
|
assert_equal 2, DmsfWorkflowStep.find(3).step
|
|
end
|
|
|
|
def test_reorder_steps_to_higher
|
|
@request.session[:user_id] = 1 # admin
|
|
put :reorder_steps, :step => 2, :id => 1, :workflow_step => {:move_to => 'higher'}
|
|
assert_response :success
|
|
assert_equal 2, DmsfWorkflowStep.find(1).step
|
|
assert_equal 1, DmsfWorkflowStep.find(2).step
|
|
assert_equal 3, DmsfWorkflowStep.find(3).step
|
|
end
|
|
|
|
def test_reorder_steps_to_highest
|
|
@request.session[:user_id] = 1 # admin
|
|
put :reorder_steps, :step => 3, :id => 1, :workflow_step => {:move_to => 'highest'}
|
|
assert_response :success
|
|
assert_equal 2, DmsfWorkflowStep.find(1).step
|
|
assert_equal 3, DmsfWorkflowStep.find(2).step
|
|
assert_equal 1, DmsfWorkflowStep.find(3).step
|
|
end
|
|
end
|