]> source.dussan.org Git - redmine.git/commitdiff
Use #assert_select instead of #assert_tag.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 22 Dec 2012 09:35:35 +0000 (09:35 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 22 Dec 2012 09:35:35 +0000 (09:35 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11066 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/context_menus/issues.html.erb
test/functional/account_controller_test.rb
test/functional/activities_controller_test.rb
test/functional/boards_controller_test.rb
test/functional/calendars_controller_test.rb
test/functional/context_menus_controller_test.rb

index c81e518ec6d4e7e1ac8e963deca9f0df08737957..b85b804e3f8ffbccd6162a8d9a545cce5067bb5c 100644 (file)
   <% end %>
 
   <% @options_by_custom_field.each do |field, options| %>
-    <li class="folder">
+    <li class="folder cf_<%= field.id %>">
       <a href="#" class="submenu"><%= h(field.name) %></a>
       <ul>
       <% options.each do |text, value| %>
index 0f876963f554c08c8f10f92ff172c0f012a7af71..32b9a564bddf773328dc557edf0db563d763b4eb 100644 (file)
@@ -94,8 +94,8 @@ class AccountControllerTest < ActionController::TestCase
       assert_template 'register'
       assert_not_nil assigns(:user)
 
-      assert_tag 'input', :attributes => {:name => 'user[password]'}
-      assert_tag 'input', :attributes => {:name => 'user[password_confirmation]'}
+      assert_select 'input[name=?]', 'user[password]'
+      assert_select 'input[name=?]', 'user[password_confirmation]'
     end
   end
 
index b5effcd30a34eaa13a2c2985155fb79c950b2944..8d175256b67018393b43ce6e1390f15c91daeaa7 100644 (file)
@@ -36,16 +36,8 @@ class ActivitiesControllerTest < ActionController::TestCase
     assert_template 'index'
     assert_not_nil assigns(:events_by_day)
 
-    assert_tag :tag => "h3",
-               :content => /#{2.days.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue-edit/ },
-                   :child => { :tag => "a",
-                     :content => /(#{IssueStatus.find(2).name})/,
-                   }
-                 }
-               }
+    assert_select 'h3', :text => /#{2.days.ago.to_date.day}/
+    assert_select 'dl dt.issue-edit a', :text => /(#{IssueStatus.find(2).name})/
   end
 
   def test_project_index_with_invalid_project_id_should_respond_404
@@ -59,16 +51,8 @@ class ActivitiesControllerTest < ActionController::TestCase
     assert_template 'index'
     assert_not_nil assigns(:events_by_day)
 
-    assert_tag :tag => "h3",
-               :content => /#{3.day.ago.to_date.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue/ },
-                   :child => { :tag => "a",
-                     :content => /Can&#x27;t print recipes/,
-                   }
-                 }
-               }
+    assert_select 'h3', :text => /#{3.days.ago.to_date.day}/
+    assert_select 'dl dt.issue a', :text => /Can&#x27;t print recipes/
   end
 
   def test_global_index
@@ -80,16 +64,9 @@ class ActivitiesControllerTest < ActionController::TestCase
 
     i5 = Issue.find(5)
     d5 = User.find(1).time_to_date(i5.created_on)
-    assert_tag :tag => "h3",
-               :content => /#{d5.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue/ },
-                   :child => { :tag => "a",
-                     :content => /Subproject issue/,
-                   }
-                 }
-               }
+
+    assert_select 'h3', :text => /#{d5.day}/
+    assert_select 'dl dt.issue a', :text => /Subproject issue/
   end
 
   def test_user_index
@@ -104,16 +81,8 @@ class ActivitiesControllerTest < ActionController::TestCase
     i1 = Issue.find(1)
     d1 = User.find(1).time_to_date(i1.created_on)
 
-    assert_tag :tag => "h3",
-               :content => /#{d1.day}/,
-               :sibling => { :tag => "dl",
-                 :child => { :tag => "dt",
-                   :attributes => { :class => /issue/ },
-                   :child => { :tag => "a",
-                     :content => /Can&#x27;t print recipes/,
-                   }
-                 }
-               }
+    assert_select 'h3', :text => /#{d1.day}/
+    assert_select 'dl dt.issue a', :text => /Can&#x27;t print recipes/
   end
 
   def test_user_index_with_invalid_user_id_should_respond_404
@@ -126,14 +95,13 @@ class ActivitiesControllerTest < ActionController::TestCase
     assert_response :success
     assert_template 'common/feed'
 
-    assert_tag :tag => 'link', :parent =>  {:tag => 'feed', :parent => nil },
-        :attributes => {:rel => 'self', :href => 'http://test.host/activity.atom?with_subprojects=0'}
-    assert_tag :tag => 'link', :parent =>  {:tag => 'feed', :parent => nil },
-        :attributes => {:rel => 'alternate', :href => 'http://test.host/activity?with_subprojects=0'}
-
-    assert_tag :tag => 'entry', :child => {
-      :tag => 'link',
-      :attributes => {:href => 'http://test.host/issues/11'}}
+    assert_select 'feed' do
+      assert_select 'link[rel=self][href=?]', 'http://test.host/activity.atom?with_subprojects=0'
+      assert_select 'link[rel=alternate][href=?]', 'http://test.host/activity?with_subprojects=0'
+      assert_select 'entry' do
+        assert_select 'link[href=?]', 'http://test.host/issues/11'
+      end
+    end
   end
 
   def test_index_atom_feed_with_explicit_selection
@@ -150,21 +118,21 @@ class ActivitiesControllerTest < ActionController::TestCase
     assert_response :success
     assert_template 'common/feed'
 
-    assert_tag :tag => 'link', :parent =>  {:tag => 'feed', :parent => nil },
-        :attributes => {:rel => 'self', :href => 'http://test.host/activity.atom?show_changesets=1&amp;show_documents=1&amp;show_files=1&amp;show_issues=1&amp;show_messages=1&amp;show_news=1&amp;show_time_entries=1&amp;show_wiki_edits=1&amp;with_subprojects=0'}
-    assert_tag :tag => 'link', :parent => {:tag => 'feed', :parent => nil },
-        :attributes => {:rel => 'alternate', :href => 'http://test.host/activity?show_changesets=1&amp;show_documents=1&amp;show_files=1&amp;show_issues=1&amp;show_messages=1&amp;show_news=1&amp;show_time_entries=1&amp;show_wiki_edits=1&amp;with_subprojects=0'}
-
-    assert_tag :tag => 'entry', :child => {
-      :tag => 'link',
-      :attributes => {:href => 'http://test.host/issues/11'}}
+    assert_select 'feed' do
+      assert_select 'link[rel=self][href=?]', 'http://test.host/activity.atom?show_changesets=1&amp;show_documents=1&amp;show_files=1&amp;show_issues=1&amp;show_messages=1&amp;show_news=1&amp;show_time_entries=1&amp;show_wiki_edits=1&amp;with_subprojects=0'
+      assert_select 'link[rel=alternate][href=?]', 'http://test.host/activity?show_changesets=1&amp;show_documents=1&amp;show_files=1&amp;show_issues=1&amp;show_messages=1&amp;show_news=1&amp;show_time_entries=1&amp;show_wiki_edits=1&amp;with_subprojects=0'
+      assert_select 'entry' do
+        assert_select 'link[href=?]', 'http://test.host/issues/11'
+      end
+    end
   end
 
   def test_index_atom_feed_with_one_item_type
     get :index, :format => 'atom', :show_issues => '1'
     assert_response :success
     assert_template 'common/feed'
-    assert_tag :tag => 'title', :content => /Issues/
+
+    assert_select 'title', :text => /Issues/
   end
 
   def test_index_should_show_private_notes_with_permission_only
index 8afe4f748ff7830c4dc73077c887b4d542919798..342ba89ce5c36d6a6aa94ef50a389bf99da09a8d 100644 (file)
@@ -75,8 +75,9 @@ class BoardsControllerTest < ActionController::TestCase
     assert_response :success
     assert_template 'show'
 
-    assert_tag 'form', :attributes => {:id => 'message-form'}
-    assert_tag 'input', :attributes => {:name => 'message[subject]'}
+    assert_select 'form#message-form' do
+      assert_select 'input[name=?]', 'message[subject]'
+    end
   end
 
   def test_show_atom
index a8ab5750f2049fee8950c82f9965eb3dd31ca171..0e759a0c0bdc0787649fcbb3f7860e991dc47bb9 100644 (file)
@@ -56,42 +56,32 @@ class CalendarsControllerTest < ActionController::TestCase
     get :show, :month => '1', :year => '2010'
     assert_response :success
 
-    assert_tag :tag => 'tr',
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'week-number'}, :content => '53'},
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'odd'}, :content => '27'},
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'even'}, :content => '2'}
-
-    assert_tag :tag => 'tr',
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'week-number'}, :content => '1'},
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'odd'}, :content => '3'},
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'even'}, :content => '9'}
+    assert_select 'tr' do
+      assert_select 'td.week-number', :text => '53'
+      assert_select 'td.odd', :text => '27'
+      assert_select 'td.even', :text => '2'
+    end
 
+    assert_select 'tr' do
+      assert_select 'td.week-number', :text => '1'
+      assert_select 'td.odd', :text => '3'
+      assert_select 'td.even', :text => '9'
+    end
 
     Setting.start_of_week = 1
     get :show, :month => '1', :year => '2010'
     assert_response :success
 
-    assert_tag :tag => 'tr',
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'week-number'}, :content => '53'},
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'even'}, :content => '28'},
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'even'}, :content => '3'}
-
-    assert_tag :tag => 'tr',
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'week-number'}, :content => '1'},
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'even'}, :content => '4'},
-      :descendant => {:tag => 'td',
-                      :attributes => {:class => 'even'}, :content => '10'}
+    assert_select 'tr' do
+      assert_select 'td.week-number', :text => '53'
+      assert_select 'td.even', :text => '28'
+      assert_select 'td.even', :text => '3'
+    end
 
+    assert_select 'tr' do
+      assert_select 'td.week-number', :text => '1'
+      assert_select 'td.even', :text => '4'
+      assert_select 'td.even', :text => '10'
+    end
   end
 end
index dc8406b797bfd339431f621f620b425beb3c11cc..62967e59871f0d6391643986c37f5dd34cefec09 100644 (file)
@@ -38,34 +38,21 @@ class ContextMenusControllerTest < ActionController::TestCase
     get :issues, :ids => [1]
     assert_response :success
     assert_template 'context_menu'
-    assert_tag :tag => 'a', :content => 'Edit',
-                            :attributes => { :href => '/issues/1/edit',
-                                             :class => 'icon-edit' }
-    assert_tag :tag => 'a', :content => 'Closed',
-                            :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bstatus_id%5D=5',
-                                             :class => '' }
-    assert_tag :tag => 'a', :content => 'Immediate',
-                            :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bpriority_id%5D=8',
-                                             :class => '' }
-    assert_no_tag :tag => 'a', :content => 'Inactive Priority'
+
+    assert_select 'a.icon-edit[href=?]', '/issues/1/edit', :text => 'Edit'
+    assert_select 'a.icon-copy[href=?]', '/projects/ecookbook/issues/1/copy', :text => 'Copy'
+    assert_select 'a.icon-del[href=?]', '/issues?ids%5B%5D=1', :text => 'Delete'
+
+    # Statuses
+    assert_select 'a[href=?]', '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bstatus_id%5D=5', :text => 'Closed'
+    assert_select 'a[href=?]', '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bpriority_id%5D=8', :text => 'Immediate'
+    # No inactive priorities
+    assert_select 'a', :text => /Inactive Priority/, :count => 0
     # Versions
-    assert_tag :tag => 'a', :content => '2.0',
-                            :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bfixed_version_id%5D=3',
-                                             :class => '' }
-    assert_tag :tag => 'a', :content => 'eCookbook Subproject 1 - 2.0',
-                            :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bfixed_version_id%5D=4',
-                                             :class => '' }
-
-    assert_tag :tag => 'a', :content => 'Dave Lopper',
-                            :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bassigned_to_id%5D=3',
-                                             :class => '' }
-    assert_tag :tag => 'a', :content => 'Copy',
-                            :attributes => { :href => '/projects/ecookbook/issues/1/copy',
-                                             :class => 'icon-copy' }
-    assert_no_tag :tag => 'a', :content => 'Move'
-    assert_tag :tag => 'a', :content => 'Delete',
-                            :attributes => { :href => '/issues?ids%5B%5D=1',
-                                             :class => 'icon-del' }
+    assert_select 'a[href=?]', '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bfixed_version_id%5D=3', :text => '2.0'
+    assert_select 'a[href=?]', '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bfixed_version_id%5D=4', :text => 'eCookbook Subproject 1 - 2.0'
+    # Assignees
+    assert_select 'a[href=?]', '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bassigned_to_id%5D=3', :text => 'Dave Lopper'
   end
 
   def test_context_menu_one_issue_by_anonymous
@@ -86,25 +73,14 @@ class ContextMenusControllerTest < ActionController::TestCase
     assert_equal [1, 2], assigns(:issues).map(&:id).sort
 
     ids = assigns(:issues).map(&:id).sort.map {|i| "ids%5B%5D=#{i}"}.join('&amp;')
-    assert_tag :tag => 'a', :content => 'Edit',
-                            :attributes => { :href => "/issues/bulk_edit?#{ids}",
-                                             :class => 'icon-edit' }
-    assert_tag :tag => 'a', :content => 'Closed',
-                            :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bstatus_id%5D=5",
-                                             :class => '' }
-    assert_tag :tag => 'a', :content => 'Immediate',
-                            :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bpriority_id%5D=8",
-                                             :class => '' }
-    assert_tag :tag => 'a', :content => 'Dave Lopper',
-                            :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bassigned_to_id%5D=3",
-                                             :class => '' }
-    assert_tag :tag => 'a', :content => 'Copy',
-                            :attributes => { :href => "/issues/bulk_edit?copy=1&amp;#{ids}",
-                                             :class => 'icon-copy' }
-    assert_no_tag :tag => 'a', :content => 'Move'
-    assert_tag :tag => 'a', :content => 'Delete',
-                            :attributes => { :href => "/issues?#{ids}",
-                                             :class => 'icon-del' }
+
+    assert_select 'a.icon-edit[href=?]', "/issues/bulk_edit?#{ids}", :text => 'Edit'
+    assert_select 'a.icon-copy[href=?]', "/issues/bulk_edit?copy=1&amp;#{ids}", :text => 'Copy'
+    assert_select 'a.icon-del[href=?]', "/issues?#{ids}", :text => 'Delete'
+
+    assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&amp;issue%5Bstatus_id%5D=5", :text => 'Closed'
+    assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&amp;issue%5Bpriority_id%5D=8", :text => 'Immediate'
+    assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&amp;issue%5Bassigned_to_id%5D=3", :text => 'Dave Lopper'
   end
 
   def test_context_menu_multiple_issues_of_different_projects
@@ -116,21 +92,13 @@ class ContextMenusControllerTest < ActionController::TestCase
     assert_equal [1, 2, 6], assigns(:issues).map(&:id).sort
 
     ids = assigns(:issues).map(&:id).sort.map {|i| "ids%5B%5D=#{i}"}.join('&amp;')
-    assert_tag :tag => 'a', :content => 'Edit',
-                            :attributes => { :href => "/issues/bulk_edit?#{ids}",
-                                             :class => 'icon-edit' }
-    assert_tag :tag => 'a', :content => 'Closed',
-                            :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bstatus_id%5D=5",
-                                             :class => '' }
-    assert_tag :tag => 'a', :content => 'Immediate',
-                            :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bpriority_id%5D=8",
-                                             :class => '' }
-    assert_tag :tag => 'a', :content => 'John Smith',
-                            :attributes => { :href => "/issues/bulk_update?#{ids}&amp;issue%5Bassigned_to_id%5D=2",
-                                             :class => '' }
-    assert_tag :tag => 'a', :content => 'Delete',
-                            :attributes => { :href => "/issues?#{ids}",
-                                             :class => 'icon-del' }
+
+    assert_select 'a.icon-edit[href=?]', "/issues/bulk_edit?#{ids}", :text => 'Edit'
+    assert_select 'a.icon-del[href=?]', "/issues?#{ids}", :text => 'Delete'
+
+    assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&amp;issue%5Bstatus_id%5D=5", :text => 'Closed'
+    assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&amp;issue%5Bpriority_id%5D=8", :text => 'Immediate'
+    assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&amp;issue%5Bassigned_to_id%5D=2", :text => 'John Smith'
   end
 
   def test_context_menu_should_include_list_custom_fields
@@ -139,17 +107,14 @@ class ContextMenusControllerTest < ActionController::TestCase
     @request.session[:user_id] = 2
     get :issues, :ids => [1]
 
-    assert_tag 'a',
-      :content => 'List',
-      :attributes => {:href => '#'},
-      :sibling => {:tag => 'ul', :children => {:count => 3}}
-
-    assert_tag 'a',
-      :content => 'Foo',
-      :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=Foo"}
-    assert_tag 'a',
-      :content => 'none',
-      :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D="}
+    assert_select "li.cf_#{field.id}" do
+      assert_select 'a[href=#]', :text => 'List'
+      assert_select 'ul' do
+        assert_select 'a', 3
+        assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=Foo", :text => 'Foo'
+        assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=", :text => 'none'
+      end
+    end
   end
 
   def test_context_menu_should_not_include_null_value_for_required_custom_fields
@@ -158,10 +123,13 @@ class ContextMenusControllerTest < ActionController::TestCase
     @request.session[:user_id] = 2
     get :issues, :ids => [1, 2]
 
-    assert_tag 'a',
-      :content => 'List',
-      :attributes => {:href => '#'},
-      :sibling => {:tag => 'ul', :children => {:count => 2}}
+    assert_select "li.cf_#{field.id}" do
+      assert_select 'a[href=#]', :text => 'List'
+      assert_select 'ul' do
+        assert_select 'a', 2
+        assert_select 'a', :text => 'none', :count => 0
+      end
+    end
   end
 
   def test_context_menu_on_single_issue_should_select_current_custom_field_value
@@ -173,13 +141,13 @@ class ContextMenusControllerTest < ActionController::TestCase
     @request.session[:user_id] = 2
     get :issues, :ids => [1]
 
-    assert_tag 'a',
-      :content => 'List',
-      :attributes => {:href => '#'},
-      :sibling => {:tag => 'ul', :children => {:count => 3}}
-    assert_tag 'a',
-      :content => 'Bar',
-      :attributes => {:class => /icon-checked/}
+    assert_select "li.cf_#{field.id}" do
+      assert_select 'a[href=#]', :text => 'List'
+      assert_select 'ul' do
+        assert_select 'a', 3
+        assert_select 'a.icon-checked', :text => 'Bar'
+      end
+    end
   end
 
   def test_context_menu_should_include_bool_custom_fields
@@ -188,14 +156,15 @@ class ContextMenusControllerTest < ActionController::TestCase
     @request.session[:user_id] = 2
     get :issues, :ids => [1]
 
-    assert_tag 'a',
-      :content => 'Bool',
-      :attributes => {:href => '#'},
-      :sibling => {:tag => 'ul', :children => {:count => 3}}
-
-    assert_tag 'a',
-      :content => 'Yes',
-      :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=1"}
+    assert_select "li.cf_#{field.id}" do
+      assert_select 'a[href=#]', :text => 'Bool'
+      assert_select 'ul' do
+        assert_select 'a', 3
+        assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=0", :text => 'No'
+        assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=1", :text => 'Yes'
+        assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=", :text => 'none'
+      end
+    end
   end
 
   def test_context_menu_should_include_user_custom_fields
@@ -204,14 +173,14 @@ class ContextMenusControllerTest < ActionController::TestCase
     @request.session[:user_id] = 2
     get :issues, :ids => [1]
 
-    assert_tag 'a',
-      :content => 'User',
-      :attributes => {:href => '#'},
-      :sibling => {:tag => 'ul', :children => {:count => Project.find(1).members.count + 1}}
-
-    assert_tag 'a',
-      :content => 'John Smith',
-      :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=2"}
+    assert_select "li.cf_#{field.id}" do
+      assert_select 'a[href=#]', :text => 'User'
+      assert_select 'ul' do
+        assert_select 'a', Project.find(1).members.count + 1
+        assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=2", :text => 'John Smith'
+        assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=", :text => 'none'
+      end
+    end
   end
 
   def test_context_menu_should_include_version_custom_fields
@@ -219,14 +188,14 @@ class ContextMenusControllerTest < ActionController::TestCase
     @request.session[:user_id] = 2
     get :issues, :ids => [1]
 
-    assert_tag 'a',
-      :content => 'Version',
-      :attributes => {:href => '#'},
-      :sibling => {:tag => 'ul', :children => {:count => Project.find(1).shared_versions.count + 1}}
-
-    assert_tag 'a',
-      :content => '2.0',
-      :attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=3"}
+    assert_select "li.cf_#{field.id}" do
+      assert_select 'a[href=#]', :text => 'Version'
+      assert_select 'ul' do
+        assert_select 'a', Project.find(1).shared_versions.count + 1
+        assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=3", :text => '2.0'
+        assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=", :text => 'none'
+      end
+    end
   end
 
   def test_context_menu_by_assignable_user_should_include_assigned_to_me_link
@@ -235,9 +204,7 @@ class ContextMenusControllerTest < ActionController::TestCase
     assert_response :success
     assert_template 'context_menu'
 
-    assert_tag :tag => 'a', :content => / me /,
-                            :attributes => { :href => '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bassigned_to_id%5D=2',
-                                             :class => '' }
+    assert_select 'a[href=?]', '/issues/bulk_update?ids%5B%5D=1&amp;issue%5Bassigned_to_id%5D=2', :text => / me /
   end
 
   def test_context_menu_should_propose_shared_versions_for_issues_from_different_projects
@@ -249,7 +216,7 @@ class ContextMenusControllerTest < ActionController::TestCase
     assert_template 'context_menu'
 
     assert_include version, assigns(:versions)
-    assert_tag :tag => 'a', :content => 'eCookbook - Shared'
+    assert_select 'a', :text => 'eCookbook - Shared'
   end
 
   def test_context_menu_issue_visibility
@@ -258,16 +225,16 @@ class ContextMenusControllerTest < ActionController::TestCase
     assert_template 'context_menu'
     assert_equal [1], assigns(:issues).collect(&:id)
   end
-  
+
   def test_time_entries_context_menu
     @request.session[:user_id] = 2
     get :time_entries, :ids => [1, 2]
     assert_response :success
     assert_template 'time_entries'
-    assert_tag 'a', :content => 'Edit'
-    assert_no_tag 'a', :content => 'Edit', :attributes => {:class => /disabled/}
+
+    assert_select 'a:not(.disabled)', :text => 'Edit'
   end
-  
+
   def test_time_entries_context_menu_without_edit_permission
     @request.session[:user_id] = 2
     Role.find_by_name('Manager').remove_permission! :edit_time_entries
@@ -275,6 +242,6 @@ class ContextMenusControllerTest < ActionController::TestCase
     get :time_entries, :ids => [1, 2]
     assert_response :success
     assert_template 'time_entries'
-    assert_tag 'a', :content => 'Edit', :attributes => {:class => /disabled/}
+    assert_select 'a.disabled', :text => 'Edit'
   end
 end