database_rewinder 0.9.1 → 0.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b65d98970a4cf3742c0ea0254aedb60cc3d64260f9b3bbca199bad7880a178aa
4
- data.tar.gz: 131690c4430bc96b9fb06d00eaf6474bbe23f9bb038e44f18c00240f5ff9372d
3
+ metadata.gz: dd5388515381629b73558d7daa3907c06eb59ce55fbc6b6e5bdfc8a93e6b1872
4
+ data.tar.gz: 775cc8b24d4808317b4a521e3fed5568380d6222837543141d71a7ccf264a595
5
5
  SHA512:
6
- metadata.gz: 02cdab1001bce6f92944c765d696ee94e6ea2cdddb4ffe9b438a184d62fd0adb8ba9cb2521d1c3a655cfbe52a653ab62f56f3259244cc55ea5f420240aa814be
7
- data.tar.gz: 11a8155b683374275680fbb16c03b2d6f5f8af4fa51310e6e05e49b1330f6dbf5ba8793643617085cb6d2765372c61d5ef7a0887639e351554b52492c68e0417
6
+ metadata.gz: ad1ae15b0ab5bd04ffd4908573b407a86a39ed2e35e5e2ae15b3502ba0dcfd3cb5edfa113759341f93923be88b98676597d53d268f673bbe846c6eba59507348
7
+ data.tar.gz: cdc9a216be4b1a234df1dd83ad89234fb4c43bed3d4f4dec41a20a04526b1b0569f4c680d0ca64623ae4276253a2d96dd0637d5eee12192e51e670372b5269ce
@@ -1,8 +1,14 @@
1
1
  language: ruby
2
2
 
3
+ addons:
4
+ postgresql: '9.4'
5
+ mysql: '5.7'
6
+
3
7
  before_install:
4
- - gem update --system
5
- - gem install bundler
8
+ - gem i rubygems-update -v '<3' && update_rubygems
9
+ - "ruby -e 'exit RUBY_VERSION.to_f >= 2.6' && gem up bundler || gem i bundler -v '<2'"
10
+ - sudo service mysql restart
11
+
6
12
 
7
13
  cache: bundler
8
14
 
@@ -12,36 +18,42 @@ env:
12
18
  - DB=postgresql
13
19
 
14
20
  rvm:
15
- - 2.5.1
16
- - 2.4.4
17
- - 2.3.7
18
- - 2.2.10
21
+ - 2.6.3
19
22
 
20
23
  gemfile:
21
24
  - gemfiles/rails_52.gemfile
22
- - gemfiles/rails_51.gemfile
23
- - gemfiles/rails_50.gemfile
24
- - gemfiles/rails_42.gemfile
25
+ - gemfiles/rails_60.gemfile
25
26
 
26
27
  sudo: false
27
28
 
29
+ dist: xenial
30
+
28
31
  matrix:
29
32
  include:
30
- - rvm: 2.5.1
33
+ - rvm: 2.6.3
31
34
  gemfile: gemfiles/rails_edge.gemfile
32
- env: DB=sqlite3
33
- - rvm: 2.3.7
35
+ env: DB=postgresql
36
+ - rvm: 2.5.5
37
+ gemfile: gemfiles/rails_51.gemfile
38
+ env: DB=postgresql
39
+ - rvm: 2.4.6
40
+ gemfile: gemfiles/rails_50.gemfile
41
+ env: DB=postgresql
42
+ - rvm: 2.3.8
34
43
  gemfile: gemfiles/rails_41.gemfile
35
- env: DB=sqlite3
36
- - rvm: 2.3.7
44
+ env: DB=postgresql
45
+ - rvm: 2.3.8
37
46
  gemfile: gemfiles/rails_40.gemfile
38
- env: DB=sqlite3
47
+ env: DB=postgresql
48
+ - rvm: 2.2.10
49
+ gemfile: gemfiles/rails_52.gemfile
50
+ env: DB=postgresql
39
51
  - rvm: 2.1.10
40
52
  gemfile: gemfiles/rails_42.gemfile
41
- env: DB=sqlite3
53
+ env: DB=postgresql
42
54
  - rvm: 2.0.0
43
55
  gemfile: gemfiles/rails_42.gemfile
44
- env: DB=sqlite3
56
+ env: DB=postgresql
45
57
 
46
58
  allow_failures:
47
59
  - gemfile: gemfiles/rails_edge.gemfile
@@ -6,7 +6,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
6
 
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = "database_rewinder"
9
- spec.version = '0.9.1'
9
+ spec.version = '0.9.2'
10
10
  spec.authors = ["Akira Matsuda"]
11
11
  spec.email = ["ronnie@dio.jp"]
12
12
  spec.description = "A minimalist's tiny and ultra-fast database cleaner"
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency 'bundler'
23
23
  spec.add_development_dependency "rake"
24
24
  spec.add_development_dependency 'test-unit-rails'
25
25
  spec.add_development_dependency 'rails'
@@ -3,6 +3,7 @@ source 'https://rubygems.org'
3
3
  gem 'rails', '~> 4.0.0'
4
4
  gem 'pg', '~> 0.21'
5
5
  gem 'mysql2', '~> 0.3.10'
6
+ gem 'sqlite3', '< 1.4'
6
7
  gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7'
7
8
 
8
9
  gemspec path: '../'
@@ -3,6 +3,7 @@ source 'https://rubygems.org'
3
3
  gem 'rails', '~> 4.1.0'
4
4
  gem 'pg', '~> 0.21'
5
5
  gem 'mysql2', '~> 0.3.13'
6
+ gem 'sqlite3', '< 1.4'
6
7
  gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7'
7
8
 
8
9
  gemspec path: '../'
@@ -3,6 +3,7 @@ source 'https://rubygems.org'
3
3
  gem 'rails', '~> 4.2.0'
4
4
  gem 'pg', '~> 0.21'
5
5
  gem 'mysql2', '~> 0.4.0'
6
+ gem 'sqlite3', '< 1.4'
6
7
  gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7'
7
8
 
8
9
  gemspec path: '../'
@@ -2,5 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rails', '~> 5.0.0'
4
4
  gem 'pg', '~> 0.21'
5
+ gem 'sqlite3', '< 1.4'
5
6
 
6
7
  gemspec path: '../'
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rails', '~> 5.2.0'
3
+ gem 'rails', '~> 5.2.0', git: 'https://github.com/rails/rails', branch: '5-2-stable'
4
4
  gem 'pg', '~> 0.21'
5
5
 
6
6
  gemspec path: '../'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 6.0.0'
4
+ gem 'selenium-webdriver'
5
+
6
+ gemspec path: '../'
@@ -5,5 +5,6 @@ git_source(:github) do |repo_name|
5
5
  end
6
6
 
7
7
  gem 'rails', github: 'rails/rails'
8
+ gem 'selenium-webdriver'
8
9
 
9
10
  gemspec path: '../'
@@ -48,7 +48,7 @@ module DatabaseRewinder
48
48
  end or return
49
49
 
50
50
  sql.split(';').each do |statement|
51
- match = statement.match(/\A\s*INSERT(?:\s+IGNORE)?(?:\s+INTO)?\s+(?:\.*[`"]?([^.\s`"]+)[`"]?)*/i)
51
+ match = statement.match(/\A\s*INSERT(?:\s+IGNORE)?(?:\s+INTO)?\s+(?:\.*[`"]?([^.\s`"(]+)[`"]?)*/i)
52
52
  next unless match
53
53
 
54
54
  table = match[1]
@@ -1,45 +1,44 @@
1
- sqlite3: &sqlite3
1
+ <% case ENV['DB']
2
+ when 'sqlite3' %>
3
+ test:
2
4
  adapter: sqlite3
3
5
  database: db/database_rewinder_test.sqlite3
4
6
  pool: 5
5
7
  timeout: 5000
6
8
 
7
- sqlite3_2: &sqlite3_2
9
+ test2:
8
10
  adapter: sqlite3
9
11
  database: db/database_rewinder_test2.sqlite3
10
12
  pool: 5
11
13
  timeout: 5000
12
14
 
13
- mysql: &mysql
15
+ <% when 'mysql' %>
16
+ test:
14
17
  adapter: mysql2
15
18
  host: localhost
16
19
  username: root
17
20
  password:
18
21
  database: database_rewinder_test
19
22
 
20
- mysql_2: &mysql_2
23
+ test2:
21
24
  adapter: mysql2
22
25
  host: localhost
23
26
  username: root
24
27
  password:
25
28
  database: database_rewinder_test2
26
29
 
27
- postgresql: &postgresql
30
+ <% when 'postgresql' %>
31
+ test:
28
32
  adapter: postgresql
29
33
  host: localhost
30
34
  username: postgres
31
35
  password:
32
36
  database: database_rewinder_test
33
37
 
34
- postgresql_2: &postgresql_2
38
+ test2:
35
39
  adapter: postgresql
36
40
  host: localhost
37
41
  username: postgres
38
42
  password:
39
43
  database: database_rewinder_test2
40
-
41
- test:
42
- <<: *<%= ENV['DB'] %>
43
-
44
- test2:
45
- <<: *<%= "#{ENV['DB']}_2" %>
44
+ <% end %>
@@ -76,6 +76,25 @@ class DatabaseRewinder::DatabaseRewinderTest < ActiveSupport::TestCase
76
76
  DatabaseRewinder.database_configuration = nil
77
77
  end
78
78
 
79
+ sub_test_case 'via General Active Record insertions' do
80
+ setup do
81
+ DatabaseRewinder.cleaners
82
+ @cleaner = DatabaseRewinder.instance_variable_get(:'@cleaners').detect {|c| c.db == (ENV['DB'] == 'sqlite3' ? 'db/database_rewinder_test.sqlite3' : 'database_rewinder_test')}
83
+ end
84
+
85
+ test 'create' do
86
+ Bar.create name: 'bar1'
87
+ assert_equal ['bars'], @cleaner.inserted_tables
88
+ end
89
+
90
+ if ActiveRecord::VERSION::STRING >= '6'
91
+ test 'insert_all' do
92
+ Bar.insert_all! [{name: 'bar1'}]
93
+ assert_equal ['bars'], @cleaner.inserted_tables
94
+ end
95
+ end
96
+ end
97
+
79
98
  sub_test_case 'common database' do
80
99
  test 'include database name' do
81
100
  perform_insert 'INSERT INTO "database"."foos" ("name") VALUES (?)'
@@ -95,6 +114,10 @@ class DatabaseRewinder::DatabaseRewinderTest < ActiveSupport::TestCase
95
114
  SQL
96
115
  assert_equal ['foos'], @cleaner.inserted_tables
97
116
  end
117
+ test 'without spaces between table name and columns list' do
118
+ perform_insert 'INSERT INTO foos(name) VALUES (?)'
119
+ assert_equal ['foos'], @cleaner.inserted_tables
120
+ end
98
121
 
99
122
  test 'with multi statement query' do
100
123
  perform_insert <<-SQL
@@ -17,30 +17,30 @@ load 'active_record/railties/databases.rake'
17
17
 
18
18
  require 'active_record/base'
19
19
  ActiveRecord::Tasks::DatabaseTasks.root ||= Rails.root
20
- ActiveRecord::Tasks::DatabaseTasks.drop_current ENV['DB']
21
- ActiveRecord::Tasks::DatabaseTasks.drop_current "#{ENV['DB']}_2"
22
- ActiveRecord::Tasks::DatabaseTasks.create_current ENV['DB']
23
- ActiveRecord::Tasks::DatabaseTasks.create_current "#{ENV['DB']}_2"
20
+ ActiveRecord::Tasks::DatabaseTasks.drop_current 'test'
21
+ ActiveRecord::Tasks::DatabaseTasks.drop_current 'test2'
22
+ ActiveRecord::Tasks::DatabaseTasks.create_current 'test'
23
+ ActiveRecord::Tasks::DatabaseTasks.create_current 'test2'
24
24
 
25
25
  # models
26
26
  class Foo < ActiveRecord::Base; end
27
27
  class Bar < ActiveRecord::Base; end
28
28
  class Baz < ActiveRecord::Base; end
29
29
  class Quu < ActiveRecord::Base
30
- establish_connection "#{ENV['DB']}_2".to_sym
30
+ establish_connection :test2
31
31
  end
32
32
 
33
33
  # migrations
34
34
  class CreateAllTables < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
35
35
  def self.up
36
- ActiveRecord::Base.establish_connection ENV['DB'].to_sym
37
- create_table(:bars) {|t| t.string :name }
36
+ ActiveRecord::Base.establish_connection :test
37
+ create_table(:bars) {|t| t.string :name; t.index :name, unique: true }
38
38
  create_table(:foos) {|t| t.string :name; t.references :bar, foreign_key: true }
39
39
  create_table(:bazs) {|t| t.string :name }
40
40
 
41
- test2_connection = ActiveRecord::Base.establish_connection("#{ENV['DB']}_2".to_sym).connection
41
+ test2_connection = ActiveRecord::Base.establish_connection(:test2).connection
42
42
  test2_connection.create_table(:quus) {|t| t.string :name }
43
- ActiveRecord::Base.establish_connection ENV['DB'].to_sym
43
+ ActiveRecord::Base.establish_connection :test
44
44
  end
45
45
 
46
46
  def self.down
@@ -48,8 +48,8 @@ class CreateAllTables < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migrat
48
48
  drop_table(:bars) {|t| t.string :name }
49
49
  drop_table(:bazs) {|t| t.string :name }
50
50
 
51
- test2_connection = ActiveRecord::Base.establish_connection("#{ENV['DB']}_2".to_sym).connection
51
+ test2_connection = ActiveRecord::Base.establish_connection(:test2).connection
52
52
  test2_connection.drop_table :quus
53
- ActiveRecord::Base.establish_connection ENV['DB'].to_sym
53
+ ActiveRecord::Base.establish_connection :test
54
54
  end
55
55
  end
@@ -10,6 +10,10 @@ require 'active_record'
10
10
  require 'database_rewinder'
11
11
  require 'fake_app'
12
12
  require 'test/unit/rails/test_help'
13
+ begin
14
+ require 'selenium/webdriver' # rails 6
15
+ rescue LoadError
16
+ end
13
17
 
14
18
  migrated = ActiveRecord::Base.connection.respond_to?(:data_source_exists?) ? ActiveRecord::Base.connection.data_source_exists?('foos') : ActiveRecord::Base.connection.table_exists?('foos')
15
19
  CreateAllTables.up unless migrated
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: database_rewinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Matsuda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-18 00:00:00.000000000 Z
11
+ date: 2020-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -128,6 +128,7 @@ files:
128
128
  - gemfiles/rails_50.gemfile
129
129
  - gemfiles/rails_51.gemfile
130
130
  - gemfiles/rails_52.gemfile
131
+ - gemfiles/rails_60.gemfile
131
132
  - gemfiles/rails_edge.gemfile
132
133
  - lib/database_rewinder.rb
133
134
  - lib/database_rewinder/active_record_monkey.rb
@@ -162,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
163
  - !ruby/object:Gem::Version
163
164
  version: '0'
164
165
  requirements: []
165
- rubygems_version: 3.0.0.beta3
166
+ rubygems_version: 3.0.3
166
167
  signing_key:
167
168
  specification_version: 4
168
169
  summary: A minimalist's tiny and ultra-fast database cleaner