]> source.dussan.org Git - redmine.git/commitdiff
Add some tests on RolesController.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 17 Mar 2008 20:02:51 +0000 (20:02 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 17 Mar 2008 20:02:51 +0000 (20:02 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1269 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/roles/list.rhtml
test/fixtures/roles.yml
test/fixtures/workflows.yml
test/functional/roles_controller_test.rb
test/unit/tracker_test.rb

index 202fdf41ccf322fca2ad04217b7c31ca7fa2ae8c..93b821387510bc4da8b3efb7649bc90981f87165 100644 (file)
@@ -24,6 +24,7 @@
   </td>
   <td align="center" style="width:10%;">
     <%= button_to(l(:button_delete), { :action => 'destroy', :id => role }, :confirm => l(:text_are_you_sure), :class => "button-small", :disabled => role.builtin? ) %>
+  </td>
   </tr>
 <% end %>
   </tbody>
index c834828c6366f38e9b3328d11d3b946f3f86348d..0aabbb6197bb6b82a6f01af540ceaac20e4a6fbb 100644 (file)
@@ -1,49 +1,4 @@
 --- \r
-roles_004: \r
-  name: Non member\r
-  id: 4\r
-  builtin: 1\r
-  permissions: |\r
-    --- \r
-    - :add_issues\r
-    - :edit_issues\r
-    - :manage_issue_relations\r
-    - :add_issue_notes\r
-    - :move_issues\r
-    - :save_queries\r
-    - :view_gantt\r
-    - :view_calendar\r
-    - :log_time\r
-    - :view_time_entries\r
-    - :comment_news\r
-    - :view_documents\r
-    - :manage_documents\r
-    - :view_wiki_pages\r
-    - :edit_wiki_pages\r
-    - :add_messages\r
-    - :view_files\r
-    - :manage_files\r
-    - :browse_repository\r
-    - :view_changesets\r
-\r
-  position: 5\r
-roles_005: \r
-  name: Anonymous\r
-  id: 5\r
-  builtin: 2\r
-  permissions: |\r
-    --- \r
-    - :add_issue_notes\r
-    - :view_gantt\r
-    - :view_calendar\r
-    - :view_time_entries\r
-    - :view_documents\r
-    - :view_wiki_pages\r
-    - :view_files\r
-    - :browse_repository\r
-    - :view_changesets\r
-\r
-  position: 6\r
 roles_001: \r
   name: Manager\r
   id: 1\r
@@ -85,7 +40,7 @@ roles_001:
     - :browse_repository\r
     - :view_changesets\r
 \r
-  position: 2\r
+  position: 1\r
 roles_002: \r
   name: Developer\r
   id: 2\r
@@ -123,7 +78,7 @@ roles_002:
     - :browse_repository\r
     - :view_changesets\r
 \r
-  position: 3\r
+  position: 2\r
 roles_003: \r
   name: Reporter\r
   id: 3\r
@@ -139,7 +94,6 @@ roles_003:
     - :manage_issue_relations\r
     - :add_issue_notes\r
     - :move_issues\r
-    - :delete_issues\r
     - :manage_public_queries\r
     - :save_queries\r
     - :view_gantt\r
@@ -160,4 +114,50 @@ roles_003:
     - :browse_repository\r
     - :view_changesets\r
 \r
+  position: 3\r
+roles_004: \r
+  name: Non member\r
+  id: 4\r
+  builtin: 1\r
+  permissions: |\r
+    --- \r
+    - :add_issues\r
+    - :edit_issues\r
+    - :manage_issue_relations\r
+    - :add_issue_notes\r
+    - :move_issues\r
+    - :save_queries\r
+    - :view_gantt\r
+    - :view_calendar\r
+    - :log_time\r
+    - :view_time_entries\r
+    - :comment_news\r
+    - :view_documents\r
+    - :manage_documents\r
+    - :view_wiki_pages\r
+    - :edit_wiki_pages\r
+    - :add_messages\r
+    - :view_files\r
+    - :manage_files\r
+    - :browse_repository\r
+    - :view_changesets\r
+\r
   position: 4\r
+roles_005: \r
+  name: Anonymous\r
+  id: 5\r
+  builtin: 2\r
+  permissions: |\r
+    --- \r
+    - :add_issue_notes\r
+    - :view_gantt\r
+    - :view_calendar\r
+    - :view_time_entries\r
+    - :view_documents\r
+    - :view_wiki_pages\r
+    - :view_files\r
+    - :browse_repository\r
+    - :view_changesets\r
+\r
+  position: 5\r
+  
\ No newline at end of file
index 47e95e6e31d3a36502f04213b948a207526b370f..bef5ae0165e6005541aa7e28b8e59854227589bb 100644 (file)
@@ -245,12 +245,6 @@ workflows_225:
   old_status_id: 3\r
   id: 225\r
   tracker_id: 3\r
-workflows_037: \r
-  new_status_id: 3\r
-  role_id: 2\r
-  old_status_id: 2\r
-  id: 37\r
-  tracker_id: 1\r
 workflows_063: \r
   new_status_id: 4\r
   role_id: 3\r
index 3c245edf703178c4c957547338c09d2930ab79d2..d70a4f0c3e79b506d54171617206c1491f216f29 100644 (file)
@@ -32,6 +32,18 @@ class RolesControllerTest < Test::Unit::TestCase
     @request.session[:user_id] = 1 # admin
   end
   
+  def test_get_index
+    get :index
+    assert_response :success
+    assert_template 'list'
+
+    assert_not_nil assigns(:roles)
+    assert_equal Role.find(:all, :order => 'builtin, position'), assigns(:roles)
+
+    assert_tag :tag => 'a', :attributes => { :href => '/roles/edit/1' },
+                            :content => 'Manager'
+  end
+  
   def test_get_new
     get :new
     assert_response :success
@@ -89,4 +101,120 @@ class RolesControllerTest < Test::Unit::TestCase
     role = Role.find(1)
     assert_equal [:edit_project], role.permissions
   end
+  
+  def test_destroy
+    r = Role.new(:name => 'ToBeDestroyed', :permissions => [:view_wiki_pages])
+    assert r.save
+    
+    post :destroy, :id => r
+    assert_redirected_to 'roles/list'
+    assert_nil Role.find_by_id(r.id)
+  end
+  
+  def test_destroy_role_in_use
+    post :destroy, :id => 1
+    assert_redirected_to 'roles'
+    assert flash[:error] == 'This role is in use and can not be deleted.'
+    assert_not_nil Role.find_by_id(1)
+  end
+  
+  def test_get_workflow
+    get :workflow
+    assert_response :success
+    assert_template 'workflow'
+    assert_not_nil assigns(:roles)
+    assert_not_nil assigns(:trackers)
+  end
+  
+  def test_get_workflow_with_role_and_tracker
+    get :workflow, :role_id => 2, :tracker_id => 1
+    assert_response :success
+    assert_template 'workflow'
+    # allowed transitions
+    assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
+                                                 :name => 'issue_status[2][]',
+                                                 :value => '1',
+                                                 :checked => 'checked' }
+    # not allowed
+    assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
+                                                 :name => 'issue_status[2][]',
+                                                 :value => '3',
+                                                 :checked => nil }
+  end
+  
+  def test_post_workflow
+    post :workflow, :role_id => 2, :tracker_id => 1, :issue_status => {'4' => ['5'], '3' => ['1', '2']}
+    assert_redirected_to 'roles/workflow'
+    
+    assert_equal 3, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2})
+    assert_not_nil  Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 2})
+    assert_nil      Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 5, :new_status_id => 4})
+  end
+  
+  def test_clear_workflow
+    assert Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) > 0
+
+    post :workflow, :role_id => 2, :tracker_id => 1
+    assert_equal 0, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2})
+  end
+  
+  def test_get_report
+    get :report
+    assert_response :success
+    assert_template 'report'
+    
+    assert_not_nil assigns(:roles)
+    assert_equal Role.find(:all, :order => 'builtin, position'), assigns(:roles)
+    
+    assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
+                                                 :name => 'permissions[3][]',
+                                                 :value => 'add_issues',
+                                                 :checked => 'checked' }
+    
+    assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
+                                                 :name => 'permissions[3][]',
+                                                 :value => 'delete_issues',
+                                                 :checked => nil }
+  end
+  
+  def test_post_report
+    post :report, :permissions => { '0' => '', '1' => ['edit_issues'], '3' => ['add_issues', 'delete_issues']}
+    assert_redirected_to 'roles/list'
+    
+    assert_equal [:edit_issues], Role.find(1).permissions
+    assert_equal [:add_issues, :delete_issues], Role.find(3).permissions
+    assert Role.find(2).permissions.empty?
+  end
+  
+  def test_clear_all_permissions
+    post :report, :permissions => { '0' => '' }
+    assert_redirected_to 'roles/list'
+    assert Role.find(1).permissions.empty?
+  end
+  
+  def test_move_highest
+    post :move, :id => 3, :position => 'highest'
+    assert_redirected_to 'roles/list'
+    assert_equal 1, Role.find(3).position
+  end
+
+  def test_move_higher
+    position = Role.find(3).position
+    post :move, :id => 3, :position => 'higher'
+    assert_redirected_to 'roles/list'
+    assert_equal position - 1, Role.find(3).position
+  end
+
+  def test_move_lower
+    position = Role.find(2).position
+    post :move, :id => 2, :position => 'lower'
+    assert_redirected_to 'roles/list'
+    assert_equal position + 1, Role.find(2).position
+  end
+
+  def test_move_lowest
+    post :move, :id => 2, :position => 'lowest'
+    assert_redirected_to 'roles/list'
+    assert_equal Role.count, Role.find(2).position
+  end
 end
index 7adacef3c7ca2cca51fd7c67fc857339d92a2374..406bdd6db5cd93ef294761d8ef9e9d836e63ae61 100644 (file)
@@ -22,12 +22,12 @@ class TrackerTest < Test::Unit::TestCase
 
   def test_copy_workflows
     source = Tracker.find(1)
-    assert_equal 90, source.workflows.size
+    assert_equal 89, source.workflows.size
     
     target = Tracker.new(:name => 'Target')
     assert target.save
     assert target.workflows.copy(source)
     target.reload
-    assert_equal 90, target.workflows.size
+    assert_equal 89, target.workflows.size
   end
 end