]> git.openstreetmap.org Git - rails.git/blobdiff - vendor/plugins/http_accept_language/test/http_accept_language_test.rb
First stage of i18n. Some migrations and extra plugins.
[rails.git] / vendor / plugins / http_accept_language / test / http_accept_language_test.rb
diff --git a/vendor/plugins/http_accept_language/test/http_accept_language_test.rb b/vendor/plugins/http_accept_language/test/http_accept_language_test.rb
new file mode 100644 (file)
index 0000000..8c8a446
--- /dev/null
@@ -0,0 +1,45 @@
+$:.unshift(File.dirname(__FILE__) + '/../lib')
+require 'http_accept_language'
+require 'test/unit'
+
+class MockedCgiRequest
+  include HttpAcceptLanguage
+  def env
+    @env ||= {'HTTP_ACCEPT_LANGUAGE' => 'en-us,en-gb;q=0.8,en;q=0.6'}
+  end
+end
+
+class HttpAcceptLanguageTest < Test::Unit::TestCase
+  def test_should_return_empty_array
+    request.env['HTTP_ACCEPT_LANGUAGE'] = nil
+    assert_equal [], request.user_preferred_languages
+  end
+
+  def test_should_properly_split
+    assert_equal %w{en-US en-GB en}, request.user_preferred_languages
+  end
+
+  def test_should_ignore_jambled_header
+    request.env['HTTP_ACCEPT_LANGUAGE'] = 'odkhjf89fioma098jq .,.,'
+    assert_equal [], request.user_preferred_languages
+  end
+
+  def test_should_find_first_available_language
+    assert_equal 'en-GB', request.preferred_language_from(%w{en en-GB})
+  end
+
+  def test_should_find_first_compatible_language
+    assert_equal 'en-hk', request.compatible_language_from(%w{en-hk})
+    assert_equal 'en', request.compatible_language_from(%w{en})
+  end
+
+  def test_should_find_first_compatible_from_user_preferred
+    request.env['HTTP_ACCEPT_LANGUAGE'] = 'en-us,de-de'
+    assert_equal 'en', request.compatible_language_from(%w{de en})
+  end
+
+  private
+  def request
+    @request ||= MockedCgiRequest.new
+  end
+end