database_cleaner 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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