Yikes! Yet more Ruby 1.9 Encoding Issues

We're getting there. Thanks to Andrew Stacey.
This commit is contained in:
Jacques Distler 2010-01-05 09:35:14 -06:00
parent ea431ad373
commit 6e6bf1a446
3 changed files with 18 additions and 13 deletions

View file

@ -65,7 +65,7 @@ class Page < ActiveRecord::Base
end
def wiki_words
wiki_references.select { |ref| ref.wiki_word? }.map { |ref| ref.referenced_name }
wiki_references.select { |ref| ref.wiki_word? }.map { |ref| ref.referenced_name.as_utf8 }
end
def linked_from
@ -73,7 +73,7 @@ class Page < ActiveRecord::Base
end
def redirects
wiki_references.select { |ref| ref.redirected_page? }.map { |ref| ref.referenced_name }
wiki_references.select { |ref| ref.redirected_page? }.map { |ref| ref.referenced_name.as_utf8 }
end
def included_from

View file

@ -384,7 +384,7 @@ a.existingWikiWord[title]{
border: 1px dashed #000;
}
.byline a.existingWikiWord[title]{
.web_protected a.existingWikiWord[t, .web_normal a.existingWikiWord[title]{
border: none;
}

View file

@ -127,23 +127,24 @@ class PageTest < ActiveSupport::TestCase
def test_revise_changes_references_from_wanted_to_linked_for_redirected_pages
web = Web.find(1)
new_page = Page.new(:web => web, :name => 'NewPage')
new_page.revise('Reference to HappyPage, and to WantedPage2', 'NewPage', Time.local(2004, 4, 5, 17, 56), 'AlexeyVerkhovsky',
new_page.revise("Reference to H\xC3\xA1ppyPage, and to WantedPage2", 'NewPage', Time.local(2004, 4, 5, 17, 56), 'AlexeyVerkhovsky',
x_test_renderer)
references = new_page.wiki_references(true)
assert_equal 2, references.size
assert_equal 'HappyPage', references[0].referenced_name
assert_equal "H\xC3\xA1ppyPage", references[0].referenced_name
assert_equal WikiReference::WANTED_PAGE, references[0].link_type
assert_equal 'WantedPage2', references[1].referenced_name
assert_equal WikiReference::WANTED_PAGE, references[1].link_type
wanted_pages = web.select.wanted_pages
assert_equal ["HappyPage", "HisWay", "OverThere", "WantedPage2"], wanted_pages
a = ''.respond_to?(:force_encoding) ? ["HisWay", "H\u00E1ppyPage", "OverThere", "WantedPage2"] : ["HisWay", "H\303\241ppyPage", "OverThere", "WantedPage2"]
assert_equal a, wanted_pages
my_page = Page.new(:web => web, :name => 'MyPage')
my_page.revise("[[!redirects HappyPage]]\nAnd here it is!", 'MyPage', Time.now, 'AlexeyVerkhovsky', x_test_renderer)
my_page.revise("[[!redirects H\xC3\xA1ppyPage]]\nAnd here it is!", 'MyPage', Time.now, 'AlexeyVerkhovsky', x_test_renderer)
my_references = my_page.wiki_references(true)
assert_equal 1, my_references.size
assert_equal 'HappyPage', my_references[0].referenced_name
assert_equal "H\xC3\xA1ppyPage", my_references[0].referenced_name
assert_equal WikiReference::REDIRECTED_PAGE, my_references[0].link_type
wanted_pages = web.select.wanted_pages
assert_equal ["HisWay", "OverThere", "WantedPage2"], wanted_pages
@ -151,10 +152,12 @@ class PageTest < ActiveSupport::TestCase
# link type stored for NewPage -> HappyPage reference should change from WANTED to LINKED
# reference NewPage -> WantedPage2 should remain the same
references = new_page.wiki_references #(true)
assert_match( "Reference to <a class='existingWikiWord' href='\.\./show/MyPage'>Happy Page</a>",
s = ''.respond_to?(:force_encoding) ? "Reference to <a class='existingWikiWord' href='\.\./show/MyPage'>H\u00E1ppy Page</a>" :
"Reference to <a class='existingWikiWord' href='\.\./show/MyPage'>H\303\241ppy Page</a>"
assert_match( s,
x_test_renderer(new_page.revisions.last).display_content(true) )
assert_equal 2, references.size
assert_equal 'HappyPage', references[0].referenced_name
assert_equal "H\xC3\xA1ppyPage", references[0].referenced_name
# Doesn't work, since picking up the change in wiki_references requires a database query.
# assert_equal WikiReference::LINKED_PAGE, references[0].link_type
assert_equal 'WantedPage2', references[1].referenced_name
@ -162,16 +165,18 @@ class PageTest < ActiveSupport::TestCase
wanted_pages = web.select.wanted_pages
assert_equal ["HisWay", "OverThere", "WantedPage2"], wanted_pages
new_page.revise('Reference to HappyPage and to WantedPage2.pdf and [[foo.pdf]]', 'NewPage', Time.now, 'AlexeyVerkhovsky',
new_page.revise("Reference to H\xC3\xA1ppyPage and to WantedPage2.pdf and [[foo.pdf]]", 'NewPage', Time.now, 'AlexeyVerkhovsky',
x_test_renderer)
references = new_page.wiki_references(true)
assert_equal( "<p>Reference to <a class='existingWikiWord' href='\.\./show/MyPage'>Happy Page</a>" +
s = ''.respond_to?(:force_encoding) ? "<p>Reference to <a class='existingWikiWord' href='\.\./show/MyPage'>H\u00E1ppy Page</a>" :
"<p>Reference to <a class='existingWikiWord' href='\.\./show/MyPage'>H\303\241ppy Page</a>"
assert_equal( s +
" and to <span class='newWikiWord'>Wanted Page2<a href='../show/WantedPage2'>?</a></span>.pdf " +
"and <span class='wikilink-error'><b>Illegal link (target contains a &#39;.&#39;):</b> foo.pdf</span></p>",
x_test_renderer(new_page.revisions.last).display_content(true) )
assert_equal 3, references.size
# now it works.
assert_equal 'HappyPage', references[0].referenced_name
assert_equal "H\xC3\xA1ppyPage", references[0].referenced_name
assert_equal WikiReference::LINKED_PAGE, references[0].link_type
assert_equal 'WantedPage2', references[1].referenced_name
assert_equal WikiReference::WANTED_PAGE, references[1].link_type