aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-06-26 13:34:50 -0700
committerJosé Valim <jose.valim@gmail.com>2010-06-26 22:37:45 +0200
commit100d2282e306f68d8ce0324128da1506eafc43a2 (patch)
tree9685879e9c4e7100a5fb14d61b374db1dd3f3716
parent5b91c97763f1183f131e46e51ed33129c6b1edcc (diff)
downloadrails-100d2282e306f68d8ce0324128da1506eafc43a2.tar.gz
rails-100d2282e306f68d8ce0324128da1506eafc43a2.tar.bz2
rails-100d2282e306f68d8ce0324128da1506eafc43a2.zip
adding adapter tests, avoiding private apis, fixing code in 1.9 [#4986 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
-rw-r--r--activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb10
-rw-r--r--activerecord/test/cases/adapters/sqlite/sqlite3_adapter_test.rb56
2 files changed, 63 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
index f295af16f0..0d9a86a1ea 100644
--- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
@@ -6,6 +6,10 @@ module ActiveRecord
def self.sqlite3_connection(config) # :nodoc:
parse_sqlite_config!(config)
+ unless 'sqlite3' == config[:adapter]
+ raise ArgumentError, 'adapter name should be "sqlite3"'
+ end
+
unless self.class.const_defined?(:SQLite3)
require_library_or_gem(config[:adapter])
end
@@ -24,13 +28,13 @@ module ActiveRecord
module ConnectionAdapters #:nodoc:
class SQLite3Adapter < SQLiteAdapter # :nodoc:
-
+
# Returns the current database encoding format as a string, eg: 'UTF-8'
def encoding
if @connection.respond_to?(:encoding)
- @connection.encoding[0]['encoding']
+ @connection.encoding.to_s
else
- encoding = @connection.send(:get_query_pragma, 'encoding')
+ encoding = @connection.execute('PRAGMA encoding')
encoding[0]['encoding']
end
end
diff --git a/activerecord/test/cases/adapters/sqlite/sqlite3_adapter_test.rb b/activerecord/test/cases/adapters/sqlite/sqlite3_adapter_test.rb
new file mode 100644
index 0000000000..934cf72f72
--- /dev/null
+++ b/activerecord/test/cases/adapters/sqlite/sqlite3_adapter_test.rb
@@ -0,0 +1,56 @@
+require "cases/helper"
+
+module ActiveRecord
+ module ConnectionAdapters
+ class SQLite3AdapterTest < ActiveRecord::TestCase
+ def test_connection_no_db
+ assert_raises(ArgumentError) do
+ Base.sqlite3_connection {}
+ end
+ end
+
+ def test_connection_no_adapter
+ assert_raises(ArgumentError) do
+ Base.sqlite3_connection :database => ':memory:'
+ end
+ end
+
+ def test_connection_wrong_adapter
+ assert_raises(ArgumentError) do
+ Base.sqlite3_connection :database => ':memory:',:adapter => 'vuvuzela'
+ end
+ end
+
+ def test_bad_timeout
+ assert_raises(TypeError) do
+ Base.sqlite3_connection :database => ':memory:',
+ :adapter => 'sqlite3',
+ :timeout => 'usa'
+ end
+ end
+
+ # connection is OK with a nil timeout
+ def test_nil_timeout
+ conn = Base.sqlite3_connection :database => ':memory:',
+ :adapter => 'sqlite3',
+ :timeout => nil
+ assert conn, 'made a connection'
+ end
+
+ def test_connect
+ conn = Base.sqlite3_connection :database => ':memory:',
+ :adapter => 'sqlite3',
+ :timeout => 100
+ assert conn, 'should have connection'
+ end
+
+ # sqlite3 defaults to UTF-8 encoding
+ def test_encoding
+ conn = Base.sqlite3_connection :database => ':memory:',
+ :adapter => 'sqlite3',
+ :timeout => 100
+ assert_equal 'UTF-8', conn.encoding
+ end
+ end
+ end
+end