From d8be115e9293f498557aac8becc501b64c8ad9d7 Mon Sep 17 00:00:00 2001 From: stanislaw Date: Thu, 2 Aug 2012 23:35:23 +0300 Subject: [PATCH] Improvements for spec/support/active_record - All adapters rely on db/config.yml configuration - All adapters load the same schema --- db/config.yml | 26 ++++++++++++++ spec/support/active_record/database_setup.rb | 4 +++ spec/support/active_record/mysql2_setup.rb | 30 +++------------- spec/support/active_record/mysql_setup.rb | 30 +++------------- .../support/active_record/postgresql_setup.rb | 34 +++---------------- spec/support/active_record/schema_setup.rb | 10 ++++++ 6 files changed, 55 insertions(+), 79 deletions(-) create mode 100644 db/config.yml create mode 100644 spec/support/active_record/database_setup.rb create mode 100644 spec/support/active_record/schema_setup.rb diff --git a/db/config.yml b/db/config.yml new file mode 100644 index 0000000..5c18b6e --- /dev/null +++ b/db/config.yml @@ -0,0 +1,26 @@ +mysql: + adapter: mysql + database: database_cleaner_test + username: root + password: + host: 127.0.0.1 + port: 3306 + encoding: utf8 + +mysql2: + adapter: mysql + database: database_cleaner_test + username: root + password: + host: 127.0.0.1 + port: 3306 + encoding: utf8 + +postgres: + adapter: postgresql + database: database_cleaner_test + username: postgres + password: + host: 127.0.0.1 + encoding: unicode + template: template0 diff --git a/spec/support/active_record/database_setup.rb b/spec/support/active_record/database_setup.rb new file mode 100644 index 0000000..0e358b0 --- /dev/null +++ b/spec/support/active_record/database_setup.rb @@ -0,0 +1,4 @@ +def db_config + config_path = 'db/config.yml' + @db_config ||= YAML.load(IO.read(config_path)) +end diff --git a/spec/support/active_record/mysql2_setup.rb b/spec/support/active_record/mysql2_setup.rb index b94d7f4..3319905 100644 --- a/spec/support/active_record/mysql2_setup.rb +++ b/spec/support/active_record/mysql2_setup.rb @@ -1,39 +1,19 @@ +require 'support/active_record/database_setup' +require 'support/active_record/schema_setup' + module MySQL2Helper puts "Active Record #{ActiveRecord::VERSION::STRING}, mysql2" # ActiveRecord::Base.logger = Logger.new(STDERR) - @@mysql2_db_spec = { - :adapter => 'mysql2', - :host => 'localhost', - :username => 'root', - :password => '', - :encoding => 'utf8' - } - - @@db = {:database => 'database_cleaner_test'} - def active_record_mysql2_setup - ActiveRecord::Base.establish_connection(@@mysql2_db_spec) - - ActiveRecord::Base.connection.drop_database @@db[:database] rescue nil - ActiveRecord::Base.connection.create_database @@db[:database] - - ActiveRecord::Base.establish_connection(@@mysql2_db_spec.merge(@@db)) - - ActiveRecord::Schema.define do - create_table :users, :force => true do |t| - t.integer :name - end - end + ActiveRecord::Base.establish_connection db_config['mysql2'] + load_schema end def active_record_mysql2_connection ActiveRecord::Base.connection end - - class ::User < ActiveRecord::Base - end end RSpec.configure do |c| diff --git a/spec/support/active_record/mysql_setup.rb b/spec/support/active_record/mysql_setup.rb index 8f43762..94d807e 100644 --- a/spec/support/active_record/mysql_setup.rb +++ b/spec/support/active_record/mysql_setup.rb @@ -1,39 +1,19 @@ +require 'support/active_record/database_setup' +require 'support/active_record/schema_setup' + module MySQLHelper puts "Active Record #{ActiveRecord::VERSION::STRING}, mysql" # ActiveRecord::Base.logger = Logger.new(STDERR) - @@mysql_db_spec = { - :adapter => 'mysql', - :host => 'localhost', - :username => 'root', - :password => '', - :encoding => 'utf8' - } - - @@db = {:database => 'database_cleaner_test'} - def active_record_mysql_setup - ActiveRecord::Base.establish_connection(@@mysql_db_spec) - - ActiveRecord::Base.connection.drop_database @@db[:database] rescue nil - ActiveRecord::Base.connection.create_database @@db[:database] - - ActiveRecord::Base.establish_connection(@@mysql_db_spec.merge(@@db)) - - ActiveRecord::Schema.define do - create_table :users, :force => true do |t| - t.integer :name - end - end + ActiveRecord::Base.establish_connection db_config['mysql'] + load_schema end def active_record_mysql_connection ActiveRecord::Base.connection end - - class ::User < ActiveRecord::Base - end end RSpec.configure do |c| diff --git a/spec/support/active_record/postgresql_setup.rb b/spec/support/active_record/postgresql_setup.rb index 3fc9f24..a661741 100644 --- a/spec/support/active_record/postgresql_setup.rb +++ b/spec/support/active_record/postgresql_setup.rb @@ -1,43 +1,19 @@ +require 'support/active_record/database_setup' +require 'support/active_record/schema_setup' + module PostgreSQLHelper puts "Active Record #{ActiveRecord::VERSION::STRING}, pg" # ActiveRecord::Base.logger = Logger.new(STDERR) - # createdb database_cleaner_test -E UTF8 -T template0 - - @@pg_db_spec = { - :adapter => 'postgresql', - :database => 'postgres', - :host => '127.0.0.1', - :username => 'postgres', - :password => '', - :encoding => 'unicode', - :template => 'template0' - } - - @@db = {:database => 'database_cleaner_test'} - - # ActiveRecord::Base.establish_connection(@@pg_db_spec) - - # ActiveRecord::Base.connection.drop_database db[:database] rescue nil - # ActiveRecord::Base.connection.create_database db[:database] - def active_record_pg_setup - ActiveRecord::Base.establish_connection(@@pg_db_spec.merge(@@db)) - - ActiveRecord::Schema.define do - create_table :users, :force => true do |t| - t.integer :name - end - end + ActiveRecord::Base.establish_connection db_config['postgres'] + load_schema end def active_record_pg_connection ActiveRecord::Base.connection end - - class ::User < ActiveRecord::Base - end end RSpec.configure do |c| diff --git a/spec/support/active_record/schema_setup.rb b/spec/support/active_record/schema_setup.rb new file mode 100644 index 0000000..ff02304 --- /dev/null +++ b/spec/support/active_record/schema_setup.rb @@ -0,0 +1,10 @@ +def load_schema + ActiveRecord::Schema.define do + create_table :users, :force => true do |t| + t.integer :name + end + end +end + +class ::User < ActiveRecord::Base +end