diff --git a/README.md b/README.md index b1ff780..398c4af 100644 --- a/README.md +++ b/README.md @@ -221,7 +221,7 @@ This `remove_polymorphic_constraints` will delete all the existing `:imageable` ```ruby rake -rake test:unit:all +rake test:unit rake test:integration:all rake test:integration:sqlite rake test:integration:postgresql diff --git a/Rakefile b/Rakefile index b855d71..8eff495 100644 --- a/Rakefile +++ b/Rakefile @@ -9,68 +9,34 @@ require 'fileutils' # require 'rdoc/task' namespace :test do - namespace :unit do - task :prepare_database do - FileUtils.copy 'spec/dummy/config/database.sqlite.yml', 'spec/dummy/config/database.yml' - end - - task :sqlite => :prepare_database do - RSpec::Core::RakeTask.new(:sqlite_adapter) do |t| - t.pattern = 'spec/lib/polymorphic_constraints/connection_adapters/sqlite3_adapter_spec.rb' - end - Rake::Task['sqlite_adapter'].execute - end - - task :postgresql => :prepare_database do - RSpec::Core::RakeTask.new(:postgresql_adapter) do |t| - t.pattern = 'spec/lib/polymorphic_constraints/connection_adapters/postgresql_adapter_spec.rb' - end - Rake::Task['postgresql_adapter'].execute - end - - task :mysql => :prepare_database do - RSpec::Core::RakeTask.new(:mysql_adapter) do |t| - t.pattern = 'spec/lib/polymorphic_constraints/connection_adapters/mysql2_adapter_spec.rb' - end - Rake::Task['mysql_adapter'].execute - end - - task :error_handler => :prepare_database do - RSpec::Core::RakeTask.new(:error_handler) do |t| - t.pattern = 'spec/lib/polymorphic_constraints/utils/polymorphic_error_handler_spec.rb' - end - Rake::Task['error_handler'].execute - end + task :prepare_database do + FileUtils.copy 'spec/dummy/config/database.sqlite.yml', 'spec/dummy/config/database.yml' + end - task :all => [:sqlite, :postgresql, :mysql, :error_handler] + RSpec::Core::RakeTask.new(:unit_specs) do |t| + t.pattern = ['spec/lib/**/*_spec.rb'] end + task :unit => [:prepare_database, :unit_specs] + namespace :integration do rule '.yml' do |file| FileUtils.copy ('spec/dummy/config/' + file.name), 'spec/dummy/config/database.yml' end task :sqlite => 'database.sqlite.yml' do - ENV['db_adapter'] = 'sqlite' - RSpec::Core::RakeTask.new(:sqlite_integration) do |t| t.pattern = 'spec/integration/active_record_integration_spec.rb' end Rake::Task['sqlite_integration'].execute end - task :postgresql => 'database.postgresql.yml' do - ENV['db_adapter'] = 'postgresql' - RSpec::Core::RakeTask.new(:postgresql_integration) do |t| t.pattern = 'spec/integration/active_record_integration_spec.rb' end Rake::Task['postgresql_integration'].execute end - task :mysql => 'database.mysql.yml' do - ENV['db_adapter'] = 'mysql' - RSpec::Core::RakeTask.new(:mysql_integration) do |t| t.pattern = 'spec/integration/active_record_integration_spec.rb' end @@ -81,7 +47,7 @@ namespace :test do end end -task :default => ['test:unit:all', 'test:integration:all'] +task :default => ['test:unit', 'test:integration:all'] # RDoc::Task.new(:rdoc) do |rdoc| # rdoc.rdoc_dir = 'rdoc' diff --git a/spec/integration/active_record_integration_spec.rb b/spec/integration/active_record_integration_spec.rb index 51e2af1..eecb72e 100644 --- a/spec/integration/active_record_integration_spec.rb +++ b/spec/integration/active_record_integration_spec.rb @@ -2,8 +2,8 @@ describe 'Active Record Integration' do before :all do - ENV['db_adapter'] ||= 'sqlite' - send("setup_#{ENV['db_adapter']}") + adapter = ActiveRecord::Base.connection_config[:adapter] + send("setup_#{adapter}") end context 'insertion' do diff --git a/spec/lib/polymorphic_constraints/connection_adapters/mysql2_adapter_spec.rb b/spec/lib/polymorphic_constraints/connection_adapters/mysql2_adapter_spec.rb index 205c2b5..f9ff411 100644 --- a/spec/lib/polymorphic_constraints/connection_adapters/mysql2_adapter_spec.rb +++ b/spec/lib/polymorphic_constraints/connection_adapters/mysql2_adapter_spec.rb @@ -3,52 +3,47 @@ describe PolymorphicConstraints::ConnectionAdapters::Mysql2Adapter do - class TestAdapter + class MysqlTestAdapter include Support::AdapterHelper include PolymorphicConstraints::ConnectionAdapters::Mysql2Adapter end - subject { TestAdapter.new } + subject { MysqlTestAdapter.new } it { is_expected.to respond_to(:supports_polymorphic_constraints?) } it { is_expected.to respond_to(:add_polymorphic_constraints) } it { is_expected.to respond_to(:remove_polymorphic_constraints) } describe 'add constraints' do - context 'search strategy' do - it 'defaults to active_record_descendants search strategy' do - expect(subject.add_polymorphic_constraints(:imageable, :pictures)).to eql([drop_create_trigger_sql, - drop_update_trigger_sql, - drop_employees_delete_trigger_sql, - drop_products_delete_trigger_sql, - create_trigger_sql, - update_trigger_sql, - employees_delete_trigger_sql, - products_delete_trigger_sql]) - end - - it 'returns expected add constraints sql with polymorphic model options' do - expect(subject.add_polymorphic_constraints(:imageable, :pictures, - polymorphic_models: [:employee])).to eql([drop_create_trigger_sql, - drop_update_trigger_sql, - drop_employees_delete_trigger_sql, - drop_products_delete_trigger_sql, - create_trigger_sql_only_employee, - update_trigger_sql_only_employee, - employees_delete_trigger_sql]) - end + it 'defaults to active_record_descendants search strategy' do + expect(subject.add_polymorphic_constraints(:imageable, :pictures)).to eql([drop_create_trigger_sql, + drop_update_trigger_sql, + drop_employees_delete_trigger_sql, + drop_products_delete_trigger_sql, + create_trigger_sql, + update_trigger_sql, + employees_delete_trigger_sql, + products_delete_trigger_sql]) end + it 'returns expected add constraints sql with polymorphic model options' do + expect(subject.add_polymorphic_constraints(:imageable, :pictures, + polymorphic_models: [:employee])).to eql([drop_create_trigger_sql, + drop_update_trigger_sql, + drop_employees_delete_trigger_sql, + drop_products_delete_trigger_sql, + create_trigger_sql_only_employee, + update_trigger_sql_only_employee, + employees_delete_trigger_sql]) + end end describe 'remove constraints' do - context 'search strategy' do - it 'defaults to active_record_descendants search strategy' do - expect(subject.remove_polymorphic_constraints(:imageable)).to eql([drop_create_trigger_sql, - drop_update_trigger_sql, - drop_employees_delete_trigger_sql, - drop_products_delete_trigger_sql]) - end + it 'defaults to active_record_descendants search strategy' do + expect(subject.remove_polymorphic_constraints(:imageable)).to eql([drop_create_trigger_sql, + drop_update_trigger_sql, + drop_employees_delete_trigger_sql, + drop_products_delete_trigger_sql]) end end diff --git a/spec/lib/polymorphic_constraints/connection_adapters/postgresql_adapter_spec.rb b/spec/lib/polymorphic_constraints/connection_adapters/postgresql_adapter_spec.rb index 5f17c36..2615e26 100644 --- a/spec/lib/polymorphic_constraints/connection_adapters/postgresql_adapter_spec.rb +++ b/spec/lib/polymorphic_constraints/connection_adapters/postgresql_adapter_spec.rb @@ -3,31 +3,29 @@ describe PolymorphicConstraints::ConnectionAdapters::PostgreSQLAdapter do - class TestAdapter + class PostgresqlTestAdapter include Support::AdapterHelper include PolymorphicConstraints::ConnectionAdapters::PostgreSQLAdapter end - subject { TestAdapter.new } + subject { PostgresqlTestAdapter.new } it { is_expected.to respond_to(:supports_polymorphic_constraints?) } it { is_expected.to respond_to(:add_polymorphic_constraints) } it { is_expected.to respond_to(:remove_polymorphic_constraints) } describe 'add constraints' do - context 'search strategy' do - it 'defaults to active_record_descendants search strategy' do - expect(subject.add_polymorphic_constraints(:imageable, :pictures)).to eql([drop_triggers_sql, - upsert_triggers_sql, - delete_triggers_sql]) - end - - it 'returns expected add constraints sql with polymorphic model options' do - expect(subject.add_polymorphic_constraints(:imageable, :pictures, - polymorphic_models: [:employee])).to eql([drop_triggers_sql, - upsert_triggers_sql_only_employee, - delete_triggers_sql_only_employee]) - end + it 'defaults to active_record_descendants search strategy' do + expect(subject.add_polymorphic_constraints(:imageable, :pictures)).to eql([drop_triggers_sql, + upsert_triggers_sql, + delete_triggers_sql]) + end + + it 'returns expected add constraints sql with polymorphic model options' do + expect(subject.add_polymorphic_constraints(:imageable, :pictures, + polymorphic_models: [:employee])).to eql([drop_triggers_sql, + upsert_triggers_sql_only_employee, + delete_triggers_sql_only_employee]) end end diff --git a/spec/lib/polymorphic_constraints/connection_adapters/sqlite3_adapter_spec.rb b/spec/lib/polymorphic_constraints/connection_adapters/sqlite3_adapter_spec.rb index 4f79a43..b1e6bcc 100644 --- a/spec/lib/polymorphic_constraints/connection_adapters/sqlite3_adapter_spec.rb +++ b/spec/lib/polymorphic_constraints/connection_adapters/sqlite3_adapter_spec.rb @@ -3,52 +3,47 @@ describe PolymorphicConstraints::ConnectionAdapters::SQLite3Adapter do - class TestAdapter + class SqliteTestAdapter include Support::AdapterHelper include PolymorphicConstraints::ConnectionAdapters::SQLite3Adapter end - subject { TestAdapter.new } + subject { SqliteTestAdapter.new } it { is_expected.to respond_to(:supports_polymorphic_constraints?) } it { is_expected.to respond_to(:add_polymorphic_constraints) } it { is_expected.to respond_to(:remove_polymorphic_constraints) } describe 'add constraints' do - context 'search strategy' do - it 'defaults to active_record_descendants search strategy' do - expect(subject.add_polymorphic_constraints(:imageable, :pictures)).to eql([drop_create_trigger_sql, - drop_update_trigger_sql, - drop_employees_delete_trigger_sql, - drop_products_delete_trigger_sql, - create_trigger_sql, - update_trigger_sql, - employees_delete_trigger_sql, - products_delete_trigger_sql]) - end - - it 'returns expected add constraints sql with polymorphic model options' do - expect(subject.add_polymorphic_constraints(:imageable, :pictures, - polymorphic_models: [:employee])).to eql([drop_create_trigger_sql, - drop_update_trigger_sql, - drop_employees_delete_trigger_sql, - drop_products_delete_trigger_sql, - create_trigger_sql_only_employee, - update_trigger_sql_only_employee, - employees_delete_trigger_sql]) - end + it 'defaults to active_record_descendants search strategy' do + expect(subject.add_polymorphic_constraints(:imageable, :pictures)).to eql([drop_create_trigger_sql, + drop_update_trigger_sql, + drop_employees_delete_trigger_sql, + drop_products_delete_trigger_sql, + create_trigger_sql, + update_trigger_sql, + employees_delete_trigger_sql, + products_delete_trigger_sql]) end + it 'returns expected add constraints sql with polymorphic model options' do + expect(subject.add_polymorphic_constraints(:imageable, :pictures, + polymorphic_models: [:employee])).to eql([drop_create_trigger_sql, + drop_update_trigger_sql, + drop_employees_delete_trigger_sql, + drop_products_delete_trigger_sql, + create_trigger_sql_only_employee, + update_trigger_sql_only_employee, + employees_delete_trigger_sql]) + end end describe 'remove constraints' do - context 'search strategy' do - it 'defaults to active_record_descendants search strategy' do - expect(subject.remove_polymorphic_constraints(:imageable)).to eql([drop_create_trigger_sql, - drop_update_trigger_sql, - drop_employees_delete_trigger_sql, - drop_products_delete_trigger_sql]) - end + it 'defaults to active_record_descendants search strategy' do + expect(subject.remove_polymorphic_constraints(:imageable)).to eql([drop_create_trigger_sql, + drop_update_trigger_sql, + drop_employees_delete_trigger_sql, + drop_products_delete_trigger_sql]) end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index fd62a84..b9110d5 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -16,7 +16,7 @@ end end -def setup_sqlite +def setup_sqlite3 connection_config = ActiveRecord::Base.connection_config ActiveRecord::Base.establish_connection(connection_config) migrate_db @@ -27,7 +27,7 @@ def setup_postgresql migrate_db end -def setup_mysql +def setup_mysql2 connect_db migrate_db end