diff --git a/lib/database_cleaner/data_mapper/truncation.rb b/lib/database_cleaner/data_mapper/truncation.rb index acb9732..682e48b 100644 --- a/lib/database_cleaner/data_mapper/truncation.rb +++ b/lib/database_cleaner/data_mapper/truncation.rb @@ -12,7 +12,7 @@ module DataMapper def truncate_tables(table_names) table_names.each do |table_name| - adapter.truncate_table table_name + truncate_table table_name end end diff --git a/spec/database_cleaner/data_mapper/truncation/sqlite3_spec.rb b/spec/database_cleaner/data_mapper/truncation/sqlite3_spec.rb new file mode 100644 index 0000000..fa0d394 --- /dev/null +++ b/spec/database_cleaner/data_mapper/truncation/sqlite3_spec.rb @@ -0,0 +1,43 @@ +require 'spec_helper' +require 'dm-core' +require 'dm-sqlite-adapter' +require File.expand_path('../../../../support/data_mapper/sqlite3_setup', __FILE__) +require 'database_cleaner/data_mapper/truncation' + +module DataMapper + module ConnectionAdapters + describe do + before(:all) { data_mapper_sqlite3_setup } + + let(:adapter) { DataMapperSQLite3Adapter } + + let(:connection) do + data_mapper_sqlite3_connection + end + + before(:each) do + connection.truncate_tables ['users'] + end + + describe "#truncate_table" do + it "truncates the table" do + 2.times { User.create } + + connection.truncate_table('users') + User.count.should eq 0 + end + + it "resets AUTO_INCREMENT index of table" do + 2.times { User.create } + User.destroy + + connection.truncate_table('users') + + User.create.id.should eq 1 + end + end + + end + end +end + diff --git a/spec/support/data_mapper/schema_setup.rb b/spec/support/data_mapper/schema_setup.rb new file mode 100644 index 0000000..546c10b --- /dev/null +++ b/spec/support/data_mapper/schema_setup.rb @@ -0,0 +1,13 @@ +def load_schema + require 'dm-migrations' + + DataMapper.auto_migrate! +end + +class ::User + include DataMapper::Resource + + property :id, Serial + property :name, String + +end diff --git a/spec/support/data_mapper/sqlite3_setup.rb b/spec/support/data_mapper/sqlite3_setup.rb new file mode 100644 index 0000000..807a81a --- /dev/null +++ b/spec/support/data_mapper/sqlite3_setup.rb @@ -0,0 +1,38 @@ +require 'support/active_record/database_setup' +require 'support/data_mapper/schema_setup' + +module DataMapperSQLite3Helper + puts "DataMapper #{DataMapper::VERSION}, sqlite3" + + def config + db_config['sqlite3'] + end + + def create_db + @encoding = config['encoding'] || ENV['CHARSET'] || 'utf8' + begin + establish_connection(config.merge('database' => 'sqlite3', 'schema_search_path' => 'public')) + rescue Exception => e + $stderr.puts e, *(e.backtrace) + $stderr.puts "Couldn't create database for #{config.inspect}" + end + end + + def establish_connection(config = config) + DataMapper.setup(:default, config) + end + + def data_mapper_sqlite3_setup + create_db + establish_connection + load_schema + end + + def data_mapper_sqlite3_connection + DataMapper.repository.adapter + end +end + +RSpec.configure do |c| + c.include(DataMapperSQLite3Helper) +end