aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2006-03-18 16:50:25 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2006-03-18 16:50:25 +0000
commit416385a09d61758ba8e2b2ff30dd64c8b9540883 (patch)
treebfde9d62eb6d748100714f1bb1820f6f827c5506 /activerecord/test
parent240213177eba35921f9ee621e8865311b94f6d21 (diff)
downloadrails-416385a09d61758ba8e2b2ff30dd64c8b9540883.tar.gz
rails-416385a09d61758ba8e2b2ff30dd64c8b9540883.tar.bz2
rails-416385a09d61758ba8e2b2ff30dd64c8b9540883.zip
Added OpenBase database adapter that builds on top of the http://www.spice-of-life.net/ruby-openbase/ driver. All functionality except LIMIT/OFFSET is supported (closes #3528) [derrickspell@cdmplus.com]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3932 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/aaa_create_tables_test.rb22
-rw-r--r--activerecord/test/adapter_test.rb5
-rw-r--r--activerecord/test/connections/native_openbase/connection.rb22
-rw-r--r--activerecord/test/fixtures/db_definitions/openbase.drop.sql2
-rw-r--r--activerecord/test/fixtures/db_definitions/openbase.sql282
-rw-r--r--activerecord/test/fixtures/db_definitions/openbase2.drop.sql2
-rw-r--r--activerecord/test/fixtures/db_definitions/openbase2.sql7
7 files changed, 336 insertions, 6 deletions
diff --git a/activerecord/test/aaa_create_tables_test.rb b/activerecord/test/aaa_create_tables_test.rb
index fe83045c8f..8ff6c64e55 100644
--- a/activerecord/test/aaa_create_tables_test.rb
+++ b/activerecord/test/aaa_create_tables_test.rb
@@ -32,11 +32,23 @@ class AAACreateTablesTest < Test::Unit::TestCase
end
def execute_sql_file(path, connection)
- File.read(path).split(';').each_with_index do |sql, i|
- begin
- connection.execute("\n\n-- statement ##{i}\n#{sql}\n") unless sql.blank?
- rescue ActiveRecord::StatementInvalid
- #$stderr.puts "warning: #{$!}"
+ # OpenBase has a different format for sql files
+ if current_adapter?(:OpenBaseAdapter) then
+ File.read(path).split("go").each_with_index do |sql, i|
+ begin
+ # OpenBase does not support comments embedded in sql
+ connection.execute(sql,"SQL statement ##{i}") unless sql.blank?
+ rescue ActiveRecord::StatementInvalid
+ #$stderr.puts "warning: #{$!}"
+ end
+ end
+ else
+ File.read(path).split(';').each_with_index do |sql, i|
+ begin
+ connection.execute("\n\n-- statement ##{i}\n#{sql}\n") unless sql.blank?
+ rescue ActiveRecord::StatementInvalid
+ #$stderr.puts "warning: #{$!}"
+ end
end
end
end
diff --git a/activerecord/test/adapter_test.rb b/activerecord/test/adapter_test.rb
index af94904eee..93e1ca973b 100644
--- a/activerecord/test/adapter_test.rb
+++ b/activerecord/test/adapter_test.rb
@@ -27,7 +27,9 @@ class AdapterTest < Test::Unit::TestCase
@connection.add_index :accounts, :firm_id, :name => idx_name
indexes = @connection.indexes("accounts")
assert_equal "accounts", indexes.first.table
- assert_equal idx_name, indexes.first.name
+ # OpenBase does not have the concept of a named index
+ # Indexes are merely properties of columns.
+ assert_equal idx_name, indexes.first.name unless current_adapter?(:OpenBaseAdapter)
assert !indexes.first.unique
assert_equal ["firm_id"], indexes.first.columns
else
@@ -80,4 +82,5 @@ class AdapterTest < Test::Unit::TestCase
assert_nothing_raised { sub.save! }
end
end
+
end
diff --git a/activerecord/test/connections/native_openbase/connection.rb b/activerecord/test/connections/native_openbase/connection.rb
new file mode 100644
index 0000000000..01a2ffe646
--- /dev/null
+++ b/activerecord/test/connections/native_openbase/connection.rb
@@ -0,0 +1,22 @@
+print "Using native OpenBase\n"
+require_dependency 'fixtures/course'
+require 'logger'
+
+ActiveRecord::Base.logger = Logger.new("debug.log")
+
+db1 = 'activerecord_unittest'
+db2 = 'activerecord_unittest2'
+
+ActiveRecord::Base.establish_connection(
+ :adapter => "openbase",
+ :username => "admin",
+ :password => "",
+ :database => db1
+)
+
+Course.establish_connection(
+ :adapter => "openbase",
+ :username => "admin",
+ :password => "",
+ :database => db2
+)
diff --git a/activerecord/test/fixtures/db_definitions/openbase.drop.sql b/activerecord/test/fixtures/db_definitions/openbase.drop.sql
new file mode 100644
index 0000000000..fb40e3f213
--- /dev/null
+++ b/activerecord/test/fixtures/db_definitions/openbase.drop.sql
@@ -0,0 +1,2 @@
+DROP ALL
+go \ No newline at end of file
diff --git a/activerecord/test/fixtures/db_definitions/openbase.sql b/activerecord/test/fixtures/db_definitions/openbase.sql
new file mode 100644
index 0000000000..9ca1a7d06e
--- /dev/null
+++ b/activerecord/test/fixtures/db_definitions/openbase.sql
@@ -0,0 +1,282 @@
+CREATE TABLE accounts (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ firm_id integer,
+ credit_limit integer
+)
+go
+CREATE PRIMARY KEY accounts (id)
+go
+
+CREATE TABLE funny_jokes (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ name char(50) DEFAULT NULL
+)
+go
+CREATE PRIMARY KEY funny_jokes (id)
+go
+
+CREATE TABLE companies (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ type char(50),
+ ruby_type char(50),
+ firm_id integer,
+ name char(50),
+ client_of integer,
+ rating integer default 1
+)
+go
+CREATE PRIMARY KEY companies (id)
+go
+
+CREATE TABLE developers_projects (
+ developer_id integer NOT NULL,
+ project_id integer NOT NULL,
+ joined_on date,
+ access_level integer default 1
+)
+go
+
+CREATE TABLE developers (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ name char(100),
+ salary integer DEFAULT 70000,
+ created_at datetime,
+ updated_at datetime
+)
+go
+CREATE PRIMARY KEY developers (id)
+go
+
+CREATE TABLE projects (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ name char(100),
+ type char(255)
+)
+go
+CREATE PRIMARY KEY projects (id)
+go
+
+CREATE TABLE topics (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ title char(255),
+ author_name char(255),
+ author_email_address char(255),
+ written_on datetime,
+ bonus_time time,
+ last_read date,
+ content char(4096),
+ approved boolean default true,
+ replies_count integer default 0,
+ parent_id integer,
+ type char(50)
+)
+go
+CREATE PRIMARY KEY topics (id)
+go
+
+CREATE TABLE customers (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ name char,
+ balance integer default 0,
+ address_street char,
+ address_city char,
+ address_country char,
+ gps_location char
+)
+go
+CREATE PRIMARY KEY customers (id)
+go
+
+CREATE TABLE orders (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ name char,
+ billing_customer_id integer,
+ shipping_customer_id integer
+)
+go
+CREATE PRIMARY KEY orders (id)
+go
+
+CREATE TABLE movies (
+ movieid integer UNIQUE INDEX DEFAULT _rowid,
+ name text
+)
+go
+CREATE PRIMARY KEY movies (movieid)
+go
+
+CREATE TABLE subscribers (
+ nick CHAR(100) NOT NULL DEFAULT _rowid,
+ name CHAR(100)
+)
+go
+CREATE PRIMARY KEY subscribers (nick)
+go
+
+CREATE TABLE booleantests (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ value boolean
+)
+go
+CREATE PRIMARY KEY booleantests (id)
+go
+
+CREATE TABLE defaults (
+ id integer UNIQUE INDEX ,
+ modified_date date default CURDATE(),
+ modified_date_function date default NOW(),
+ fixed_date date default '2004-01-01',
+ modified_time timestamp default NOW(),
+ modified_time_function timestamp default NOW(),
+ fixed_time timestamp default '2004-01-01 00:00:00.000000-00',
+ char1 char(1) default 'Y',
+ char2 char(50) default 'a char field',
+ char3 text default 'a text field'
+)
+go
+
+CREATE TABLE auto_id_tests (
+ auto_id integer UNIQUE INDEX DEFAULT _rowid,
+ value integer
+)
+go
+CREATE PRIMARY KEY auto_id_tests (auto_id)
+go
+
+CREATE TABLE entrants (
+ id integer UNIQUE INDEX ,
+ name text,
+ course_id integer
+)
+go
+
+CREATE TABLE colnametests (
+ id integer UNIQUE INDEX ,
+ references integer NOT NULL
+)
+go
+
+CREATE TABLE mixins (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ parent_id integer,
+ type char,
+ pos integer,
+ lft integer,
+ rgt integer,
+ root_id integer,
+ created_at timestamp,
+ updated_at timestamp
+)
+go
+CREATE PRIMARY KEY mixins (id)
+go
+
+CREATE TABLE people (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ first_name text,
+ lock_version integer default 0
+)
+go
+CREATE PRIMARY KEY people (id)
+go
+
+CREATE TABLE readers (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ post_id integer NOT NULL,
+ person_id integer NOT NULL
+)
+go
+CREATE PRIMARY KEY readers (id)
+go
+
+CREATE TABLE binaries (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ data object
+)
+go
+CREATE PRIMARY KEY binaries (id)
+go
+
+CREATE TABLE computers (
+ id integer UNIQUE INDEX ,
+ developer integer NOT NULL,
+ extendedWarranty integer NOT NULL
+)
+go
+
+CREATE TABLE posts (
+ id integer UNIQUE INDEX ,
+ author_id integer,
+ title char(255),
+ type char(255),
+ body text
+)
+go
+
+CREATE TABLE comments (
+ id integer UNIQUE INDEX ,
+ post_id integer,
+ type char(255),
+ body text
+)
+go
+
+CREATE TABLE authors (
+ id integer UNIQUE INDEX ,
+ name char(255) default NULL
+)
+go
+
+CREATE TABLE tasks (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ starting datetime,
+ ending datetime
+)
+go
+CREATE PRIMARY KEY tasks (id)
+go
+
+CREATE TABLE categories (
+ id integer UNIQUE INDEX ,
+ name char(255),
+ type char(255)
+)
+go
+
+CREATE TABLE categories_posts (
+ category_id integer NOT NULL,
+ post_id integer NOT NULL
+)
+go
+
+CREATE TABLE fk_test_has_pk (
+ id INTEGER NOT NULL DEFAULT _rowid
+)
+go
+CREATE PRIMARY KEY fk_test_has_pk (id)
+go
+
+CREATE TABLE fk_test_has_fk (
+ id INTEGER NOT NULL DEFAULT _rowid,
+ fk_id INTEGER NOT NULL REFERENCES fk_test_has_pk.id
+)
+go
+CREATE PRIMARY KEY fk_test_has_fk (id)
+go
+
+CREATE TABLE keyboards (
+ key_number integer UNIQUE INDEX DEFAULT _rowid,
+ name char(50)
+)
+go
+CREATE PRIMARY KEY keyboards (key_number)
+go
+
+CREATE TABLE legacy_things (
+ id INTEGER NOT NULL DEFAULT _rowid,
+ tps_report_number INTEGER default NULL,
+ version integer NOT NULL default 0
+)
+go
+CREATE PRIMARY KEY legacy_things (id)
+go \ No newline at end of file
diff --git a/activerecord/test/fixtures/db_definitions/openbase2.drop.sql b/activerecord/test/fixtures/db_definitions/openbase2.drop.sql
new file mode 100644
index 0000000000..ea1571da0b
--- /dev/null
+++ b/activerecord/test/fixtures/db_definitions/openbase2.drop.sql
@@ -0,0 +1,2 @@
+DROP TABLE courses
+go
diff --git a/activerecord/test/fixtures/db_definitions/openbase2.sql b/activerecord/test/fixtures/db_definitions/openbase2.sql
new file mode 100644
index 0000000000..a37c4f4c31
--- /dev/null
+++ b/activerecord/test/fixtures/db_definitions/openbase2.sql
@@ -0,0 +1,7 @@
+CREATE TABLE courses (
+ id integer UNIQUE INDEX DEFAULT _rowid,
+ name text
+)
+go
+CREATE PRIMARY KEY courses (id)
+go \ No newline at end of file