database_cleaner 1.1.1 → 1.2.0

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.
Files changed (39) hide show
  1. data/Gemfile.lock +12 -12
  2. data/History.rdoc +17 -0
  3. data/README.markdown +4 -0
  4. data/Rakefile +1 -0
  5. data/VERSION.yml +2 -2
  6. data/examples/Gemfile.lock +12 -12
  7. data/lib/database_cleaner/active_record/base.rb +3 -3
  8. data/lib/database_cleaner/active_record/deletion.rb +19 -36
  9. data/lib/database_cleaner/active_record/truncation.rb +40 -67
  10. data/lib/database_cleaner/base.rb +3 -3
  11. data/lib/database_cleaner/configuration.rb +1 -1
  12. data/lib/database_cleaner/data_mapper/base.rb +1 -1
  13. data/lib/database_cleaner/data_mapper/truncation.rb +22 -2
  14. data/lib/database_cleaner/generic/truncation.rb +4 -3
  15. data/lib/database_cleaner/mongo_mapper/base.rb +1 -1
  16. data/lib/database_cleaner/moped/base.rb +2 -2
  17. data/lib/database_cleaner/redis/base.rb +1 -1
  18. data/spec/database_cleaner/active_record/base_spec.rb +10 -10
  19. data/spec/database_cleaner/active_record/transaction_spec.rb +1 -1
  20. data/spec/database_cleaner/active_record/truncation/mysql2_spec.rb +2 -2
  21. data/spec/database_cleaner/active_record/truncation/mysql_spec.rb +2 -2
  22. data/spec/database_cleaner/active_record/truncation/postgresql_spec.rb +2 -2
  23. data/spec/database_cleaner/active_record/truncation/shared_fast_truncation.rb +2 -2
  24. data/spec/database_cleaner/active_record/truncation/sqlite3_spec.rb +42 -0
  25. data/spec/database_cleaner/active_record/truncation_spec.rb +50 -29
  26. data/spec/database_cleaner/base_spec.rb +44 -48
  27. data/spec/database_cleaner/configuration_spec.rb +74 -74
  28. data/spec/database_cleaner/couch_potato/truncation_spec.rb +2 -2
  29. data/spec/database_cleaner/data_mapper/base_spec.rb +2 -2
  30. data/spec/database_cleaner/generic/base_spec.rb +1 -1
  31. data/spec/database_cleaner/generic/truncation_spec.rb +26 -16
  32. data/spec/database_cleaner/mongo_mapper/base_spec.rb +2 -2
  33. data/spec/database_cleaner/moped/truncation_spec.rb +1 -1
  34. data/spec/database_cleaner/ohm/truncation_spec.rb +8 -8
  35. data/spec/database_cleaner/redis/base_spec.rb +2 -2
  36. data/spec/database_cleaner/redis/truncation_spec.rb +8 -8
  37. data/spec/database_cleaner/sequel/base_spec.rb +2 -2
  38. data/spec/support/active_record/sqlite3_setup.rb +40 -0
  39. metadata +4 -2
@@ -6,10 +6,10 @@ module DatabaseCleaner
6
6
  module CouchPotato
7
7
 
8
8
  describe Truncation do
9
- let(:database) { mock('database') }
9
+ let(:database) { double('database') }
10
10
 
11
11
  before(:each) do
12
- ::CouchPotato.stub!(:couchrest_database).and_return(database)
12
+ ::CouchPotato.stub(:couchrest_database).and_return(database)
13
13
  end
14
14
 
15
15
  it "should re-create the database" do
@@ -19,11 +19,11 @@ module DatabaseCleaner
19
19
 
20
20
  it "should store my desired db" do
21
21
  subject.db = :my_db
22
- subject.db.should == :my_db
22
+ subject.db.should eq :my_db
23
23
  end
24
24
 
25
25
  it "should default to :default" do
26
- subject.db.should == :default
26
+ subject.db.should eq :default
27
27
  end
28
28
  end
29
29
  end
@@ -16,7 +16,7 @@ module ::DatabaseCleaner
16
16
 
17
17
  it_should_behave_like "a generic strategy"
18
18
 
19
- its(:db) { should == :default }
19
+ its(:db) { should eq :default }
20
20
  end
21
21
  end
22
22
  end
@@ -30,12 +30,22 @@ module ::DatabaseCleaner
30
30
  end
31
31
 
32
32
  describe TruncationExample do
33
- its(:start) { expect{ subject }.to_not raise_error }
34
- its(:clean) { expect{ subject }.to raise_error(NotImplementedError) }
33
+ subject(:truncation_example) { TruncationExample.new }
34
+
35
+ it "will start" do
36
+ expect { truncation_example.start }.to_not raise_error
37
+ end
38
+
39
+ it "expects clean to be implemented later" do
40
+ expect { truncation_example.clean }.to raise_error(NotImplementedError)
41
+ end
35
42
 
36
43
  context "private methods" do
37
44
  it { should_not respond_to(:tables_to_truncate) }
38
- its(:tables_to_truncate) { expect{ subject }.to raise_error(NotImplementedError) }
45
+
46
+ it 'expects #tables_to_truncate to be implemented later' do
47
+ expect{ truncation_example.send :tables_to_truncate }.to raise_error(NotImplementedError)
48
+ end
39
49
 
40
50
  it { should_not respond_to(:migration_storage_names) }
41
51
  its(:migration_storage_names) { should be_empty }
@@ -50,47 +60,47 @@ module ::DatabaseCleaner
50
60
 
51
61
  it { expect{ TruncationExample.new( { :a_random_param => "should raise ArgumentError" } ) }.to raise_error(ArgumentError) }
52
62
  it { expect{ TruncationExample.new( { :except => "something",:only => "something else" } ) }.to raise_error(ArgumentError) }
53
- it { expect{ TruncationExample.new( { :only => "something" } ) }.to_not raise_error(ArgumentError) }
54
- it { expect{ TruncationExample.new( { :except => "something" } ) }.to_not raise_error(ArgumentError) }
55
- it { expect{ TruncationExample.new( { :pre_count => "something" } ) }.to_not raise_error(ArgumentError) }
56
- it { expect{ TruncationExample.new( { :reset_ids => "something" } ) }.to_not raise_error(ArgumentError) }
63
+ it { expect{ TruncationExample.new( { :only => "something" } ) }.to_not raise_error }
64
+ it { expect{ TruncationExample.new( { :except => "something" } ) }.to_not raise_error }
65
+ it { expect{ TruncationExample.new( { :pre_count => "something" } ) }.to_not raise_error }
66
+ it { expect{ TruncationExample.new( { :reset_ids => "something" } ) }.to_not raise_error }
57
67
 
58
68
  context "" do
59
69
  subject { TruncationExample.new( { :only => ["something"] } ) }
60
- its(:only) { should == ["something"] }
61
- its(:except) { should == [] }
70
+ its(:only) { should eq ["something"] }
71
+ its(:except) { should eq [] }
62
72
  end
63
73
 
64
74
  context "" do
65
75
  subject { TruncationExample.new( { :except => ["something"] } ) }
66
- its(:only) { should == nil }
76
+ its(:only) { should eq nil }
67
77
  its(:except) { should include("something") }
68
78
  end
69
79
 
70
80
  context "" do
71
81
  subject { TruncationExample.new( { :reset_ids => ["something"] } ) }
72
- its(:reset_ids?) { should == true }
82
+ its(:reset_ids?) { should eq true }
73
83
  end
74
84
 
75
85
  context "" do
76
86
  subject { TruncationExample.new( { :reset_ids => nil } ) }
77
- its(:reset_ids?) { should == false }
87
+ its(:reset_ids?) { should eq false }
78
88
  end
79
89
 
80
90
  context "" do
81
91
  subject { TruncationExample.new( { :pre_count => ["something"] } ) }
82
- its(:pre_count?) { should == true }
92
+ its(:pre_count?) { should eq true }
83
93
  end
84
94
 
85
95
  context "" do
86
96
  subject { TruncationExample.new( { :pre_count => nil } ) }
87
- its(:pre_count?) { should == false }
97
+ its(:pre_count?) { should eq false }
88
98
  end
89
99
 
90
100
  context "" do
91
101
  subject { MigrationExample.new }
92
- its(:only) { should == nil }
93
- its(:except) { should == %w[migration_storage_name] }
102
+ its(:only) { should eq nil }
103
+ its(:except) { should eq %w[migration_storage_name] }
94
104
  end
95
105
 
96
106
  context "" do
@@ -21,11 +21,11 @@ module DatabaseCleaner
21
21
 
22
22
  it "should store my desired db" do
23
23
  subject.db = :my_db
24
- subject.db.should == :my_db
24
+ subject.db.should eq :my_db
25
25
  end
26
26
 
27
27
  it "should default to :default" do
28
- subject.db.should == :default
28
+ subject.db.should eq :default
29
29
  end
30
30
  end
31
31
  end
@@ -8,7 +8,7 @@ module DatabaseCleaner
8
8
 
9
9
  describe Truncation do
10
10
  let(:args) {{}}
11
- let(:truncation) { described_class.new(args).tap { |t| t.db=@db } }
11
+ let(:truncation) { described_class.new(args) }
12
12
  #doing this in the file root breaks autospec, doing it before(:all) just fails the specs
13
13
  before(:all) do
14
14
  @test_db = 'database_cleaner_specs'
@@ -39,19 +39,19 @@ module DatabaseCleaner
39
39
  it "truncates all keys by default" do
40
40
  create_widget
41
41
  create_gadget
42
- @redis.keys.size.should == 6
42
+ @redis.keys.size.should eq 6
43
43
  Truncation.new.clean
44
- @redis.keys.size.should == 0
44
+ @redis.keys.size.should eq 0
45
45
  end
46
46
 
47
47
  context "when keys are provided to the :only option" do
48
48
  it "only truncates the specified keys" do
49
49
  create_widget
50
50
  create_gadget
51
- @redis.keys.size.should == 6
51
+ @redis.keys.size.should eq 6
52
52
  Truncation.new(:only => ['*Widget*']).clean
53
- @redis.keys.size.should == 3
54
- @redis.get('DatabaseCleaner::Ohm::Gadget:id').should == '1'
53
+ @redis.keys.size.should eq 3
54
+ @redis.get('DatabaseCleaner::Ohm::Gadget:id').should eq '1'
55
55
  end
56
56
  end
57
57
 
@@ -59,10 +59,10 @@ module DatabaseCleaner
59
59
  it "truncates all but the specified keys" do
60
60
  create_widget
61
61
  create_gadget
62
- @redis.keys.size.should == 6
62
+ @redis.keys.size.should eq 6
63
63
  Truncation.new(:except => ['*Widget*']).clean
64
- @redis.keys.size.should == 3
65
- @redis.get('DatabaseCleaner::Ohm::Widget:id').should == '1'
64
+ @redis.keys.size.should eq 3
65
+ @redis.get('DatabaseCleaner::Ohm::Widget:id').should eq '1'
66
66
  end
67
67
  end
68
68
  end
@@ -21,11 +21,11 @@ module DatabaseCleaner
21
21
  it "should store my describe db" do
22
22
  url = 'redis://localhost:6379/2'
23
23
  subject.db = 'redis://localhost:6379/2'
24
- subject.db.should == url
24
+ subject.db.should eq url
25
25
  end
26
26
 
27
27
  it "should default to :default" do
28
- subject.db.should == :default
28
+ subject.db.should eq :default
29
29
  end
30
30
  end
31
31
  end
@@ -31,19 +31,19 @@ module DatabaseCleaner
31
31
  it "truncates all keys by default" do
32
32
  create_widget
33
33
  create_gadget
34
- @redis.keys.size.should == 2
34
+ @redis.keys.size.should eq 2
35
35
  Truncation.new.clean
36
- @redis.keys.size.should == 0
36
+ @redis.keys.size.should eq 0
37
37
  end
38
38
 
39
39
  context "when keys are provided to the :only option" do
40
40
  it "only truncates the specified keys" do
41
41
  create_widget
42
42
  create_gadget
43
- @redis.keys.size.should == 2
43
+ @redis.keys.size.should eq 2
44
44
  Truncation.new(:only => ['Widge*']).clean
45
- @redis.keys.size.should == 1
46
- @redis.get('Gadget').should == '1'
45
+ @redis.keys.size.should eq 1
46
+ @redis.get('Gadget').should eq '1'
47
47
  end
48
48
  end
49
49
 
@@ -51,10 +51,10 @@ module DatabaseCleaner
51
51
  it "truncates all but the specified keys" do
52
52
  create_widget
53
53
  create_gadget
54
- @redis.keys.size.should == 2
54
+ @redis.keys.size.should eq 2
55
55
  Truncation.new(:except => ['Widg*']).clean
56
- @redis.keys.size.should == 1
57
- @redis.get('Widget').should == '1'
56
+ @redis.keys.size.should eq 1
57
+ @redis.get('Widget').should eq '1'
58
58
  end
59
59
  end
60
60
  end
@@ -20,12 +20,12 @@ module DatabaseCleaner
20
20
 
21
21
  it "should store my desired db" do
22
22
  subject.db = :my_db
23
- subject.db.should == :my_db
23
+ subject.db.should eq :my_db
24
24
  end
25
25
 
26
26
  it "should default to :default" do
27
27
  pending "I figure out how to use Sequel and write some real tests for it..."
28
- subject.db.should == :default
28
+ subject.db.should eq :default
29
29
  end
30
30
  end
31
31
  end
@@ -0,0 +1,40 @@
1
+ require 'support/active_record/database_setup'
2
+ require 'support/active_record/schema_setup'
3
+
4
+ module SQLite3Helper
5
+ puts "Active Record #{ActiveRecord::VERSION::STRING}, sqlite3"
6
+
7
+ # ActiveRecord::Base.logger = Logger.new(STDERR)
8
+
9
+ def config
10
+ db_config['sqlite3']
11
+ end
12
+
13
+ def create_db
14
+ @encoding = config['encoding'] || ENV['CHARSET'] || 'utf8'
15
+ begin
16
+ establish_connection(config.merge('database' => 'sqlite3', 'schema_search_path' => 'public'))
17
+ rescue Exception => e
18
+ $stderr.puts e, *(e.backtrace)
19
+ $stderr.puts "Couldn't create database for #{config.inspect}"
20
+ end
21
+ end
22
+
23
+ def establish_connection config = config
24
+ ActiveRecord::Base.establish_connection(config)
25
+ end
26
+
27
+ def active_record_sqlite3_setup
28
+ create_db
29
+ establish_connection
30
+ load_schema
31
+ end
32
+
33
+ def active_record_sqlite3_connection
34
+ ActiveRecord::Base.connection
35
+ end
36
+ end
37
+
38
+ RSpec.configure do |c|
39
+ c.include SQLite3Helper
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: database_cleaner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-01 00:00:00.000000000 Z
12
+ date: 2013-10-09 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Strategies for cleaning databases. Can be used to ensure a clean state
15
15
  for testing.
@@ -97,6 +97,7 @@ files:
97
97
  - spec/database_cleaner/active_record/truncation/mysql_spec.rb
98
98
  - spec/database_cleaner/active_record/truncation/postgresql_spec.rb
99
99
  - spec/database_cleaner/active_record/truncation/shared_fast_truncation.rb
100
+ - spec/database_cleaner/active_record/truncation/sqlite3_spec.rb
100
101
  - spec/database_cleaner/active_record/truncation_spec.rb
101
102
  - spec/database_cleaner/base_spec.rb
102
103
  - spec/database_cleaner/configuration_spec.rb
@@ -127,6 +128,7 @@ files:
127
128
  - spec/support/active_record/mysql_setup.rb
128
129
  - spec/support/active_record/postgresql_setup.rb
129
130
  - spec/support/active_record/schema_setup.rb
131
+ - spec/support/active_record/sqlite3_setup.rb
130
132
  - LICENSE
131
133
  - TODO
132
134
  homepage: http://github.com/bmabey/database_cleaner