mirror of
https://github.com/DatabaseCleaner/database_cleaner
synced 2023-03-27 23:22:03 -04:00
Add basic coverage for deletion strategy (ActiveRecord) in MySQL, PG
and SQLite
This commit is contained in:
parent
ef9e62adc3
commit
6bc0c1db4d
4 changed files with 144 additions and 0 deletions
28
spec/database_cleaner/active_record/deletion/mysql2_spec.rb
Normal file
28
spec/database_cleaner/active_record/deletion/mysql2_spec.rb
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
require 'active_record'
|
||||||
|
require 'support/active_record/mysql2_setup'
|
||||||
|
require 'database_cleaner/active_record/deletion'
|
||||||
|
|
||||||
|
module ActiveRecord
|
||||||
|
module AbstractMysqlAdapter
|
||||||
|
describe do
|
||||||
|
before(:all) { active_record_mysql2_setup }
|
||||||
|
|
||||||
|
let(:connection) { active_record_mysql2_connection }
|
||||||
|
|
||||||
|
subject { DatabaseCleaner::ActiveRecord::Deletion.new }
|
||||||
|
|
||||||
|
describe "#delete_table" do
|
||||||
|
it "should delete the table" do
|
||||||
|
2.times { User.create }
|
||||||
|
|
||||||
|
allow(subject).to receive(:tables_with_new_rows).and_return(["users"])
|
||||||
|
|
||||||
|
subject.clean
|
||||||
|
|
||||||
|
User.count.should eq 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
23
spec/database_cleaner/active_record/deletion/mysql_spec.rb
Normal file
23
spec/database_cleaner/active_record/deletion/mysql_spec.rb
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
require 'active_record'
|
||||||
|
require 'support/active_record/mysql_setup'
|
||||||
|
require 'database_cleaner/active_record/deletion'
|
||||||
|
|
||||||
|
module ActiveRecord
|
||||||
|
module AbstractMysqlAdapter
|
||||||
|
describe do
|
||||||
|
before(:all) { active_record_mysql_setup }
|
||||||
|
|
||||||
|
let(:connection) { active_record_mysql_connection }
|
||||||
|
|
||||||
|
describe "#delete_table" do
|
||||||
|
it "should delete the table" do
|
||||||
|
2.times { User.create }
|
||||||
|
DatabaseCleaner::ActiveRecord::Deletion.new.clean
|
||||||
|
|
||||||
|
User.count.should eq 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,62 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
require 'active_record'
|
||||||
|
require 'support/active_record/postgresql_setup'
|
||||||
|
require 'database_cleaner/active_record/deletion'
|
||||||
|
|
||||||
|
module ActiveRecord
|
||||||
|
module ConnectionAdapters
|
||||||
|
describe "schema_migrations table" do
|
||||||
|
it "is not deleted" do
|
||||||
|
active_record_pg_migrate
|
||||||
|
DatabaseCleaner::ActiveRecord::Deletion.new.clean
|
||||||
|
result = active_record_pg_connection.execute("select count(*) from schema_migrations;")
|
||||||
|
result.values.first.should eq ["2"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe do
|
||||||
|
before(:all) { active_record_pg_setup }
|
||||||
|
|
||||||
|
let(:connection) do
|
||||||
|
active_record_pg_connection
|
||||||
|
end
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
connection.tables.each do |table|
|
||||||
|
connection.delete_table table
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#delete_table" do
|
||||||
|
it "deletes the table" do
|
||||||
|
2.times { User.create }
|
||||||
|
|
||||||
|
connection.delete_table('users')
|
||||||
|
User.count.should eq 0
|
||||||
|
end
|
||||||
|
|
||||||
|
it "deletes the table without id sequence" do
|
||||||
|
2.times { Agent.create }
|
||||||
|
|
||||||
|
connection.delete_table('agents')
|
||||||
|
Agent.count.should eq 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe ":except option cleanup" do
|
||||||
|
it "should not delete the tables specified in the :except option" do
|
||||||
|
2.times { User.create }
|
||||||
|
|
||||||
|
::DatabaseCleaner::ActiveRecord::Deletion.new(:except => ['users']).clean
|
||||||
|
expect( User.count ).to eq 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#database_cleaner_table_cache' do
|
||||||
|
it 'should default to the list of tables with their schema' do
|
||||||
|
connection.database_cleaner_table_cache.first.should match(/^public\./)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
31
spec/database_cleaner/active_record/deletion/sqlite3_spec.rb
Normal file
31
spec/database_cleaner/active_record/deletion/sqlite3_spec.rb
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
require 'active_record'
|
||||||
|
require 'support/active_record/sqlite3_setup'
|
||||||
|
require 'database_cleaner/active_record/deletion'
|
||||||
|
|
||||||
|
module ActiveRecord
|
||||||
|
module ConnectionAdapters
|
||||||
|
describe do
|
||||||
|
before(:all) { active_record_sqlite3_setup }
|
||||||
|
|
||||||
|
let(:connection) do
|
||||||
|
active_record_sqlite3_connection
|
||||||
|
end
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
connection.tables.each do |table|
|
||||||
|
connection.delete_table table
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#delete_table" do
|
||||||
|
it "deletes the table" do
|
||||||
|
2.times { User.create }
|
||||||
|
|
||||||
|
connection.delete_table('users')
|
||||||
|
User.count.should eq 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue