database_cleaner 1.6.2 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/lib/database_cleaner.rb +1 -8
- metadata +25 -499
- data/CONTRIBUTE.markdown +0 -28
- data/Gemfile.lock +0 -286
- data/History.rdoc +0 -430
- data/LICENSE +0 -20
- data/README.markdown +0 -518
- data/Rakefile +0 -40
- data/TODO +0 -3
- data/VERSION.yml +0 -4
- data/cucumber.yml +0 -1
- data/examples/Gemfile +0 -1
- data/examples/Gemfile.lock +0 -1
- data/examples/config/database.yml.example +0 -8
- data/examples/config/redis.yml +0 -8
- data/examples/db/sqlite_databases_go_here +0 -0
- data/examples/features/example.feature +0 -11
- data/examples/features/example_multiple_db.feature +0 -23
- data/examples/features/example_multiple_orm.feature +0 -22
- data/examples/features/step_definitions/activerecord_steps.rb +0 -31
- data/examples/features/step_definitions/couchpotato_steps.rb +0 -31
- data/examples/features/step_definitions/datamapper_steps.rb +0 -37
- data/examples/features/step_definitions/mongoid_steps.rb +0 -23
- data/examples/features/step_definitions/mongomapper_steps.rb +0 -31
- data/examples/features/step_definitions/neo4j_steps.rb +0 -23
- data/examples/features/step_definitions/ohm_steps.rb +0 -31
- data/examples/features/step_definitions/redis_steps.rb +0 -31
- data/examples/features/step_definitions/translation_steps.rb +0 -55
- data/examples/features/support/env.rb +0 -61
- data/examples/lib/activerecord_models.rb +0 -41
- data/examples/lib/couchpotato_models.rb +0 -61
- data/examples/lib/datamapper_models.rb +0 -50
- data/examples/lib/mongoid_models.rb +0 -44
- data/examples/lib/mongomapper_models.rb +0 -51
- data/examples/lib/neo4j_models.rb +0 -17
- data/examples/lib/ohm_models.rb +0 -43
- data/examples/lib/redis_models.rb +0 -65
- data/examples/lib/sequel_models.rb +0 -9
- data/features/cleaning.feature +0 -30
- data/features/cleaning_default_strategy.feature +0 -23
- data/features/cleaning_multiple_dbs.feature +0 -22
- data/features/cleaning_multiple_orms.feature +0 -67
- data/features/step_definitions/database_cleaner_steps.rb +0 -33
- data/features/support/env.rb +0 -4
- data/features/support/feature_runner.rb +0 -39
- data/lib/database_cleaner/active_record/base.rb +0 -92
- data/lib/database_cleaner/active_record/deletion.rb +0 -106
- data/lib/database_cleaner/active_record/transaction.rb +0 -59
- data/lib/database_cleaner/active_record/truncation.rb +0 -275
- data/lib/database_cleaner/base.rb +0 -164
- data/lib/database_cleaner/configuration.rb +0 -131
- data/lib/database_cleaner/couch_potato/base.rb +0 -7
- data/lib/database_cleaner/couch_potato/truncation.rb +0 -28
- data/lib/database_cleaner/cucumber.rb +0 -3
- data/lib/database_cleaner/data_mapper/base.rb +0 -21
- data/lib/database_cleaner/data_mapper/transaction.rb +0 -28
- data/lib/database_cleaner/data_mapper/truncation.rb +0 -172
- data/lib/database_cleaner/generic/base.rb +0 -29
- data/lib/database_cleaner/generic/transaction.rb +0 -11
- data/lib/database_cleaner/generic/truncation.rb +0 -40
- data/lib/database_cleaner/mongo/base.rb +0 -16
- data/lib/database_cleaner/mongo/truncation.rb +0 -62
- data/lib/database_cleaner/mongo/truncation_mixin.rb +0 -26
- data/lib/database_cleaner/mongo2/base.rb +0 -16
- data/lib/database_cleaner/mongo2/truncation_mixin.rb +0 -39
- data/lib/database_cleaner/mongo_mapper/base.rb +0 -20
- data/lib/database_cleaner/mongo_mapper/truncation.rb +0 -19
- data/lib/database_cleaner/mongoid/base.rb +0 -20
- data/lib/database_cleaner/mongoid/truncation.rb +0 -49
- data/lib/database_cleaner/moped/base.rb +0 -39
- data/lib/database_cleaner/moped/truncation.rb +0 -9
- data/lib/database_cleaner/moped/truncation_base.rb +0 -40
- data/lib/database_cleaner/neo4j/base.rb +0 -62
- data/lib/database_cleaner/neo4j/deletion.rb +0 -16
- data/lib/database_cleaner/neo4j/transaction.rb +0 -35
- data/lib/database_cleaner/neo4j/truncation.rb +0 -9
- data/lib/database_cleaner/null_strategy.rb +0 -20
- data/lib/database_cleaner/ohm/truncation.rb +0 -15
- data/lib/database_cleaner/redis/base.rb +0 -37
- data/lib/database_cleaner/redis/truncation.rb +0 -26
- data/lib/database_cleaner/sequel/base.rb +0 -22
- data/lib/database_cleaner/sequel/deletion.rb +0 -47
- data/lib/database_cleaner/sequel/transaction.rb +0 -40
- data/lib/database_cleaner/sequel/truncation.rb +0 -78
- data/spec/database_cleaner/active_record/base_spec.rb +0 -188
- data/spec/database_cleaner/active_record/transaction_spec.rb +0 -176
- data/spec/database_cleaner/active_record/truncation/mysql2_spec.rb +0 -38
- data/spec/database_cleaner/active_record/truncation/mysql_spec.rb +0 -38
- data/spec/database_cleaner/active_record/truncation/postgresql_spec.rb +0 -75
- data/spec/database_cleaner/active_record/truncation/shared_fast_truncation.rb +0 -40
- data/spec/database_cleaner/active_record/truncation/sqlite3_spec.rb +0 -40
- data/spec/database_cleaner/active_record/truncation_spec.rb +0 -180
- data/spec/database_cleaner/base_spec.rb +0 -617
- data/spec/database_cleaner/configuration_spec.rb +0 -345
- data/spec/database_cleaner/couch_potato/truncation_spec.rb +0 -41
- data/spec/database_cleaner/data_mapper/base_spec.rb +0 -30
- data/spec/database_cleaner/data_mapper/transaction_spec.rb +0 -23
- data/spec/database_cleaner/data_mapper/truncation/sqlite3_spec.rb +0 -41
- data/spec/database_cleaner/data_mapper/truncation_spec.rb +0 -11
- data/spec/database_cleaner/generic/base_spec.rb +0 -61
- data/spec/database_cleaner/generic/truncation_spec.rb +0 -118
- data/spec/database_cleaner/mongo/mongo_examples.rb +0 -26
- data/spec/database_cleaner/mongo/truncation_spec.rb +0 -72
- data/spec/database_cleaner/mongo_mapper/base_spec.rb +0 -33
- data/spec/database_cleaner/mongo_mapper/mongo_examples.rb +0 -8
- data/spec/database_cleaner/mongo_mapper/truncation_spec.rb +0 -74
- data/spec/database_cleaner/moped/moped_examples.rb +0 -32
- data/spec/database_cleaner/moped/truncation_spec.rb +0 -80
- data/spec/database_cleaner/neo4j/base_spec.rb +0 -43
- data/spec/database_cleaner/neo4j/transaction_spec.rb +0 -25
- data/spec/database_cleaner/null_strategy_spec.rb +0 -28
- data/spec/database_cleaner/ohm/truncation_spec.rb +0 -70
- data/spec/database_cleaner/redis/base_spec.rb +0 -43
- data/spec/database_cleaner/redis/truncation_spec.rb +0 -63
- data/spec/database_cleaner/sequel/base_spec.rb +0 -32
- data/spec/database_cleaner/sequel/deletion_spec.rb +0 -58
- data/spec/database_cleaner/sequel/transaction_spec.rb +0 -21
- data/spec/database_cleaner/sequel/truncation/sqlite3_spec.rb +0 -0
- data/spec/database_cleaner/sequel/truncation_spec.rb +0 -182
- data/spec/database_cleaner/shared_strategy.rb +0 -15
- data/spec/rcov.opts +0 -1
- data/spec/spec_helper.rb +0 -21
- data/spec/support/active_record/database_setup.rb +0 -6
- data/spec/support/active_record/migrations/20150101010000_create_users.rb +0 -14
- data/spec/support/active_record/migrations/20150101020000_create_agents.rb +0 -14
- data/spec/support/active_record/mysql2_setup.rb +0 -39
- data/spec/support/active_record/mysql_setup.rb +0 -38
- data/spec/support/active_record/postgresql_setup.rb +0 -48
- data/spec/support/active_record/schema_setup.rb +0 -17
- data/spec/support/active_record/sqlite3_setup.rb +0 -40
- data/spec/support/data_mapper/schema_setup.rb +0 -15
- data/spec/support/data_mapper/sqlite3_setup.rb +0 -39
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
require 'mongo'
|
|
3
|
-
require 'database_cleaner/mongo/truncation'
|
|
4
|
-
require File.dirname(__FILE__) + '/mongo_examples'
|
|
5
|
-
|
|
6
|
-
module DatabaseCleaner
|
|
7
|
-
module Mongo
|
|
8
|
-
|
|
9
|
-
describe Truncation do
|
|
10
|
-
let(:args) {{}}
|
|
11
|
-
let(:truncation) { described_class.new(args).tap { |t| t.db=@db } }
|
|
12
|
-
#doing this in the file root breaks autospec, doing it before(:all) just fails the specs
|
|
13
|
-
before(:all) do
|
|
14
|
-
@connection = ::Mongo::Connection.new('127.0.0.1')
|
|
15
|
-
@test_db = 'database_cleaner_specs'
|
|
16
|
-
@db = @connection.db(@test_db)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
after(:each) do
|
|
20
|
-
@connection.drop_database(@test_db)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def ensure_counts(expected_counts)
|
|
24
|
-
# I had to add this sanity_check garbage because I was getting non-determinisc results from mongo at times..
|
|
25
|
-
# very odd and disconcerting...
|
|
26
|
-
expected_counts.each do |model_class, expected_count|
|
|
27
|
-
model_class.count.should equal(expected_count), "#{model_class} expected to have a count of #{expected_count} but was #{model_class.count}"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def create_widget(attrs={})
|
|
32
|
-
MongoTest::Widget.new({:name => 'some widget'}.merge(attrs)).save!
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def create_gadget(attrs={})
|
|
36
|
-
MongoTest::Gadget.new({:name => 'some gadget'}.merge(attrs)).save!
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it "truncates all collections by default" do
|
|
40
|
-
create_widget
|
|
41
|
-
create_gadget
|
|
42
|
-
ensure_counts(MongoTest::Widget => 1, MongoTest::Gadget => 1)
|
|
43
|
-
truncation.clean
|
|
44
|
-
ensure_counts(MongoTest::Widget => 0, MongoTest::Gadget => 0)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
context "when collections are provided to the :only option" do
|
|
48
|
-
let(:args) {{:only => ['MongoTest::Widget']}}
|
|
49
|
-
it "only truncates the specified collections" do
|
|
50
|
-
create_widget
|
|
51
|
-
create_gadget
|
|
52
|
-
ensure_counts(MongoTest::Widget => 1, MongoTest::Gadget => 1)
|
|
53
|
-
truncation.clean
|
|
54
|
-
ensure_counts(MongoTest::Widget => 0, MongoTest::Gadget => 1)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context "when collections are provided to the :except option" do
|
|
59
|
-
let(:args) {{:except => ['MongoTest::Widget']}}
|
|
60
|
-
it "truncates all but the specified collections" do
|
|
61
|
-
create_widget
|
|
62
|
-
create_gadget
|
|
63
|
-
ensure_counts(MongoTest::Widget => 1, MongoTest::Gadget => 1)
|
|
64
|
-
truncation.clean
|
|
65
|
-
ensure_counts(MongoTest::Widget => 1, MongoTest::Gadget => 0)
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
end
|
|
72
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'database_cleaner/mongo_mapper/base'
|
|
3
|
-
require 'database_cleaner/shared_strategy'
|
|
4
|
-
|
|
5
|
-
module DatabaseCleaner
|
|
6
|
-
describe MongoMapper do
|
|
7
|
-
it { should respond_to(:available_strategies) }
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
module MongoMapper
|
|
11
|
-
class ExampleStrategy
|
|
12
|
-
include ::DatabaseCleaner::MongoMapper::Base
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
describe ExampleStrategy do
|
|
16
|
-
|
|
17
|
-
it_should_behave_like "a generic strategy"
|
|
18
|
-
|
|
19
|
-
describe "db" do
|
|
20
|
-
it { should respond_to(:db=) }
|
|
21
|
-
|
|
22
|
-
it "should store my desired db" do
|
|
23
|
-
subject.db = :my_db
|
|
24
|
-
subject.db.should eq :my_db
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "should default to :default" do
|
|
28
|
-
subject.db.should eq :default
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
require 'mongo_mapper'
|
|
3
|
-
require 'database_cleaner/mongo_mapper/truncation'
|
|
4
|
-
require File.dirname(__FILE__) + '/mongo_examples'
|
|
5
|
-
|
|
6
|
-
module DatabaseCleaner
|
|
7
|
-
module MongoMapper
|
|
8
|
-
|
|
9
|
-
describe Truncation do
|
|
10
|
-
|
|
11
|
-
#doing this in the file root breaks autospec, doing it before(:all) just fails the specs
|
|
12
|
-
before(:all) do
|
|
13
|
-
::MongoMapper.connection = ::Mongo::Connection.new('127.0.0.1')
|
|
14
|
-
@test_db = 'database_cleaner_specs'
|
|
15
|
-
::MongoMapper.database = @test_db
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
before(:each) do
|
|
19
|
-
::MongoMapper.connection.drop_database(@test_db)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def ensure_counts(expected_counts)
|
|
23
|
-
# I had to add this sanity_check garbage because I was getting non-determinisc results from mongomapper at times..
|
|
24
|
-
# very odd and disconcerting...
|
|
25
|
-
sanity_check = expected_counts.delete(:sanity_check)
|
|
26
|
-
begin
|
|
27
|
-
expected_counts.each do |model_class, expected_count|
|
|
28
|
-
model_class.count.should equal(expected_count), "#{model_class} expected to have a count of #{expected_count} but was #{model_class.count}"
|
|
29
|
-
end
|
|
30
|
-
rescue RSpec::Expectations::ExpectationNotMetError => e
|
|
31
|
-
raise !sanity_check ? e : RSpec::ExpectationNotMetError::ExpectationNotMetError.new("SANITY CHECK FAILURE! This should never happen here: #{e.message}")
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def create_widget(attrs={})
|
|
36
|
-
Widget.new({:name => 'some widget'}.merge(attrs)).save!
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def create_gadget(attrs={})
|
|
40
|
-
Gadget.new({:name => 'some gadget'}.merge(attrs)).save!
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it "truncates all collections by default" do
|
|
44
|
-
create_widget
|
|
45
|
-
create_gadget
|
|
46
|
-
ensure_counts(Widget => 1, Gadget => 1, :sanity_check => true)
|
|
47
|
-
Truncation.new.clean
|
|
48
|
-
ensure_counts(Widget => 0, Gadget => 0)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
context "when collections are provided to the :only option" do
|
|
52
|
-
it "only truncates the specified collections" do
|
|
53
|
-
create_widget
|
|
54
|
-
create_gadget
|
|
55
|
-
ensure_counts(Widget => 1, Gadget => 1, :sanity_check => true)
|
|
56
|
-
Truncation.new(:only => ['widgets']).clean
|
|
57
|
-
ensure_counts(Widget => 0, Gadget => 1)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
context "when collections are provided to the :except option" do
|
|
62
|
-
it "truncates all but the specified collections" do
|
|
63
|
-
create_widget
|
|
64
|
-
create_gadget
|
|
65
|
-
ensure_counts(Widget => 1, Gadget => 1, :sanity_check => true)
|
|
66
|
-
Truncation.new(:except => ['widgets']).clean
|
|
67
|
-
ensure_counts(Widget => 1, Gadget => 0)
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
end
|
|
74
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
module MopedTest
|
|
2
|
-
class ThingBase
|
|
3
|
-
def self.collection
|
|
4
|
-
@db ||= 'database_cleaner_specs'
|
|
5
|
-
@session ||= ::Moped::Session.new(['127.0.0.1:27017'], database: @db)
|
|
6
|
-
@collection ||= @session[name]
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def self.count
|
|
10
|
-
@collection.find.count
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def initialize(attrs={})
|
|
14
|
-
@attrs = attrs
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def save!
|
|
18
|
-
self.class.collection.insert(@attrs)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
class Widget < ThingBase
|
|
23
|
-
end
|
|
24
|
-
class Gadget < ThingBase
|
|
25
|
-
end
|
|
26
|
-
class System < ThingBase
|
|
27
|
-
def self.collection
|
|
28
|
-
super
|
|
29
|
-
@collection = @session['system_logs']
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
require 'moped'
|
|
3
|
-
require 'database_cleaner/moped/truncation'
|
|
4
|
-
require File.dirname(__FILE__) + '/moped_examples'
|
|
5
|
-
|
|
6
|
-
module DatabaseCleaner
|
|
7
|
-
module Moped
|
|
8
|
-
|
|
9
|
-
describe Truncation do
|
|
10
|
-
let(:args) {{}}
|
|
11
|
-
let(:truncation) { described_class.new(args) }
|
|
12
|
-
#doing this in the file root breaks autospec, doing it before(:all) just fails the specs
|
|
13
|
-
before(:all) do
|
|
14
|
-
@test_db = 'database_cleaner_specs'
|
|
15
|
-
@session = ::Moped::Session.new(['127.0.0.1:27017'], database: @test_db)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
before(:each) do
|
|
19
|
-
truncation.db = @test_db
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
after(:each) do
|
|
23
|
-
@session.drop
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def ensure_counts(expected_counts)
|
|
27
|
-
# I had to add this sanity_check garbage because I was getting non-determinisc results from mongo at times..
|
|
28
|
-
# very odd and disconcerting...
|
|
29
|
-
expected_counts.each do |model_class, expected_count|
|
|
30
|
-
model_class.count.should equal(expected_count), "#{model_class} expected to have a count of #{expected_count} but was #{model_class.count}"
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def create_widget(attrs={})
|
|
35
|
-
MopedTest::Widget.new({:name => 'some widget'}.merge(attrs)).save!
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def create_gadget(attrs={})
|
|
39
|
-
MopedTest::Gadget.new({:name => 'some gadget'}.merge(attrs)).save!
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def create_system(attrs={})
|
|
43
|
-
MopedTest::System.new({:name => 'some system'}.merge(attrs)).save!
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "truncates all collections by default" do
|
|
47
|
-
create_widget
|
|
48
|
-
create_gadget
|
|
49
|
-
create_system
|
|
50
|
-
ensure_counts(MopedTest::Widget => 1, MopedTest::Gadget => 1, MopedTest::System => 1)
|
|
51
|
-
truncation.clean
|
|
52
|
-
ensure_counts(MopedTest::Widget => 0, MopedTest::Gadget => 0, MopedTest::System => 0)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
context "when collections are provided to the :only option" do
|
|
56
|
-
let(:args) {{:only => ['MopedTest::Widget']}}
|
|
57
|
-
it "only truncates the specified collections" do
|
|
58
|
-
create_widget
|
|
59
|
-
create_gadget
|
|
60
|
-
ensure_counts(MopedTest::Widget => 1, MopedTest::Gadget => 1)
|
|
61
|
-
truncation.clean
|
|
62
|
-
ensure_counts(MopedTest::Widget => 0, MopedTest::Gadget => 1)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
context "when collections are provided to the :except option" do
|
|
67
|
-
let(:args) {{:except => ['MopedTest::Widget']}}
|
|
68
|
-
it "truncates all but the specified collections" do
|
|
69
|
-
create_widget
|
|
70
|
-
create_gadget
|
|
71
|
-
ensure_counts(MopedTest::Widget => 1, MopedTest::Gadget => 1)
|
|
72
|
-
truncation.clean
|
|
73
|
-
ensure_counts(MopedTest::Widget => 1, MopedTest::Gadget => 0)
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
end
|
|
80
|
-
end
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'database_cleaner/neo4j/base'
|
|
3
|
-
require 'database_cleaner/shared_strategy'
|
|
4
|
-
|
|
5
|
-
module DatabaseCleaner
|
|
6
|
-
describe Neo4j do
|
|
7
|
-
it { should respond_to(:available_strategies) }
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
module Neo4j
|
|
11
|
-
class ExampleStrategy
|
|
12
|
-
include ::DatabaseCleaner::Neo4j::Base
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
describe ExampleStrategy do
|
|
16
|
-
|
|
17
|
-
it_should_behave_like "a generic strategy"
|
|
18
|
-
it { should respond_to(:db) }
|
|
19
|
-
it { should respond_to(:db=) }
|
|
20
|
-
|
|
21
|
-
it "should store my describe db" do
|
|
22
|
-
db_conf = {:connection => {:type => :server_db, :path => 'http://localhost:7474'}}
|
|
23
|
-
subject.db = db_conf
|
|
24
|
-
subject.db.should eq db_conf
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "should respect additional connection parameters" do
|
|
28
|
-
db_conf = {:type => :server_db, :path => 'http://localhost:7474', basic_auth: {username: 'user', password: 'pass'}}
|
|
29
|
-
subject.db = db_conf
|
|
30
|
-
stub_const("Neo4j::Session", double()).should_receive(:open).with(:server_db, 'http://localhost:7474', {basic_auth: {username: 'user', password: 'pass'}}) { true }
|
|
31
|
-
subject.start
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "should default to nil" do
|
|
35
|
-
subject.db.should be_nil
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "should return default configuration" do
|
|
39
|
-
subject.database.should eq(:type => :server_db, :path => 'http://localhost:7475/')
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
require 'neo4j-core'
|
|
3
|
-
require 'database_cleaner/neo4j/transaction'
|
|
4
|
-
|
|
5
|
-
module DatabaseCleaner
|
|
6
|
-
module Neo4j
|
|
7
|
-
|
|
8
|
-
describe Transaction do
|
|
9
|
-
before(:all) do
|
|
10
|
-
DatabaseCleaner[:neo4j, :connection => {:type => :server_db, :path => 'http://localhost:7474'}]
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it_should_behave_like "a generic strategy"
|
|
14
|
-
it_should_behave_like "a generic transaction strategy"
|
|
15
|
-
|
|
16
|
-
describe "start" do
|
|
17
|
-
it "should start a transaction"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
describe "clean" do
|
|
21
|
-
it "should finish a transaction"
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
module DatabaseCleaner
|
|
4
|
-
describe NullStrategy do
|
|
5
|
-
it 'responds to .start' do
|
|
6
|
-
expect { NullStrategy.start }.not_to raise_error(NoMethodError)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it 'responds to .clean' do
|
|
10
|
-
expect { NullStrategy.clean }.not_to raise_error(NoMethodError)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
describe '.cleaning' do
|
|
14
|
-
it 'fails without a block' do
|
|
15
|
-
expect { NullStrategy.cleaning }.to raise_error(LocalJumpError)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it 'no-ops with a block' do
|
|
19
|
-
effect = double
|
|
20
|
-
expect(effect).to receive(:occur).once
|
|
21
|
-
|
|
22
|
-
NullStrategy.cleaning do
|
|
23
|
-
effect.occur
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
require 'ohm'
|
|
3
|
-
require 'database_cleaner/ohm/truncation'
|
|
4
|
-
|
|
5
|
-
module DatabaseCleaner
|
|
6
|
-
module Ohm
|
|
7
|
-
|
|
8
|
-
class Widget < ::Ohm::Model
|
|
9
|
-
attribute :name
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
class Gadget < ::Ohm::Model
|
|
13
|
-
attribute :name
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe Truncation do
|
|
17
|
-
before(:all) do
|
|
18
|
-
config = YAML::load(File.open("#{File.dirname(__FILE__)}/../../../examples/config/redis.yml"))
|
|
19
|
-
::Ohm.connect :url => config['test']['url']
|
|
20
|
-
@redis = ::Ohm.redis
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
before(:each) do
|
|
24
|
-
@redis.flushdb
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "should flush the database" do
|
|
28
|
-
Truncation.new.clean
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def create_widget(attrs={})
|
|
32
|
-
Widget.new({:name => 'some widget'}.merge(attrs)).save
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def create_gadget(attrs={})
|
|
36
|
-
Gadget.new({:name => 'some gadget'}.merge(attrs)).save
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it "truncates all keys by default" do
|
|
40
|
-
create_widget
|
|
41
|
-
create_gadget
|
|
42
|
-
@redis.keys.size.should eq 6
|
|
43
|
-
Truncation.new.clean
|
|
44
|
-
@redis.keys.size.should eq 0
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
context "when keys are provided to the :only option" do
|
|
48
|
-
it "only truncates the specified keys" do
|
|
49
|
-
create_widget
|
|
50
|
-
create_gadget
|
|
51
|
-
@redis.keys.size.should eq 6
|
|
52
|
-
Truncation.new(:only => ['*Widget*']).clean
|
|
53
|
-
@redis.keys.size.should eq 3
|
|
54
|
-
@redis.get('DatabaseCleaner::Ohm::Gadget:id').should eq '1'
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context "when keys are provided to the :except option" do
|
|
59
|
-
it "truncates all but the specified keys" do
|
|
60
|
-
create_widget
|
|
61
|
-
create_gadget
|
|
62
|
-
@redis.keys.size.should eq 6
|
|
63
|
-
Truncation.new(:except => ['*Widget*']).clean
|
|
64
|
-
@redis.keys.size.should eq 3
|
|
65
|
-
@redis.get('DatabaseCleaner::Ohm::Widget:id').should eq '1'
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'redis'
|
|
3
|
-
require 'database_cleaner/redis/base'
|
|
4
|
-
require 'database_cleaner/shared_strategy'
|
|
5
|
-
|
|
6
|
-
module DatabaseCleaner
|
|
7
|
-
describe Redis do
|
|
8
|
-
it { should respond_to(:available_strategies) }
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
module Redis
|
|
12
|
-
class ExampleStrategy
|
|
13
|
-
include ::DatabaseCleaner::Redis::Base
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe ExampleStrategy do
|
|
17
|
-
|
|
18
|
-
it_should_behave_like "a generic strategy"
|
|
19
|
-
it { should respond_to(:db) }
|
|
20
|
-
it { should respond_to(:db=) }
|
|
21
|
-
|
|
22
|
-
context "when passing url" do
|
|
23
|
-
it "should store my describe db" do
|
|
24
|
-
url = 'redis://localhost:6379/2'
|
|
25
|
-
subject.db = 'redis://localhost:6379/2'
|
|
26
|
-
subject.db.should eq url
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
context "when passing connection" do
|
|
31
|
-
it "should store my describe db" do
|
|
32
|
-
connection = ::Redis.new :url => 'redis://localhost:6379/2'
|
|
33
|
-
subject.db = connection
|
|
34
|
-
subject.db.should eq connection
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "should default to :default" do
|
|
39
|
-
subject.db.should eq :default
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
require 'redis'
|
|
3
|
-
require 'database_cleaner/redis/truncation'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
module DatabaseCleaner
|
|
7
|
-
module Redis
|
|
8
|
-
|
|
9
|
-
describe Truncation do
|
|
10
|
-
before(:all) do
|
|
11
|
-
config = YAML::load(File.open("#{File.dirname(__FILE__)}/../../../examples/config/redis.yml"))
|
|
12
|
-
@redis = ::Redis.new :url => config['test']['url']
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
before(:each) do
|
|
16
|
-
@redis.flushdb
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should flush the database" do
|
|
20
|
-
Truncation.new.clean
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def create_widget(attrs={})
|
|
24
|
-
@redis.set 'Widget', 1
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def create_gadget(attrs={})
|
|
28
|
-
@redis.set 'Gadget', 1
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "truncates all keys by default" do
|
|
32
|
-
create_widget
|
|
33
|
-
create_gadget
|
|
34
|
-
@redis.keys.size.should eq 2
|
|
35
|
-
Truncation.new.clean
|
|
36
|
-
@redis.keys.size.should eq 0
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
context "when keys are provided to the :only option" do
|
|
40
|
-
it "only truncates the specified keys" do
|
|
41
|
-
create_widget
|
|
42
|
-
create_gadget
|
|
43
|
-
@redis.keys.size.should eq 2
|
|
44
|
-
Truncation.new(:only => ['Widge*']).clean
|
|
45
|
-
@redis.keys.size.should eq 1
|
|
46
|
-
@redis.get('Gadget').should eq '1'
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
context "when keys are provided to the :except option" do
|
|
51
|
-
it "truncates all but the specified keys" do
|
|
52
|
-
create_widget
|
|
53
|
-
create_gadget
|
|
54
|
-
@redis.keys.size.should eq 2
|
|
55
|
-
Truncation.new(:except => ['Widg*']).clean
|
|
56
|
-
@redis.keys.size.should eq 1
|
|
57
|
-
@redis.get('Widget').should eq '1'
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'database_cleaner/sequel/base'
|
|
3
|
-
require 'database_cleaner/shared_strategy'
|
|
4
|
-
require 'sequel'
|
|
5
|
-
|
|
6
|
-
module DatabaseCleaner
|
|
7
|
-
describe Sequel do
|
|
8
|
-
it { should respond_to(:available_strategies) }
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
module Sequel
|
|
12
|
-
class ExampleStrategy
|
|
13
|
-
include ::DatabaseCleaner::Sequel::Base
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe ExampleStrategy do
|
|
17
|
-
it_should_behave_like "a generic strategy"
|
|
18
|
-
it { should respond_to(:db) }
|
|
19
|
-
it { should respond_to(:db=) }
|
|
20
|
-
|
|
21
|
-
it "should store my desired db" do
|
|
22
|
-
subject.db = :my_db
|
|
23
|
-
subject.db.should eq :my_db
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it "should default to :default" do
|
|
27
|
-
pending "I figure out how to use Sequel and write some real tests for it..."
|
|
28
|
-
subject.db.should eq :default
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'database_cleaner/sequel/deletion'
|
|
3
|
-
require 'database_cleaner/shared_strategy'
|
|
4
|
-
require 'sequel'
|
|
5
|
-
require 'support/active_record/database_setup'
|
|
6
|
-
|
|
7
|
-
module DatabaseCleaner
|
|
8
|
-
module Sequel
|
|
9
|
-
describe Deletion do
|
|
10
|
-
it_should_behave_like "a generic strategy"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
shared_examples 'a Sequel deletion strategy' do
|
|
14
|
-
let(:deletion) do
|
|
15
|
-
d = Deletion.new
|
|
16
|
-
d.db = db
|
|
17
|
-
d
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
context 'when several tables have data' do
|
|
21
|
-
before(:each) do
|
|
22
|
-
db.create_table!(:precious_stones) { primary_key :id }
|
|
23
|
-
db.create_table!(:replaceable_trifles) { primary_key :id }
|
|
24
|
-
db.create_table!(:worthless_junk) { primary_key :id }
|
|
25
|
-
|
|
26
|
-
db[:precious_stones].insert
|
|
27
|
-
db[:replaceable_trifles].insert
|
|
28
|
-
db[:worthless_junk].insert
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
context 'by default' do
|
|
32
|
-
it 'deletes all the tables' do
|
|
33
|
-
d = Deletion.new
|
|
34
|
-
d.db = db
|
|
35
|
-
d.clean
|
|
36
|
-
|
|
37
|
-
expect(db[:replaceable_trifles]).to have(0).rows
|
|
38
|
-
expect(db[:worthless_junk]).to have(0).rows
|
|
39
|
-
expect(db[:precious_stones]).to have(0).rows
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
supported_configurations = [
|
|
46
|
-
{ :url => 'mysql:///', :connection_options => db_config['mysql'] },
|
|
47
|
-
{ :url => 'postgres:///', :connection_options => db_config['postgres'] }
|
|
48
|
-
]
|
|
49
|
-
|
|
50
|
-
supported_configurations.each do |config|
|
|
51
|
-
describe "Sequel deletion (using a #{config[:url]} connection)" do
|
|
52
|
-
let(:db) { ::Sequel.connect(config[:url], config[:connection_options]) }
|
|
53
|
-
|
|
54
|
-
it_behaves_like 'a Sequel deletion strategy'
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'database_cleaner/sequel/transaction'
|
|
3
|
-
require 'database_cleaner/shared_strategy'
|
|
4
|
-
require 'sequel'
|
|
5
|
-
|
|
6
|
-
module DatabaseCleaner
|
|
7
|
-
module Sequel
|
|
8
|
-
describe Transaction do
|
|
9
|
-
it_should_behave_like "a generic strategy"
|
|
10
|
-
it_should_behave_like "a generic transaction strategy"
|
|
11
|
-
|
|
12
|
-
describe "start" do
|
|
13
|
-
it "should start a transaction"
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe "clean" do
|
|
17
|
-
it "should finish a transaction"
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|