ref: refs/heads/master
commit 4f3a81b28dac06862fd9e90baf384841dd8a3c06
Author: Duncan Mac-Vicar P
Date: Fri Aug 7 18:14:12 2009 +0200
fix the testcase to not access the system
improve the testcases, by mocking what needs to be mocked only
---
plugins/language/app/models/language.rb | 36 ++---
.../test/functional/language_controller_test.rb | 34 +++++
plugins/language/test/unit/language_test.rb | 153 ++++++++++----------
3 files changed, 126 insertions(+), 97 deletions(-)
diff --git a/plugins/language/app/models/language.rb b/plugins/language/app/models/language.rb
index c901a9d..65ab1f1 100644
--- a/plugins/language/app/models/language.rb
+++ b/plugins/language/app/models/language.rb
@@ -1,49 +1,39 @@
+
# = Language model
# Provides set and gets resources from YaPI language module.
# Main goal is handle YaPI specific calls and data formats. Provides cleaned
# and well defined data.
class Language
+
# cache available languages as it is change only rarely
@@available = {}
+
# current language
attr_accessor :language
- # utf8 settings ("true" or "false")
+ # utf8 settings ("true" or "false")
attr_accessor :utf8
- # root locale settings ("true" or "false" or "ctype") see yast-country documentation
+ # root locale settings ("true" or "false" or "ctype")
+ # see yast-country documentation
attr_accessor :rootlocale
- #--------------------------------------------------------------------------------
- #
- #local methods
- #
- #--------------------------------------------------------------------------------
- private
- #
- # dbus parsers
- #
+ private
-
# Creates argument for dbus call which specify what data is requested.
# Available languages is cached so request it only if it is necessary.
# return:: hash with requested keys
- def Language.create_read_question #:doc:
+ def self.create_read_question #:doc:
ret = {
"current" => "true",
"utf8" => "true",
"rootlang" => "true"
}
- ret["languages"]= "true" if @@available.empty?
+ if @@available.nil? || @@available.empty?
+ ret["languages"]= "true"
+ end
return ret
end
-
-
-
- #
- # set
- #
public
-
# Parses response from dbus YaPI call
# response:: response from dbus
def parse_response(response) #:doc:
@@ -56,8 +46,8 @@ class Language
end
# Getter for available static field
- def Language.available
- return @@available
+ def self.available
+ @@available
end
# fills language instance with data from YaPI.
diff --git a/plugins/language/test/functional/language_controller_test.rb b/plugins/language/test/functional/language_controller_test.rb
index e17e724..10eaee1 100644
--- a/plugins/language/test/functional/language_controller_test.rb
+++ b/plugins/language/test/functional/language_controller_test.rb
@@ -14,6 +14,40 @@ class LanguageControllerTest < ActionController::TestCase
# http://railsforum.com/viewtopic.php?id=1719
@request.session[:account_id] = 1 # defined in fixtures
@data = DATA
+
+ Language.stubs(:available).returns(
+ { 'rootlang' => 'ctype',
+ 'languages' => {
+ 'en_US' => [
+ 'English (US)',
+ 'English (US)',
+ '.UTF-8',
+ '',
+ 'English (US)' ],
+ 'fr_FR' => [
+ 'Français',
+ 'Francais',
+ '.UTF-8',
+ '@euro',
+ 'French' ],
+ 'de_DE' => [
+ 'Deutsch',
+ 'Deutsch',
+ '.UTF-8',
+ '@euro',
+ 'German' ]
+ },
+ 'current' => 'en_US',
+ 'utf8' => 'true'
+ } )
+
+ @lang = Language.new
+ @lang.language = "de_DE"
+ @lang.rootlocale = "false"
+ @lang.utf8 = "false"
+
+ Language.stubs(:find).returns(@lang)
+
end
include PluginBasicTests
diff --git a/plugins/language/test/unit/language_test.rb b/plugins/language/test/unit/language_test.rb
index 0889d15..704abbe 100644
--- a/plugins/language/test/unit/language_test.rb
+++ b/plugins/language/test/unit/language_test.rb
@@ -1,103 +1,108 @@
-require 'test_helper'
-
-
+require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
class LanguageTest < ActiveSupport::TestCase
- Test_Lang = {
- "test" => ["testing","la testing",".utf","la t"],
- "a" => ["b","b","b","b"],
- "c" => ["d","d","d","d"]
- }
-
- def read_arguments
- return {
- "current"=> "true",
- "utf8"=> "true",
- "rootlang"=> "true",
- "languages" => "true"
- }
- end
-
- def read_response
- return {
- "current" => "en_US",
- "utf8" => "true",
- "rootlang" => "ctype",
- "languages" => Test_Lang
- }
- end
-
- def write_arguments
- return {
- "current" => "de_DE",
- "utf8" => "false",
- "rootlang" => "false",
- }
- end
+ LANGUAGES = {
+ 'en_US' => [
+ 'English (US)',
+ 'English (US)',
+ '.UTF-8',
+ '',
+ 'English (US)' ],
+ 'fr_FR' => [
+ 'Français',
+ 'Francais',
+ '.UTF-8',
+ '@euro',
+ 'French' ],
+ 'de_DE' => [
+ 'Deutsch',
+ 'Deutsch',
+ '.UTF-8',
+ '@euro',
+ 'German' ]
+ }
+
+ ARGS_FULL = {
+ "current"=> "true",
+ "utf8"=> "true",
+ "rootlang"=> "true",
+ "languages" => "true"
+ }
+
+ ARGS_PARTIAL = {
+ "current"=> "true",
+ "utf8"=> "true",
+ "rootlang"=> "true"
+ }
+
+ RESPONSE_FULL = {
+ "current" => "en_US",
+ "utf8" => "true",
+ "rootlang" => "ctype",
+ "languages" => LANGUAGES }
+
+ RESPONSE_PARTIAL = {
+ "current" => "en_US",
+ "utf8" => "true",
+ "rootlang" => "ctype" }
+
+ ARGS_WRITE = {
+ "current" => "de_DE",
+ "utf8" => "false",
+ "rootlang" => "false" }
def setup
- @language = Language.new
- #inject Language to set available for direct testing
- def @language.available=(val)
- @@available=val
- end
- #clean static variable
- @language.available = nil
+ YastService.stubs(:Call).with("YaPI::LANGUAGE::Read",ARGS_FULL).returns(RESPONSE_FULL)
+ YastService.stubs(:Call).with("YaPI::LANGUAGE::Read",ARGS_PARTIAL).returns(RESPONSE_PARTIAL)
+ YastService.stubs(:Call).with("YaPI::LANGUAGE::Write",ARGS_WRITE).returns(true)
end
-
def test_getter
- YastService.stubs(:Call).with("YaPI::LANGUAGE::Read",read_arguments).returns(read_response)
+ lang = Language.find
+# pp Language.available
- @language = Language.find
- assert_equal("en_US", @language.language)
- assert_equal("ctype", @language.rootlocale)
- assert_equal("true", @language.utf8)
- assert_equal(Test_Lang,Language.available)
+ assert_equal("en_US", lang.language)
+ assert_equal("ctype", lang.rootlocale)
+ assert_equal("true", lang.utf8)
+ assert_equal(LANGUAGES,Language.available)
end
def test_setter
- YastService.stubs(:Call).with("YaPI::LANGUAGE::Write",write_arguments).returns(true)
-
- @language.language = "de_DE"
- @language.rootlocale = "false"
- @language.utf8 = "false"
- @language.save
+ lang = Language.find
+ lang.language = "de_DE"
+ lang.rootlocale = "false"
+ lang.utf8 = "false"
+ lang.save
end
def test_xml
- @language.language = "de_DE"
- @language.rootlocale = "false"
- @language.utf8 = "false"
- @language.available = Test_Lang
+ lang = Language.find
+ lang.language = "de_DE"
+ lang.rootlocale = "false"
+ lang.utf8 = "false"
- response = Hash.from_xml(@language.to_xml)
+ response = Hash.from_xml(lang.to_xml)
response = response["language"]
assert_equal("de_DE", response["current"])
assert_equal("false", response["utf8"])
assert_equal("false", response["rootlocale"])
- lang_reponse = [
- {"id" => "test", "name" => "testing" },
- {"id" => "a", "name" => "b" },
- {"id" => "c", "name" => "d" }
- ]
+ lang_reponse = [ {"name"=>"Deutsch", "id"=>"de_DE"},
+ {"name"=>"English (US)", "id"=>"en_US"},
+ {"name"=>"Français", "id"=>"fr_FR"} ]
+
assert_equal(lang_reponse.sort { |a,b| a["id"] <=> b["id"] },
response["available"].sort { |a,b| a["id"] <=> b["id"] })
end
def test_json
- def @language.available=(val)
- @@available=val
- end
-
- @language.language = "de_DE"
- @language.rootlocale = "false"
- @language.utf8 = "false"
- @language.available = Test_Lang
-
- assert_not_nil(@language.to_json)
+ lang = Language.find
+ lang.language = "de_DE"
+ lang.rootlocale = "false"
+ lang.utf8 = "false"
+
+ assert_not_nil(lang.to_json)
end
end
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org