words_add += 1
else
del_at = pos unless del_at
- deleted << ' ' + h(change[2])
+ deleted << ' ' unless deleted.empty?
+ deleted << h(change[2])
words_del += 1
end
end
if add_at
- words[add_at] = '<span class="diff_in">' + words[add_at]
- words[add_to] = words[add_to] + '</span>'
+ words[add_at] = '<span class="diff_in">'.html_safe + words[add_at]
+ words[add_to] = words[add_to] + '</span>'.html_safe
end
if del_at
- words.insert del_at - del_off + dels + words_add, '<span class="diff_out">' + deleted + '</span>'
+ words.insert del_at - del_off + dels + words_add, '<span class="diff_out">'.html_safe + deleted + '</span>'.html_safe
dels += 1
del_off += words_del
words_del = 0
end
def test_diff
- get :diff, :project_id => 1, :id => 'CookBook_documentation', :version => 2, :version_from => 1
+ content = WikiPage.find(1).content
+ assert_difference 'WikiContent::Version.count', 2 do
+ content.text = "Line removed\nThis is a sample text for testing diffs"
+ content.save!
+ content.text = "This is a sample text for testing diffs\nLine added"
+ content.save!
+ end
+
+ get :diff, :project_id => 1, :id => 'CookBook_documentation', :version => content.version, :version_from => (content.version - 1)
assert_response :success
assert_template 'diff'
- assert_tag :tag => 'span', :attributes => { :class => 'diff_in'},
- :content => /updated/
+ assert_select 'span.diff_out', :text => 'Line removed'
+ assert_select 'span.diff_in', :text => 'Line added'
end
def test_annotate