aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPatrick J Cherry <patrick@bytemark.co.uk>2012-04-30 12:49:24 +0100
committerPatrick J Cherry <patrick@bytemark.co.uk>2012-04-30 12:49:24 +0100
commit372547b31b51d871f104ae5679e98420a99a12c1 (patch)
treef1f332dce11018adce79898e4614360f894e9162 /test
parente141a801070932e2925177bdf9f61c598d1c8dfd (diff)
Non-UTF8 stuff is now stripped. Added encoding tests.
Diffstat (limited to 'test')
-rw-r--r--test/tc_mauve_database_peculiarities.rb85
1 files changed, 85 insertions, 0 deletions
diff --git a/test/tc_mauve_database_peculiarities.rb b/test/tc_mauve_database_peculiarities.rb
new file mode 100644
index 0000000..9eb612e
--- /dev/null
+++ b/test/tc_mauve_database_peculiarities.rb
@@ -0,0 +1,85 @@
+$:.unshift "../lib"
+
+require 'th_mauve'
+require 'mauve/datamapper'
+require 'mauve/server'
+require 'mauve/configuration'
+require 'mauve/configuration_builder'
+require 'mauve/configuration_builders'
+require 'iconv'
+
+class TcMauveDatabasePeculiarities < Mauve::UnitTest
+ include Mauve
+
+ def setup
+ super
+ setup_database
+ @temp_db = "mauve_test.#{10.times.collect{ rand(36).to_s(36) }.join}"
+ end
+
+ def teardown
+ teardown_database
+ super
+ end
+
+ def test_encoding
+ #
+ # Don't test unless the DB URL has been set.
+ #
+ return unless @db_url
+
+ config=<<EOF
+server {
+ database "#{@db_url}"
+}
+EOF
+
+ Configuration.current = ConfigurationBuilder.parse(config)
+ Server.instance.setup
+
+ x = Hash.new
+ x["en"] = "Please rush me my portable walrus polishing kit!"
+ x["fi"] = "Ole hyvä kiirehtiä minulle kannettavan mursu kiillotukseen pakki!"
+ x["jp"] = "私に私のポータブルセイウチの研磨キットを急いでください!"
+
+ %w(UTF-8 WINDOWS-1252 SHIFT-JIS).each do |enc|
+ x.each do |lang, str|
+ assert_nothing_raised("Failed to use iconv to convert to #{enc}") { str = Iconv.conv(enc+"//IGNORE", "utf8", str) }
+
+ alert = Alert.new(
+ :alert_id => "#{lang}:#{enc}",
+ :source => "test",
+ :subject => str
+ )
+
+ assert_nothing_raised("failed to insert #{enc}") { alert.save }
+ end
+ end
+ end
+end
+
+
+
+class TcMauveDatabasePostgresPeculiarities < TcMauveDatabasePeculiarities
+ def setup
+ super
+ system("createdb #{@temp_db} --encoding UTF8") || flunk("Failed to create #{@temp_db}")
+ # @pg_conn = PGconn.open(:dbname => @temp_db)
+ @db_url = "postgres:///#{@temp_db}"
+ end
+
+ def teardown
+ # @pg_conn.finish if @pg_conn.is_a?(PGconn) and @pg_conn.status == PGconn::CONNECTION_OK
+ super
+ (system("dropdb #{@temp_db}") || puts("Failed to drop #{@temp_db}")) if @temp_db
+ end
+end
+
+class TcMauveDatabaseSqlite3Peculiarities < TcMauveDatabasePeculiarities
+ def setup
+ super
+ # @pg_conn = PGconn.open(:dbname => @temp_db)
+ @db_url = "sqlite3::memory:"
+ end
+end
+