summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/wiki.rb6
-rw-r--r--test/unit/wiki_redirect_test.rb3
-rw-r--r--test/unit/wiki_test.rb9
3 files changed, 14 insertions, 4 deletions
diff --git a/app/models/wiki.rb b/app/models/wiki.rb
index 9bd245955..b28694ec4 100644
--- a/app/models/wiki.rb
+++ b/app/models/wiki.rb
@@ -45,11 +45,11 @@ class Wiki < ActiveRecord::Base
# find the page with the given title
def find_page(title, options = {})
title = start_page if title.blank?
- title = Wiki.titleize(title)
- page = pages.find_by_title(title)
+ title = Wiki.titleize(title).downcase
+ page = pages.first(:conditions => ["LOWER(title) LIKE ?", title])
if !page && !(options[:with_redirect] == false)
# search for a redirect
- redirect = redirects.find_by_title(title)
+ redirect = redirects.first(:conditions => ["LOWER(title) LIKE ?", title])
page = find_page(redirect.redirects_to, :with_redirect => false) if redirect
end
page
diff --git a/test/unit/wiki_redirect_test.rb b/test/unit/wiki_redirect_test.rb
index 7e80638b2..3e19d4958 100644
--- a/test/unit/wiki_redirect_test.rb
+++ b/test/unit/wiki_redirect_test.rb
@@ -18,7 +18,7 @@
require File.dirname(__FILE__) + '/../test_helper'
class WikiRedirectTest < ActiveSupport::TestCase
- fixtures :projects, :wikis
+ fixtures :projects, :wikis, :wiki_pages
def setup
@wiki = Wiki.find(1)
@@ -33,6 +33,7 @@ class WikiRedirectTest < ActiveSupport::TestCase
assert_equal 'New_title', @original.title
assert @wiki.redirects.find_by_title('Original_title')
assert @wiki.find_page('Original title')
+ assert @wiki.find_page('ORIGINAL title')
end
def test_update_redirect
diff --git a/test/unit/wiki_test.rb b/test/unit/wiki_test.rb
index 9303ce784..82a08b4c4 100644
--- a/test/unit/wiki_test.rb
+++ b/test/unit/wiki_test.rb
@@ -39,6 +39,15 @@ class WikiTest < ActiveSupport::TestCase
assert_equal "Another start page", @wiki.start_page
end
+ def test_find_page
+ wiki = Wiki.find(1)
+ page = WikiPage.find(2)
+
+ assert_equal page, wiki.find_page('Another_page')
+ assert_equal page, wiki.find_page('Another page')
+ assert_equal page, wiki.find_page('ANOTHER page')
+ end
+
def test_titleize
assert_equal 'Page_title_with_CAPITALES', Wiki.titleize('page title with CAPITALES')
assert_equal 'テスト', Wiki.titleize('テスト')