@project.repository.destroy
get :new, :project_id => 'subproject1', :repository_scm => 'Bazaar'
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Bazaar, assigns(:repository)
- assert assigns(:repository).new_record?
+ assert_select 'select[name=?]', 'repository_scm' do
+ assert_select 'option[value=?][selected=selected]', 'Bazaar'
+ end
end
def test_browse_root
get :show, :id => PRJ_ID
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal 2, assigns(:entries).size
- assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'}
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 2
+ assert_select 'tr.dir td.filename a', :text => 'directory'
+ assert_select 'tr.file td.filename a', :text => 'doc-mkdir.txt'
+ end
end
def test_browse_directory
get :show, :id => PRJ_ID, :path => repository_path_hash(['directory'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['doc-ls.txt', 'document.txt', 'edit.png'], assigns(:entries).collect(&:name)
- entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
- assert_not_nil entry
- assert_equal 'file', entry.kind
- assert_equal 'directory/edit.png', entry.path
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 3
+ assert_select 'tr.file td.filename a', :text => 'doc-ls.txt'
+ assert_select 'tr.file td.filename a', :text => 'document.txt'
+ assert_select 'tr.file td.filename a', :text => 'edit.png'
+ end
end
def test_browse_at_given_revision
get :show, :id => PRJ_ID, :path => repository_path_hash([])[:param],
:rev => 3
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['directory', 'doc-deleted.txt', 'doc-ls.txt', 'doc-mkdir.txt'],
- assigns(:entries).collect(&:name)
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 4
+ assert_select 'tr.dir td.filename a', :text => 'directory'
+ assert_select 'tr.file td.filename a', :text => 'doc-deleted.txt'
+ assert_select 'tr.file td.filename a', :text => 'doc-ls.txt'
+ assert_select 'tr.file td.filename a', :text => 'doc-mkdir.txt'
+ end
end
def test_changes
get :changes, :id => PRJ_ID,
:path => repository_path_hash(['doc-mkdir.txt'])[:param]
assert_response :success
- assert_template 'changes'
assert_select 'h2', :text => /doc-mkdir.txt/
end
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['directory', 'doc-ls.txt'])[:param]
assert_response :success
- assert_template 'entry'
# Line 19
assert_select 'tr#L29 td.line-code', :text => /Show help message/
end
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['directory'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entry)
- assert_equal 'directory', assigns(:entry).name
+ assert_select 'table.entries tbody'
end
def test_diff
['inline', 'sbs'].each do |dt|
get :diff, :id => PRJ_ID, :rev => 3, :type => dt
assert_response :success
- assert_template 'diff'
# Line 11 removed
assert_select 'th.line-num:contains(11) ~ td.diff_out', :text => /Display more information/
end
get :annotate, :id => PRJ_ID,
:path => repository_path_hash(['doc-mkdir.txt'])[:param]
assert_response :success
- assert_template 'annotate'
+
assert_select "th.line-num", :text => '2' do
assert_select "+ td.revision" do
assert_select "a", :text => '3'
get :annotate, :id => PRJ_ID, :repository_id => 'author_escaping',
:path => repository_path_hash(['author-escaping-test.txt'])[:param]
assert_response :success
- assert_template 'annotate'
+
assert_select "th.line-num", :text => '1' do
assert_select "+ td.revision" do
assert_select "a", :text => '2'
get :annotate, :id => PRJ_ID, :repository_id => 'author_non_ascii',
:path => repository_path_hash(['author-non-ascii-test.txt'])[:param]
assert_response :success
- assert_template 'annotate'
+
assert_select "th.line-num", :text => '1' do
assert_select "+ td.revision" do
assert_select "a", :text => '2'
@request.session[:user_id] = 1
get :new, :project_id => 'subproject1'
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Subversion, assigns(:repository)
- assert assigns(:repository).new_record?
+ assert_select 'select[name=?]', 'repository_scm' do
+ assert_select 'option[value=?][selected=selected]', 'Subversion'
+ end
assert_select 'input[name=?]:not([disabled])', 'repository[url]'
end
get :new, :project_id => 'subproject1'
end
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Mercurial, assigns(:repository)
assert_select 'select[name=repository_scm]' do
assert_select 'option', 3
:repository => {:url => 'invalid'}
end
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Subversion, assigns(:repository)
- assert assigns(:repository).new_record?
+ assert_select_error /URL is invalid/
+ assert_select 'select[name=?]', 'repository_scm' do
+ assert_select 'option[value=?][selected=selected]', 'Subversion'
+ end
end
def test_edit
@request.session[:user_id] = 1
get :edit, :id => 11
assert_response :success
- assert_template 'edit'
- assert_equal Repository.find(11), assigns(:repository)
assert_select 'input[name=?][value=?][disabled=disabled]', 'repository[url]', 'svn://localhost/test'
end
@request.session[:user_id] = 1
put :update, :id => 11, :repository => {:password => 'x'*260}
assert_response :success
- assert_template 'edit'
- assert_equal Repository.find(11), assigns(:repository)
+ assert_select_error /Password is too long/
end
def test_destroy
def test_revisions
get :revisions, :id => 1
assert_response :success
- assert_template 'revisions'
- assert_equal Repository.find(10), assigns(:repository)
- assert_not_nil assigns(:changesets)
+ assert_select 'table.changesets'
end
def test_revisions_for_other_repository
get :revisions, :id => 1, :repository_id => 'foo'
assert_response :success
- assert_template 'revisions'
- assert_equal repository, assigns(:repository)
- assert_not_nil assigns(:changesets)
+ assert_select 'table.changesets'
end
def test_revisions_for_invalid_repository
def test_revision
get :revision, :id => 1, :rev => 1
assert_response :success
- assert_not_nil assigns(:changeset)
- assert_equal "1", assigns(:changeset).revision
+ assert_select 'h2', :text => 'Revision 1'
end
def test_revision_should_show_add_related_issue_form
def test_revision_with_before_nil_and_afer_normal
get :revision, {:id => 1, :rev => 1}
assert_response :success
- assert_template 'revision'
assert_select 'div.contextual' do
assert_select 'a[href=?]', '/projects/ecookbook/repository/revisions/0', 0
assert_difference 'Changeset.find(103).issues.size' do
xhr :post, :add_related_issue, :id => 1, :rev => 4, :issue_id => 2, :format => 'js'
assert_response :success
- assert_template 'add_related_issue'
assert_equal 'text/javascript', response.content_type
end
assert_equal [2], Changeset.find(103).issue_ids
assert_no_difference 'Changeset.find(103).issues.size' do
xhr :post, :add_related_issue, :id => 1, :rev => 4, :issue_id => 9999, :format => 'js'
assert_response :success
- assert_template 'add_related_issue'
assert_equal 'text/javascript', response.content_type
end
assert_include 'alert("Issue is invalid")', response.body
assert_difference 'Changeset.find(103).issues.size', -1 do
xhr :delete, :remove_related_issue, :id => 1, :rev => 4, :issue_id => 2, :format => 'js'
assert_response :success
- assert_template 'remove_related_issue'
assert_equal 'text/javascript', response.content_type
end
assert_equal [1], Changeset.find(103).issue_ids
get :committers, :id => 10
assert_response :success
- assert_template 'committers'
assert_select 'input[value=dlopper] + select option[value="3"][selected=selected]', :text => 'Dave Lopper'
assert_select 'input[value=foo] + select option[selected=selected]', 0 # no option selected
get :committers, :id => 10
assert_response :success
- assert_template 'committers'
end
def test_post_committers
@project.repository.destroy
get :new, :project_id => 'subproject1', :repository_scm => 'Cvs'
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Cvs, assigns(:repository)
- assert assigns(:repository).new_record?
+
+ assert_select 'select[name=?]', 'repository_scm' do
+ assert_select 'option[value=?][selected=selected]', 'Cvs'
+ end
end
def test_browse_root
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal 3, assigns(:entries).size
- entry = assigns(:entries).detect {|e| e.name == 'images'}
- assert_equal 'dir', entry.kind
-
- entry = assigns(:entries).detect {|e| e.name == 'README'}
- assert_equal 'file', entry.kind
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 3
+ assert_select 'tr.dir td.filename a', :text => 'images'
+ assert_select 'tr.file td.filename a', :text => 'README'
+ end
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr'
+ end
end
def test_browse_directory
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID, :path => repository_path_hash(['images'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['add.png', 'delete.png', 'edit.png'], assigns(:entries).collect(&:name)
- entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
- assert_not_nil entry
- assert_equal 'file', entry.kind
- assert_equal 'images/edit.png', entry.path
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 3
+ assert_select 'tr.file td.filename a', :text => 'add.png'
+ assert_select 'tr.file td.filename a', :text => 'delete.png'
+ assert_select 'tr.file td.filename a', :text => 'edit.png'
+ end
end
def test_browse_at_given_revision
get :show, :id => PRJ_ID, :path => repository_path_hash(['images'])[:param],
:rev => 1
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 2
+ assert_select 'tr.file td.filename a', :text => 'delete.png'
+ assert_select 'tr.file td.filename a', :text => 'edit.png'
+ end
end
def test_entry
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
- assert_template 'entry'
+
assert_select 'td.line-code', :text => /before_filter/, :count => 0
end
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param],
:rev => 2
assert_response :success
- assert_template 'entry'
+
# this line was removed in r3
assert_select 'td.line-code', :text => /before_filter/
end
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['sources'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entry)
- assert_equal 'sources', assigns(:entry).name
+ assert_select 'table.entries tbody'
end
def test_diff
['inline', 'sbs'].each do |dt|
get :diff, :id => PRJ_ID, :rev => 3, :type => dt
assert_response :success
- assert_template 'diff'
+
assert_select 'td.line-code.diff_out', :text => /before_filter :require_login/
assert_select 'td.line-code.diff_in', :text => /with one change/
end
['inline', 'sbs'].each do |dt|
get :diff, :id => PRJ_ID, :rev => 1, :type => dt
assert_response :success
- assert_template 'diff'
+
assert_select 'td.line-code.diff_in', :text => /watched.remove_watcher/
assert_select 'th.filename', :text => /test\/README/
assert_select 'th.filename', :text => /test\/images\/delete.png/
get :annotate, :id => PRJ_ID,
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
- assert_template 'annotate'
# 1.1 line
assert_select 'tr' do
@project.repository.destroy
get :new, :project_id => 'subproject1', :repository_scm => 'Darcs'
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Darcs, assigns(:repository)
- assert assigns(:repository).new_record?
+ assert_select 'select[name=?]', 'repository_scm' do
+ assert_select 'option[value=?][selected=selected]', 'Darcs'
+ end
end
def test_browse_root
@project.reload
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID
- assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal 3, assigns(:entries).size
- assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 3
+ assert_select 'tr.dir td.filename a', :text => 'images'
+ assert_select 'tr.dir td.filename a', :text => 'sources'
+ assert_select 'tr.file td.filename a', :text => 'README'
+ end
end
def test_browse_directory
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID, :path => repository_path_hash(['images'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
- entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
- assert_not_nil entry
- assert_equal 'file', entry.kind
- assert_equal 'images/edit.png', entry.path
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 2
+ assert_select 'tr.file td.filename a', :text => 'delete.png'
+ assert_select 'tr.file td.filename a', :text => 'edit.png'
+ end
end
def test_browse_at_given_revision
get :show, :id => PRJ_ID, :path => repository_path_hash(['images'])[:param],
:rev => 1
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['delete.png'], assigns(:entries).collect(&:name)
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 1
+ assert_select 'tr.file td.filename a', :text => 'delete.png'
+ end
end
def test_changes
get :changes, :id => PRJ_ID,
:path => repository_path_hash(['images', 'edit.png'])[:param]
assert_response :success
- assert_template 'changes'
assert_select 'h2', :text => /edit.png/
end
['inline', 'sbs'].each do |dt|
get :diff, :id => PRJ_ID, :rev => 5, :type => dt
assert_response :success
- assert_template 'diff'
# Line 22 removed
assert_select 'th.line-num:contains(22) ~ td.diff_out', :text => /def remove/
end
@project.repository.destroy
get :new, :project_id => 'subproject1', :repository_scm => 'Filesystem'
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Filesystem, assigns(:repository)
- assert assigns(:repository).new_record?
+ assert_select 'select[name=?]', 'repository_scm' do
+ assert_select 'option[value=?][selected=selected]', 'Filesystem'
+ end
end
def test_browse_root
@repository.reload
get :show, :id => PRJ_ID
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert assigns(:entries).size > 0
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size == 0
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 3
+ assert_select 'tr.dir td.filename a', :text => 'dir'
+ assert_select 'tr.dir td.filename a', :text => 'japanese'
+ assert_select 'tr.file td.filename a', :text => 'test'
+ end
+
+ assert_select 'table.changesets tbody', 0
assert_select 'input[name=rev]', 0
assert_select 'a', :text => 'Statistics', :count => 0
def test_show_no_extension
get :entry, :id => PRJ_ID, :path => repository_path_hash(['test'])[:param]
assert_response :success
- assert_template 'entry'
assert_select 'tr#L1 td.line-code', :text => /TEST CAT/
end
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['japanese', 'euc-jp.txt'])[:param]
assert_response :success
- assert_template 'entry'
assert_select 'tr#L2 td.line-code', :text => /japanese/
if @ruby19_non_utf8_pass
puts "TODO: show repository file contents test fails " +
@project.repository.destroy
get :new, :project_id => 'subproject1', :repository_scm => 'Git'
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Git, assigns(:repository)
- assert assigns(:repository).new_record?
+ assert_select 'select[name=?]', 'repository_scm' do
+ assert_select 'option[value=?][selected=selected]', 'Git'
+ end
end
def test_browse_root
get :show, :id => PRJ_ID
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal 9, assigns(:entries).size
- assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'this_is_a_really_long_and_verbose_directory_name' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
- assert assigns(:entries).detect {|e| e.name == 'copied_README' && e.kind == 'file'}
- assert assigns(:entries).detect {|e| e.name == 'new_file.txt' && e.kind == 'file'}
- assert assigns(:entries).detect {|e| e.name == 'renamed_test.txt' && e.kind == 'file'}
- assert assigns(:entries).detect {|e| e.name == 'filemane with spaces.txt' && e.kind == 'file'}
- assert assigns(:entries).detect {|e| e.name == ' filename with a leading space.txt ' && e.kind == 'file'}
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 9
+ assert_select 'tr.dir td.filename_no_report a', :text => 'images'
+ assert_select 'tr.dir td.filename_no_report a', :text => 'this_is_a_really_long_and_verbose_directory_name'
+ assert_select 'tr.dir td.filename_no_report a', :text => 'sources'
+ assert_select 'tr.file td.filename_no_report a', :text => 'README'
+ assert_select 'tr.file td.filename_no_report a', :text => 'copied_README'
+ assert_select 'tr.file td.filename_no_report a', :text => 'new_file.txt'
+ assert_select 'tr.file td.filename_no_report a', :text => 'renamed_test.txt'
+ assert_select 'tr.file td.filename_no_report a', :text => 'filemane with spaces.txt'
+ assert_select 'tr.file td.filename_no_report a', :text => 'filename with a leading space.txt'
+ end
+
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr'
+ end
end
def test_browse_branch
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID, :rev => 'test_branch'
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal 4, assigns(:entries).size
- assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
- assert assigns(:entries).detect {|e| e.name == 'test.txt' && e.kind == 'file'}
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 4
+ assert_select 'tr.dir td.filename_no_report a', :text => 'images'
+ assert_select 'tr.dir td.filename_no_report a', :text => 'sources'
+ assert_select 'tr.file td.filename_no_report a', :text => 'README'
+ assert_select 'tr.file td.filename_no_report a', :text => 'test.txt'
+ end
+
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr'
+ end
end
def test_browse_tag
].each do |t1|
get :show, :id => PRJ_ID, :rev => t1
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert assigns(:entries).size > 0
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody tr'
+ assert_select 'table.changesets tbody tr'
end
end
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID, :path => repository_path_hash(['images'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['edit.png'], assigns(:entries).collect(&:name)
- entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
- assert_not_nil entry
- assert_equal 'file', entry.kind
- assert_equal 'images/edit.png', entry.path
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 1
+ assert_select 'tr.file td.filename_no_report a', :text => 'edit.png'
+ end
+ assert_select 'table.changesets tbody tr'
end
def test_browse_at_given_revision
get :show, :id => PRJ_ID, :path => repository_path_hash(['images'])[:param],
:rev => '7234cb2750b63f47bff735edc50a1c0a433c2518'
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['delete.png'], assigns(:entries).collect(&:name)
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 1
+ assert_select 'tr.file td.filename_no_report a', :text => 'delete.png'
+ end
end
def test_changes
get :changes, :id => PRJ_ID,
:path => repository_path_hash(['images', 'edit.png'])[:param]
assert_response :success
- assert_template 'changes'
assert_select 'h2', :text => /edit.png/
end
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
- assert_template 'entry'
# Line 11
assert_select 'tr#L11 td.line-code', :text => /WITHOUT ANY WARRANTY/
end
:path => repository_path_hash(['latin-1-dir', "test-#{CHAR_1_HEX}.txt"])[:param],
:rev => r1
assert_response :success
- assert_template 'entry'
assert_select 'tr#L1 td.line-code', :text => /test-#{CHAR_1_HEX}.txt/
end
end
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['sources'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entry)
- assert_equal 'sources', assigns(:entry).name
+ assert_select 'h2 a', :text => 'sources'
+ assert_select 'table.entries tbody'
end
def test_diff
:rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7',
:type => dt
assert_response :success
- assert_template 'diff'
# Line 22 removed
assert_select 'th.line-num:contains(22) ~ td.diff_out', :text => /def remove/
assert_select 'h2', :text => /2f9c0091/
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param],
:type => dt
assert_response :success
- assert_template 'diff'
# Line 22 removed
assert_select 'th.line-num:contains(22) ~ td.diff_out', :text => /def remove/
assert_select 'h2', :text => /2f9c0091/
:rev_to => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7',
:type => dt
assert_response :success
- assert_template 'diff'
- diff = assigns(:diff)
- assert_not_nil diff
assert_select 'h2', :text => /2f9c0091:61b685fb/
assert_select 'form[action=?]', '/projects/subproject1/repository/revisions/61b685fbe55ab05b5ac68402d5720c1a6ac973d1/diff'
assert_select 'input#rev_to[type=hidden][name=rev_to][value=?]', '2f9c0091c754a91af7a9c478e36556b4bde8dcf7'
:rev_to => '2f9c0091c754a91a',
:type => 'inline'
assert_response :success
- assert_template 'diff'
- diff = assigns(:diff)
- assert_not_nil diff
assert_select 'form[action=?]', '/projects/subproject1/repository/test-diff-path/revisions/61b685fbe55ab05b/diff'
assert_select 'input#rev_to[type=hidden][name=rev_to][value=?]', '2f9c0091c754a91a'
end
['inline', 'sbs'].each do |dt|
get :diff, :id => PRJ_ID, :rev => r1, :type => dt
assert_response :success
- assert_template 'diff'
assert_select 'table' do
assert_select 'thead th.filename', :text => /latin-1-dir\/test-#{CHAR_1_HEX}.txt/
assert_select 'tbody td.diff_in', :text => /test-#{CHAR_1_HEX}.txt/
def test_diff_should_show_filenames
get :diff, :id => PRJ_ID, :rev => 'deff712f05a90d96edbd70facc47d944be5897e3', :type => 'inline'
assert_response :success
- assert_template 'diff'
# modified file
assert_select 'th.filename', :text => 'sources/watchers_controller.rb'
# deleted file
:id => PRJ_ID,
:rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7'
assert_response :success
- assert_template 'diff'
user.reload
assert_equal "inline", user.pref[:diff_type]
get :diff,
:rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7',
:type => 'sbs'
assert_response :success
- assert_template 'diff'
user.reload
assert_equal "sbs", user.pref[:diff_type]
end
get :annotate, :id => PRJ_ID,
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
- assert_template 'annotate'
# Line 23, changeset 2f9c0091
assert_select 'tr' do
get :annotate, :id => PRJ_ID, :rev => 'deff7',
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
- assert_template 'annotate'
assert_select 'h2', :text => /@ deff712f/
end
with_settings :default_language => 'en' do
get :annotate, :id => PRJ_ID,
:path => repository_path_hash(['images', 'edit.png'])[:param]
- assert_response 200
+ assert_response :success
assert_select 'p#errorExplanation', :text => /cannot be annotated/
end
end
get :annotate, :id => PRJ_ID,
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param],
:rev => 'deff712f'
- assert_response 200
+ assert_response :success
assert_select 'p#errorExplanation', :text => /exceeds the maximum text file size/
get :annotate, :id => PRJ_ID,
:path => repository_path_hash(['README'])[:param],
:rev => '7234cb2'
assert_response :success
- assert_template 'annotate'
end
end
@project.reload
assert_equal NUM_REV, @repository.changesets.count
get :revisions, :id => PRJ_ID
- assert_response :success
- assert_template 'revisions'
assert_select 'form[method=get][action=?]', '/projects/subproject1/repository/revision'
end
['61b685fbe55ab05b5ac68402d5720c1a6ac973d1', '61b685f'].each do |r|
get :revision, :id => PRJ_ID, :rev => r
assert_response :success
- assert_template 'revision'
end
end
@project.repository.destroy
get :new, :project_id => 'subproject1', :repository_scm => 'Mercurial'
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Mercurial, assigns(:repository)
- assert assigns(:repository).new_record?
+ assert_select 'select[name=?]', 'repository_scm' do
+ assert_select 'option[value=?][selected=selected]', 'Mercurial'
+ end
end
def test_show_root
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal 4, assigns(:entries).size
- assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
- assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 4
+ assert_select 'tr.dir td.filename a', :text => 'images'
+ assert_select 'tr.dir td.filename a', :text => 'sources'
+ assert_select 'tr.file td.filename a', :text => '.hgtags'
+ assert_select 'tr.file td.filename a', :text => 'README'
+ end
+
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr'
+ end
end
def test_show_directory
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID, :path => repository_path_hash(['images'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
- entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
- assert_not_nil entry
- assert_equal 'file', entry.kind
- assert_equal 'images/edit.png', entry.path
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 2
+ assert_select 'tr.file td.filename a', :text => 'delete.png'
+ assert_select 'tr.file td.filename a', :text => 'edit.png'
+ end
+
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr'
+ end
end
def test_show_at_given_revision
get :show, :id => PRJ_ID, :path => repository_path_hash(['images'])[:param],
:rev => r1
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['delete.png'], assigns(:entries).collect(&:name)
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 1
+ assert_select 'tr.file td.filename a', :text => 'delete.png'
+ end
+
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr'
+ end
end
end
:path => repository_path_hash(['sql_escape', 'percent%dir'])[:param],
:rev => r1
assert_response :success
- assert_template 'show'
-
- assert_not_nil assigns(:entries)
- assert_equal ['percent%file1.txt', 'percentfile1.txt'],
- assigns(:entries).collect(&:name)
- changesets = assigns(:changesets)
- assert_not_nil changesets
- assert assigns(:changesets).size > 0
- assert_equal %w(13 11 10 9), changesets.collect(&:revision)
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 2
+ assert_select 'tr.file td.filename a', :text => 'percent%file1.txt'
+ assert_select 'tr.file td.filename a', :text => 'percentfile1.txt'
+ end
+
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr td.id a', :text => /^13:/
+ assert_select 'tr td.id a', :text => /^11:/
+ assert_select 'tr td.id a', :text => /^10:/
+ assert_select 'tr td.id a', :text => /^9:/
+ end
end
end
:path => repository_path_hash(['latin-1-dir'])[:param],
:rev => r1
assert_response :success
- assert_template 'show'
-
- assert_not_nil assigns(:entries)
- assert_equal ["make-latin-1-file.rb",
- "test-#{@char_1}-1.txt",
- "test-#{@char_1}-2.txt",
- "test-#{@char_1}.txt"], assigns(:entries).collect(&:name)
- changesets = assigns(:changesets)
- assert_not_nil changesets
- assert_equal %w(21 20 19 18 17), changesets.collect(&:revision)
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 4
+ assert_select 'tr.file td.filename a', :text => "make-latin-1-file.rb"
+ assert_select 'tr.file td.filename a', :text => "test-#{@char_1}-1.txt"
+ assert_select 'tr.file td.filename a', :text => "test-#{@char_1}-2.txt"
+ assert_select 'tr.file td.filename a', :text => "test-#{@char_1}.txt"
+ end
+
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr td.id a', :text => /^21:/
+ assert_select 'tr td.id a', :text => /^20:/
+ assert_select 'tr td.id a', :text => /^19:/
+ assert_select 'tr td.id a', :text => /^18:/
+ assert_select 'tr td.id a', :text => /^17:/
+ end
end
end
].each do |bra|
get :show, :id => PRJ_ID, :rev => bra
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert assigns(:entries).size > 0
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody tr'
+ assert_select 'table.changesets tbody tr'
end
end
].each do |tag|
get :show, :id => PRJ_ID, :rev => tag
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert assigns(:entries).size > 0
- assert_not_nil assigns(:changesets)
- assert assigns(:changesets).size > 0
+
+ assert_select 'table.entries tbody tr'
+ assert_select 'table.changesets tbody tr'
end
end
get :changes, :id => PRJ_ID,
:path => repository_path_hash(['images', 'edit.png'])[:param]
assert_response :success
- assert_template 'changes'
assert_select 'h2', :text => /edit.png/
end
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
- assert_template 'entry'
# Line 10
assert_select 'tr#L10 td.line-code', :text => /WITHOUT ANY WARRANTY/
end
:path => repository_path_hash(['latin-1-dir', "test-#{@char_1}-2.txt"])[:param],
:rev => r1
assert_response :success
- assert_template 'entry'
assert_select 'tr#L1 td.line-code', :text => /Mercurial is a distributed version control system/
end
end
:path => repository_path_hash(['latin-1-dir', "test-#{@char_1}.txt"])[:param],
:rev => r1
assert_response :success
- assert_template 'entry'
assert_select 'tr#L1 td.line-code', :text => /test-#{@char_1}.txt/
end
end
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['sources'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entry)
- assert_equal 'sources', assigns(:entry).name
+ assert_select 'h2 a', :text => 'sources'
+ assert_select 'table.entries tbody'
end
def test_diff
['inline', 'sbs'].each do |dt|
get :diff, :id => PRJ_ID, :rev => r1, :type => dt
assert_response :success
- assert_template 'diff'
if @diff_c_support
# Line 22 removed
assert_select 'th.line-num:contains(22) ~ td.diff_out', :text => /def remove/
:rev_to => r2,
:type => dt
assert_response :success
- assert_template 'diff'
- diff = assigns(:diff)
- assert_not_nil diff
assert_select 'h2', :text => /4:def6d2f1254a 2:400bb8672109/
end
end
['inline', 'sbs'].each do |dt|
get :diff, :id => PRJ_ID, :rev => r1, :type => dt
assert_response :success
- assert_template 'diff'
assert_select 'table' do
assert_select 'thead th.filename', :text => /latin-1-dir\/test-#{@char_1}-2.txt/
assert_select 'tbody td.diff_in', :text => /It is written in Python/
def test_diff_should_show_modified_filenames
get :diff, :id => PRJ_ID, :rev => '400bb8672109', :type => 'inline'
assert_response :success
- assert_template 'diff'
assert_select 'th.filename', :text => 'sources/watchers_controller.rb'
end
def test_diff_should_show_deleted_filenames
get :diff, :id => PRJ_ID, :rev => 'b3a615152df8', :type => 'inline'
assert_response :success
- assert_template 'diff'
assert_select 'th.filename', :text => 'sources/welcome_controller.rb'
end
get :annotate, :id => PRJ_ID,
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
- assert_template 'annotate'
# Line 22, revision 4:def6d2f1254a
assert_select 'tr' do
get :annotate, :id => PRJ_ID, :rev => r1,
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
- assert_template 'annotate'
assert_select 'h2', :text => /@ 2:400bb8672109/
end
end
:path => repository_path_hash(['latin-1-dir', "test-#{@char_1}-2.txt"])[:param],
:rev => r1
assert_response :success
- assert_template 'annotate'
assert_select "th.line-num", :text => '1' do
assert_select "+ td.revision" do
assert_select "a", :text => '20:709858aafd1b'
with_settings :default_language => "en" do
get :revision, :id => PRJ_ID, :rev => r
assert_response :success
- assert_template 'revision'
assert_select 'title',
:text => 'Revision 1:9d5b5b004199 - Added 2 files and modified one. - eCookbook Subproject 1 - Redmine'
end
@project.repository.destroy
get :new, :project_id => 'subproject1', :repository_scm => 'Subversion'
assert_response :success
- assert_template 'new'
- assert_kind_of Repository::Subversion, assigns(:repository)
- assert assigns(:repository).new_record?
+ assert_select 'select[name=?]', 'repository_scm' do
+ assert_select 'option[value=?][selected=selected]', 'Subversion'
+ end
end
def test_show
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_not_nil assigns(:changesets)
- entry = assigns(:entries).detect {|e| e.name == 'subversion_test'}
- assert_not_nil entry
- assert_equal 'dir', entry.kind
- assert_select 'tr.dir a[href="/projects/subproject1/repository/show/subversion_test"]'
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 1
+ assert_select 'tr.dir td.filename a', :text => 'subversion_test'
+ assert_select 'tr.dir td.filename a[href=?]', '/projects/subproject1/repository/show/subversion_test'
+ end
+
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr', 10
+ assert_select 'tr td.id a', :text => '11'
+ end
assert_select 'input[name=rev]'
assert_select 'a', :text => 'Statistics'
get :show, :id => PRJ_ID, :repository_id => 'svn'
assert_response :success
- assert_template 'show'
+
assert_select 'tr.dir a[href="/projects/subproject1/repository/svn/show/subversion_test"]'
# Repository menu should link to the main repo
assert_select '#main-menu a[href="/projects/subproject1/repository"]'
assert_equal NUM_REV, @repository.changesets.count
get :show, :id => PRJ_ID, :path => repository_path_hash(['subversion_test'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal [
- '[folder_with_brackets]', 'folder', '.project',
- 'helloworld.c', 'textfile.txt'
- ],
- assigns(:entries).collect(&:name)
- entry = assigns(:entries).detect {|e| e.name == 'helloworld.c'}
- assert_equal 'file', entry.kind
- assert_equal 'subversion_test/helloworld.c', entry.path
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 5
+ assert_select 'tr.dir td.filename a', :text => '[folder_with_brackets]'
+ assert_select 'tr.dir td.filename a', :text => 'folder'
+ assert_select 'tr.file td.filename a', :text => '.project'
+ assert_select 'tr.file td.filename a', :text => 'helloworld.c'
+ assert_select 'tr.file td.filename a', :text => 'textfile.txt'
+ end
+
assert_select 'a.text-x-c', :text => 'helloworld.c'
end
get :show, :id => PRJ_ID, :path => repository_path_hash(['subversion_test'])[:param],
:rev => 4
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entries)
- assert_equal ['folder', '.project', 'helloworld.c', 'helloworld.rb', 'textfile.txt'],
- assigns(:entries).collect(&:name)
+
+ assert_select 'table.entries tbody' do
+ assert_select 'tr', 5
+ assert_select 'tr.dir td.filename a', :text => 'folder'
+ assert_select 'tr.file td.filename a', :text => '.project'
+ assert_select 'tr.file td.filename a', :text => 'helloworld.c'
+ assert_select 'tr.file td.filename a', :text => 'helloworld.rb'
+ assert_select 'tr.file td.filename a', :text => 'textfile.txt'
+ end
end
def test_file_changes
get :changes, :id => PRJ_ID,
:path => repository_path_hash(['subversion_test', 'folder', 'helloworld.rb'])[:param]
assert_response :success
- assert_template 'changes'
- changesets = assigns(:changesets)
- assert_not_nil changesets
- assert_equal %w(6 3 2), changesets.collect(&:revision)
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr', 3
+ assert_select 'tr td.id a', :text => '6'
+ assert_select 'tr td.id a', :text => '3'
+ assert_select 'tr td.id a', :text => '2'
+ end
# svn properties displayed with svn >= 1.5 only
if Redmine::Scm::Adapters::SubversionAdapter.client_version_above?([1, 5, 0])
- assert_not_nil assigns(:properties)
- assert_equal 'native', assigns(:properties)['svn:eol-style']
assert_select 'ul li' do
assert_select 'b', :text => 'svn:eol-style'
assert_select 'span', :text => 'native'
get :changes, :id => PRJ_ID,
:path => repository_path_hash(['subversion_test', 'folder'])[:param]
assert_response :success
- assert_template 'changes'
- changesets = assigns(:changesets)
- assert_not_nil changesets
- assert_equal %w(10 9 7 6 5 2), changesets.collect(&:revision)
+ assert_select 'table.changesets tbody' do
+ assert_select 'tr', 6
+ assert_select 'tr td.id a', :text => '10'
+ assert_select 'tr td.id a', :text => '9'
+ assert_select 'tr td.id a', :text => '7'
+ assert_select 'tr td.id a', :text => '6'
+ assert_select 'tr td.id a', :text => '5'
+ assert_select 'tr td.id a', :text => '2'
+ end
end
def test_entry
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['subversion_test', 'helloworld.c'])[:param]
assert_response :success
- assert_template 'entry'
+ assert_select 'h2 a', :text => 'subversion_test'
+ assert_select 'h2 a', :text => 'helloworld.c'
end
def test_entry_should_show_other_if_too_big
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['subversion_test', 'folder', 'subfolder', 'rubylogo.gif'])[:param]
assert_response :success
- assert_template 'entry'
+ assert_select 'img[src=?]', '/projects/subproject1/repository/raw/subversion_test/folder/subfolder/rubylogo.gif'
end
def test_entry_at_given_revision
:path => repository_path_hash(['subversion_test', 'helloworld.rb'])[:param],
:rev => 2
assert_response :success
- assert_template 'entry'
# this line was removed in r3 and file was moved in r6
assert_select 'td.line-code', :text => /Here's the code/
end
get :entry, :id => PRJ_ID,
:path => repository_path_hash(['subversion_test', 'folder'])[:param]
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:entry)
- assert_equal 'folder', assigns(:entry).name
+ assert_select 'h2 a', :text => 'subversion_test'
+ assert_select 'h2 a', :text => 'folder'
end
# TODO: this test needs fixtures.
def test_revision
get :revision, :id => 1, :rev => 2
assert_response :success
- assert_template 'revision'
assert_select 'ul' do
assert_select 'li' do
get :revision, :id => 1, :rev => 2
assert_response :success
- assert_template 'revision'
assert_select 'ul' do
assert_select 'li' do
['inline', 'sbs'].each do |dt|
get :diff, :id => PRJ_ID, :rev => 3, :type => dt
assert_response :success
- assert_template 'diff'
assert_select 'h2', :text => /Revision 3/
assert_select 'th.filename', :text => 'subversion_test/textfile.txt'
end
:path => repository_path_hash(['subversion_test', 'folder'])[:param],
:type => dt
assert_response :success
- assert_template 'diff'
- diff = assigns(:diff)
- assert_not_nil diff
- # 2 files modified
- assert_equal 2, Redmine::UnifiedDiff.new(diff).size
assert_select 'h2', :text => /2:6/
+ # 2 files modified
+ assert_select 'table.filecontent', 2
+ assert_select 'table.filecontent thead th.filename', :text => 'greeter.rb'
+ assert_select 'table.filecontent thead th.filename', :text => 'helloworld.rb'
end
end
get :annotate, :id => PRJ_ID,
:path => repository_path_hash(['subversion_test', 'helloworld.c'])[:param]
assert_response :success
- assert_template 'annotate'
assert_select 'tr' do
assert_select 'th.line-num', :text => '1'
get :annotate, :id => PRJ_ID, :rev => 8,
:path => repository_path_hash(['subversion_test', 'helloworld.c'])[:param]
assert_response :success
- assert_template 'annotate'
assert_select 'h2', :text => /@ 8/
end