Skip to content

Commit

Permalink
rake test refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
musaffa committed Oct 7, 2014
1 parent a4bc4db commit 2c61af7
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 124 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -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
Expand Down
50 changes: 8 additions & 42 deletions Rakefile
Expand Up @@ -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
Expand All @@ -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'
Expand Down
4 changes: 2 additions & 2 deletions spec/integration/active_record_integration_spec.rb
Expand Up @@ -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
Expand Down
Expand Up @@ -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

Expand Down
Expand Up @@ -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

Expand Down
Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions spec/spec_helper.rb
Expand Up @@ -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
Expand All @@ -27,7 +27,7 @@ def setup_postgresql
migrate_db
end

def setup_mysql
def setup_mysql2
connect_db
migrate_db
end
Expand Down

0 comments on commit 2c61af7

Please sign in to comment.