Namespace
Methods
- S
- T
-
- test_bad_timeout,
- test_bind_value_substitute,
- test_column_types,
- test_columns,
- test_columns_with_default,
- test_columns_with_not_null,
- test_compound_index,
- test_connect,
- test_connection_no_adapter,
- test_connection_no_db,
- test_connection_wrong_adapter,
- test_encoding,
- test_exec_insert,
- test_exec_no_binds,
- test_exec_query_typecasts_bind_vals,
- test_exec_query_with_binds,
- test_execute,
- test_index,
- test_indexes_logs,
- test_insert_id_value_returned,
- test_insert_sql,
- test_insert_sql_logged,
- test_nil_timeout,
- test_no_indexes,
- test_no_primary_key,
- test_non_unique_index,
- test_primary_key,
- test_primary_key_returns_nil_for_no_pk,
- test_quote_binary_column_escapes_it,
- test_quote_string,
- test_select_rows,
- test_select_rows_logged,
- test_tables,
- test_tables_logs_name,
- test_transaction,
- test_type_cast_should_not_mutate_encoding
Instance Public methods
setup()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 12 def setup @conn = Base.sqlite3_connection :database => ':memory:', :adapter => 'sqlite3', :timeout => 100 @conn.execute <<-eosql CREATE TABLE items ( id integer PRIMARY KEY AUTOINCREMENT, number integer ) eosql end
test_bad_timeout()
Link
test_bind_value_substitute()
Link
test_column_types()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 24 def test_column_types return skip('only test encoding on 1.9') unless "<3".encoding_aware? owner = Owner.create!(:name => "hello".encode('ascii-8bit')) owner.reload select = Owner.columns.map { |c| "typeof(#{c.name})" }.join ', ' result = Owner.connection.exec_query <<-esql SELECT #{select} FROM #{Owner.table_name} WHERE #{Owner.primary_key} = #{owner.id} esql assert(!result.rows.first.include?("blob"), "should not store blobs") end
test_columns()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 262 def test_columns columns = @conn.columns('items').sort_by { |x| x.name } assert_equal 2, columns.length assert_equal %w{ id number }.sort, columns.map { |x| x.name } assert_equal [nil, nil], columns.map { |x| x.default } assert_equal [true, true], columns.map { |x| x.null } end
test_columns_with_default()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 270 def test_columns_with_default @conn.execute <<-eosql CREATE TABLE columns_with_default ( id integer PRIMARY KEY AUTOINCREMENT, number integer default 10 ) eosql column = @conn.columns('columns_with_default').find { |x| x.name == 'number' } assert_equal 10, column.default end
test_columns_with_not_null()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 283 def test_columns_with_not_null @conn.execute <<-eosql CREATE TABLE columns_with_default ( id integer PRIMARY KEY AUTOINCREMENT, number integer not null ) eosql column = @conn.columns('columns_with_default').find { |x| x.name == 'number' } assert !column.null, "column should not be null" end
test_compound_index()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 323 def test_compound_index @conn.add_index 'items', %w{ id number }, :name => 'fun' index = @conn.indexes('items').find { |idx| idx.name == 'fun' } assert_equal %w{ id number }.sort, index.columns.sort end
test_connect()
Link
test_connection_no_adapter()
Link
test_connection_no_db()
Link
test_connection_wrong_adapter()
Link
test_encoding()
Link
sqlite3 defaults to UTF-8 encoding
test_exec_insert()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 39 def test_exec_insert column = @conn.columns('items').find { |col| col.name == 'number' } vals = [[column, 10]] @conn.exec_insert('insert into items (number) VALUES (?)', 'SQL', vals) result = @conn.exec_query( 'select number from items where number = ?', 'SQL', vals) assert_equal 1, result.rows.length assert_equal 10, result.rows.first.first end
test_exec_no_binds()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 104 def test_exec_no_binds @conn.exec_query('create table ex(id int, data string)') result = @conn.exec_query('SELECT id, data FROM ex') assert_equal 0, result.rows.length assert_equal 2, result.columns.length assert_equal %w{ id data }, result.columns @conn.exec_query('INSERT INTO ex (id, data) VALUES (1, "foo")') result = @conn.exec_query('SELECT id, data FROM ex') assert_equal 1, result.rows.length assert_equal 2, result.columns.length assert_equal [[1, 'foo']], result.rows end
test_exec_query_typecasts_bind_vals()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 131 def test_exec_query_typecasts_bind_vals @conn.exec_query('create table ex(id int, data string)') @conn.exec_query('INSERT INTO ex (id, data) VALUES (1, "foo")') column = @conn.columns('ex').find { |col| col.name == 'id' } result = @conn.exec_query( 'SELECT id, data FROM ex WHERE id = ?', nil, [[column, '1-fuu']]) assert_equal 1, result.rows.length assert_equal 2, result.columns.length assert_equal [[1, 'foo']], result.rows end
test_exec_query_with_binds()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 119 def test_exec_query_with_binds @conn.exec_query('create table ex(id int, data string)') @conn.exec_query('INSERT INTO ex (id, data) VALUES (1, "foo")') result = @conn.exec_query( 'SELECT id, data FROM ex WHERE id = ?', nil, [[nil, 1]]) assert_equal 1, result.rows.length assert_equal 2, result.columns.length assert_equal [[1, 'foo']], result.rows end
test_execute()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 174 def test_execute @conn.execute "INSERT INTO items (number) VALUES (10)" records = @conn.execute "SELECT * FROM items" assert_equal 1, records.length record = records.first assert_equal 10, record['number'] assert_equal 1, record['id'] end
test_index()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 308 def test_index @conn.add_index 'items', 'id', :unique => true, :name => 'fun' index = @conn.indexes('items').find { |idx| idx.name == 'fun' } assert_equal 'items', index.table assert index.unique, 'index is unique' assert_equal ['id'], index.columns end
test_indexes_logs()
Link
test_insert_id_value_returned()
Link
test_insert_sql()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 188 def test_insert_sql 2.times do |i| rv = @conn.insert_sql "INSERT INTO items (number) VALUES (#{i})" assert_equal(i + 1, rv) end records = @conn.execute "SELECT * FROM items" assert_equal 2, records.length end
test_insert_sql_logged()
Link
test_nil_timeout()
Link
connection is OK with a nil timeout
test_no_indexes()
Link
test_no_primary_key()
Link
test_non_unique_index()
Link
test_primary_key()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 329 def test_primary_key assert_equal 'id', @conn.primary_key('items') @conn.execute <<-eosql CREATE TABLE foos ( internet integer PRIMARY KEY AUTOINCREMENT, number integer not null ) eosql assert_equal 'internet', @conn.primary_key('foos') end
test_primary_key_returns_nil_for_no_pk()
Link
test_quote_binary_column_escapes_it()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 145 def test_quote_binary_column_escapes_it return unless "<3".respond_to?(:encode) DualEncoding.connection.execute(" CREATE TABLE dual_encodings ( id integer PRIMARY KEY AUTOINCREMENT, name string, data binary ) ") str = "\x80".force_encoding("ASCII-8BIT") binary = DualEncoding.new :name => 'いただきます!', :data => str binary.save! assert_equal str, binary.data ensure if "<3".respond_to?(:encode) DualEncoding.connection.drop_table('dual_encodings') end end
test_quote_string()
Link
test_select_rows()
Link
test_select_rows_logged()
Link
test_tables()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 242 def test_tables assert_equal %w{ items }, @conn.tables @conn.execute <<-eosql CREATE TABLE people ( id integer PRIMARY KEY AUTOINCREMENT, number integer ) eosql assert_equal %w{ items people }.sort, @conn.tables.sort end
test_tables_logs_name()
Link
test_transaction()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 231 def test_transaction count_sql = 'select count(*) from items' @conn.begin_db_transaction @conn.create "INSERT INTO items (number) VALUES (10)" assert_equal 1, @conn.select_rows(count_sql).first.first @conn.rollback_db_transaction assert_equal 0, @conn.select_rows(count_sql).first.first end
test_type_cast_should_not_mutate_encoding()
Link
# File activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb, line 165 def test_type_cast_should_not_mutate_encoding return skip('only test encoding on 1.9') unless "<3".encoding_aware? name = 'hello'.force_encoding(Encoding::ASCII_8BIT) Owner.create(:name => name) assert_equal Encoding::ASCII_8BIT, name.encoding end