lol_dba 2.1.5 → 2.1.6
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 +4 -4
- data/.codeclimate.yml +179 -0
- data/.gitignore +1 -1
- data/.rspec +2 -0
- data/.rubocop.yml +7 -0
- data/.travis.yml +16 -9
- data/Appraisals +19 -12
- data/Gemfile +1 -8
- data/Gemfile.lock +60 -59
- data/README.md +5 -2
- data/Rakefile +4 -4
- data/bin/lol_dba +2 -2
- data/gemfiles/rails_3_2.gemfile +0 -3
- data/gemfiles/rails_3_2.gemfile.lock +33 -31
- data/gemfiles/rails_4_0.gemfile +0 -3
- data/gemfiles/rails_4_0.gemfile.lock +31 -27
- data/gemfiles/rails_4_1.gemfile +0 -3
- data/gemfiles/rails_4_1.gemfile.lock +29 -26
- data/gemfiles/rails_4_2.gemfile +0 -3
- data/gemfiles/rails_4_2.gemfile.lock +52 -48
- data/gemfiles/rails_5_0.gemfile +0 -3
- data/gemfiles/rails_5_0.gemfile.lock +55 -51
- data/gemfiles/rails_5_1.gemfile +0 -3
- data/gemfiles/rails_5_1.gemfile.lock +57 -53
- data/gemfiles/rails_5_2.gemfile +9 -0
- data/gemfiles/rails_5_2.gemfile.lock +115 -0
- data/lib/lol_dba/cli.rb +26 -15
- data/lib/lol_dba/index_finding/belongs_to.rb +32 -0
- data/lib/lol_dba/index_finding/error_logging.rb +15 -0
- data/lib/lol_dba/index_finding/has_and_belongs_to_many.rb +20 -0
- data/lib/lol_dba/index_finding/has_many.rb +47 -0
- data/lib/lol_dba/index_finding/index_finder.rb +81 -0
- data/lib/lol_dba/index_finding/migration_formatter.rb +50 -0
- data/lib/lol_dba/index_finding/relation_inspector.rb +30 -0
- data/lib/lol_dba/index_finding/relation_inspector_factory.rb +13 -0
- data/lib/lol_dba/rails_compatibility.rb +47 -0
- data/lib/lol_dba/railtie.rb +2 -2
- data/lib/lol_dba/sql_migrations/migration.rb +51 -0
- data/lib/lol_dba/sql_migrations/migration_mocker.rb +70 -0
- data/lib/lol_dba/sql_migrations/sql_generator.rb +49 -0
- data/lib/lol_dba/sql_migrations/writer.rb +29 -0
- data/lib/lol_dba/version.rb +1 -1
- data/lib/lol_dba.rb +14 -188
- data/lib/tasks/lol_dba.rake +7 -8
- data/lol_dba.gemspec +19 -16
- data/spec/associations_index_spec.rb +43 -56
- data/spec/fixtures/app/models/address.rb +0 -1
- data/spec/fixtures/app/models/billable_week.rb +1 -3
- data/spec/fixtures/app/models/company.rb +0 -1
- data/spec/fixtures/app/models/complex_billable_week.rb +0 -1
- data/spec/fixtures/app/models/complex_timesheet.rb +0 -1
- data/spec/fixtures/app/models/country.rb +1 -1
- data/spec/fixtures/app/models/favourite.rb +0 -2
- data/spec/fixtures/app/models/freelancer.rb +1 -3
- data/spec/fixtures/app/models/gift.rb +0 -2
- data/spec/fixtures/app/models/god.rb +1 -1
- data/spec/fixtures/app/models/project.rb +0 -2
- data/spec/fixtures/app/models/timesheet.rb +1 -3
- data/spec/fixtures/app/models/user.rb +0 -2
- data/spec/fixtures/app/models/worker.rb +0 -1
- data/spec/fixtures/app/models/worker_user.rb +2 -3
- data/spec/fixtures/schema.rb +53 -53
- data/spec/migration_formatter_spec.rb +66 -0
- data/spec/spec_helper.rb +17 -9
- data/spec/sql_generator_spec.rb +9 -0
- metadata +88 -19
- data/lib/lol_dba/migration.rb +0 -40
- data/lib/lol_dba/sql_generator.rb +0 -96
- data/lib/lol_dba/writer.rb +0 -25
- data/spec/common_function_spec.rb +0 -96
metadata
CHANGED
@@ -1,26 +1,25 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lol_dba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Diego Plentz
|
8
|
-
- Elad Meidar
|
9
|
-
- Eric Davis
|
10
|
-
- Muness Alrubaie
|
11
|
-
- Vladimir Sharshov
|
12
8
|
autorequire:
|
13
9
|
bindir: bin
|
14
10
|
cert_chain: []
|
15
|
-
date:
|
11
|
+
date: 2019-04-03 00:00:00.000000000 Z
|
16
12
|
dependencies:
|
17
13
|
- !ruby/object:Gem::Dependency
|
18
|
-
name:
|
14
|
+
name: actionpack
|
19
15
|
requirement: !ruby/object:Gem::Requirement
|
20
16
|
requirements:
|
21
17
|
- - ">="
|
22
18
|
- !ruby/object:Gem::Version
|
23
19
|
version: '3.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '6.0'
|
24
23
|
type: :runtime
|
25
24
|
prerelease: false
|
26
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -28,13 +27,19 @@ dependencies:
|
|
28
27
|
- - ">="
|
29
28
|
- !ruby/object:Gem::Version
|
30
29
|
version: '3.0'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '6.0'
|
31
33
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
34
|
+
name: activerecord
|
33
35
|
requirement: !ruby/object:Gem::Requirement
|
34
36
|
requirements:
|
35
37
|
- - ">="
|
36
38
|
- !ruby/object:Gem::Version
|
37
39
|
version: '3.0'
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '6.0'
|
38
43
|
type: :runtime
|
39
44
|
prerelease: false
|
40
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,6 +47,9 @@ dependencies:
|
|
42
47
|
- - ">="
|
43
48
|
- !ruby/object:Gem::Version
|
44
49
|
version: '3.0'
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '6.0'
|
45
53
|
- !ruby/object:Gem::Dependency
|
46
54
|
name: railties
|
47
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -49,6 +57,9 @@ dependencies:
|
|
49
57
|
- - ">="
|
50
58
|
- !ruby/object:Gem::Version
|
51
59
|
version: '3.0'
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '6.0'
|
52
63
|
type: :runtime
|
53
64
|
prerelease: false
|
54
65
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -56,8 +67,53 @@ dependencies:
|
|
56
67
|
- - ">="
|
57
68
|
- !ruby/object:Gem::Version
|
58
69
|
version: '3.0'
|
70
|
+
- - "<"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '6.0'
|
59
73
|
- !ruby/object:Gem::Dependency
|
60
74
|
name: appraisal
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '2.2'
|
80
|
+
type: :development
|
81
|
+
prerelease: false
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - "~>"
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '2.2'
|
87
|
+
- !ruby/object:Gem::Dependency
|
88
|
+
name: simplecov
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - "~>"
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0.1'
|
94
|
+
type: :development
|
95
|
+
prerelease: false
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - "~>"
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0.1'
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: sqlite3
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: 1.3.5
|
108
|
+
type: :development
|
109
|
+
prerelease: false
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - "~>"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 1.3.5
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: rspec-rails
|
61
117
|
requirement: !ruby/object:Gem::Requirement
|
62
118
|
requirements:
|
63
119
|
- - ">="
|
@@ -74,16 +130,16 @@ description: lol_dba is a small package of rake tasks that scan your application
|
|
74
130
|
and displays a list of columns that probably should be indexed. Also, it can generate
|
75
131
|
.sql migration scripts.
|
76
132
|
email:
|
77
|
-
- diego@plentz.
|
78
|
-
- elad@eizesus.com
|
79
|
-
- ''
|
80
|
-
- vsharshov@gmail.com
|
133
|
+
- diego@plentz.io
|
81
134
|
executables:
|
82
135
|
- lol_dba
|
83
136
|
extensions: []
|
84
137
|
extra_rdoc_files: []
|
85
138
|
files:
|
139
|
+
- ".codeclimate.yml"
|
86
140
|
- ".gitignore"
|
141
|
+
- ".rspec"
|
142
|
+
- ".rubocop.yml"
|
87
143
|
- ".travis.yml"
|
88
144
|
- Appraisals
|
89
145
|
- Gemfile
|
@@ -103,17 +159,28 @@ files:
|
|
103
159
|
- gemfiles/rails_5_0.gemfile.lock
|
104
160
|
- gemfiles/rails_5_1.gemfile
|
105
161
|
- gemfiles/rails_5_1.gemfile.lock
|
162
|
+
- gemfiles/rails_5_2.gemfile
|
163
|
+
- gemfiles/rails_5_2.gemfile.lock
|
106
164
|
- lib/lol_dba.rb
|
107
165
|
- lib/lol_dba/cli.rb
|
108
|
-
- lib/lol_dba/
|
166
|
+
- lib/lol_dba/index_finding/belongs_to.rb
|
167
|
+
- lib/lol_dba/index_finding/error_logging.rb
|
168
|
+
- lib/lol_dba/index_finding/has_and_belongs_to_many.rb
|
169
|
+
- lib/lol_dba/index_finding/has_many.rb
|
170
|
+
- lib/lol_dba/index_finding/index_finder.rb
|
171
|
+
- lib/lol_dba/index_finding/migration_formatter.rb
|
172
|
+
- lib/lol_dba/index_finding/relation_inspector.rb
|
173
|
+
- lib/lol_dba/index_finding/relation_inspector_factory.rb
|
174
|
+
- lib/lol_dba/rails_compatibility.rb
|
109
175
|
- lib/lol_dba/railtie.rb
|
110
|
-
- lib/lol_dba/
|
176
|
+
- lib/lol_dba/sql_migrations/migration.rb
|
177
|
+
- lib/lol_dba/sql_migrations/migration_mocker.rb
|
178
|
+
- lib/lol_dba/sql_migrations/sql_generator.rb
|
179
|
+
- lib/lol_dba/sql_migrations/writer.rb
|
111
180
|
- lib/lol_dba/version.rb
|
112
|
-
- lib/lol_dba/writer.rb
|
113
181
|
- lib/tasks/lol_dba.rake
|
114
182
|
- lol_dba.gemspec
|
115
183
|
- spec/associations_index_spec.rb
|
116
|
-
- spec/common_function_spec.rb
|
117
184
|
- spec/fixtures/app/models/address.rb
|
118
185
|
- spec/fixtures/app/models/billable_week.rb
|
119
186
|
- spec/fixtures/app/models/company.rb
|
@@ -134,7 +201,9 @@ files:
|
|
134
201
|
- spec/fixtures/app/models/worker_user.rb
|
135
202
|
- spec/fixtures/app/models/wrong.rb
|
136
203
|
- spec/fixtures/schema.rb
|
204
|
+
- spec/migration_formatter_spec.rb
|
137
205
|
- spec/spec_helper.rb
|
206
|
+
- spec/sql_generator_spec.rb
|
138
207
|
homepage: https://github.com/plentz/lol_dba
|
139
208
|
licenses:
|
140
209
|
- MIT
|
@@ -155,15 +224,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
224
|
- !ruby/object:Gem::Version
|
156
225
|
version: '0'
|
157
226
|
requirements: []
|
158
|
-
|
159
|
-
rubygems_version: 2.7.6
|
227
|
+
rubygems_version: 3.0.2
|
160
228
|
signing_key:
|
161
229
|
specification_version: 4
|
162
230
|
summary: A small package of rake tasks to track down missing database indexes and
|
163
231
|
generate sql migration scripts
|
164
232
|
test_files:
|
165
233
|
- spec/associations_index_spec.rb
|
166
|
-
- spec/common_function_spec.rb
|
167
234
|
- spec/fixtures/app/models/address.rb
|
168
235
|
- spec/fixtures/app/models/billable_week.rb
|
169
236
|
- spec/fixtures/app/models/company.rb
|
@@ -184,4 +251,6 @@ test_files:
|
|
184
251
|
- spec/fixtures/app/models/worker_user.rb
|
185
252
|
- spec/fixtures/app/models/wrong.rb
|
186
253
|
- spec/fixtures/schema.rb
|
254
|
+
- spec/migration_formatter_spec.rb
|
187
255
|
- spec/spec_helper.rb
|
256
|
+
- spec/sql_generator_spec.rb
|
data/lib/lol_dba/migration.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
module LolDba
|
2
|
-
class Migration
|
3
|
-
attr_accessor :full_name
|
4
|
-
|
5
|
-
def initialize(migration_file)
|
6
|
-
self.full_name = File.basename(migration_file, ".rb")
|
7
|
-
require Rails.root.join(migration_file)
|
8
|
-
end
|
9
|
-
|
10
|
-
def number
|
11
|
-
/^(\d+)_(.*)$/.match(full_name)[1]
|
12
|
-
end
|
13
|
-
|
14
|
-
def name
|
15
|
-
/^(\d+)_(.*)$/.match(full_name)[2]
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_s
|
19
|
-
full_name
|
20
|
-
end
|
21
|
-
|
22
|
-
def migration_class
|
23
|
-
name.camelize.split(".")[0].constantize
|
24
|
-
end
|
25
|
-
|
26
|
-
def up
|
27
|
-
migration_class.migrate(:up)
|
28
|
-
connection.execute("INSERT INTO schema_migrations (version) VALUES (#{number})")
|
29
|
-
end
|
30
|
-
|
31
|
-
def down
|
32
|
-
migration_class.migrate(:down)
|
33
|
-
connection.execute("DELETE FROM schema_migrations WHERE version = #{number}")
|
34
|
-
end
|
35
|
-
|
36
|
-
def connection
|
37
|
-
ActiveRecord::Base.connection
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,96 +0,0 @@
|
|
1
|
-
module LolDba
|
2
|
-
class SqlGenerator
|
3
|
-
class << self
|
4
|
-
|
5
|
-
def connection
|
6
|
-
ActiveRecord::Base.connection
|
7
|
-
end
|
8
|
-
|
9
|
-
def methods_to_modify
|
10
|
-
[:execute, :do_execute, :rename_column, :change_column, :column_for, :tables, :indexes, :select_all] & connection.methods
|
11
|
-
end
|
12
|
-
|
13
|
-
def redefine_execute_methods
|
14
|
-
save_original_methods
|
15
|
-
connection.class.send(:define_method, :execute) { |*args|
|
16
|
-
if args.first =~ /SELECT "schema_migrations"."version"/ || args.first =~ /^SHOW/
|
17
|
-
self.orig_execute(*args)
|
18
|
-
else
|
19
|
-
Writer.write(to_sql(args.first, args.last))
|
20
|
-
end
|
21
|
-
}
|
22
|
-
connection.class.send(:define_method, :do_execute) { |*args|
|
23
|
-
if args.first =~ /SELECT "schema_migrations"."version"/ || args.first =~ /^SHOW/
|
24
|
-
self.orig_do_execute(*args)
|
25
|
-
else
|
26
|
-
Writer.write(to_sql(args.first, args.last))
|
27
|
-
end
|
28
|
-
}
|
29
|
-
connection.class.send(:define_method, :column_for) { |*args| args.last }
|
30
|
-
connection.class.send(:define_method, :change_column) { |*args| [] }
|
31
|
-
connection.class.send(:define_method, :rename_column) { |*args| [] }
|
32
|
-
connection.class.send(:define_method, :tables) { |*args| [] }
|
33
|
-
connection.class.send(:define_method, :select_all) { |*args| [] }
|
34
|
-
connection.class.send(:define_method, :indexes) { |*args| [] }
|
35
|
-
connection.class.send(:define_method, :index_name_exists?) { |*args| args[2] } #returns always the default(args[2])
|
36
|
-
end
|
37
|
-
|
38
|
-
def save_original_methods
|
39
|
-
methods_to_modify.each do |method_name|
|
40
|
-
connection.class.send(:alias_method, "orig_#{method_name}".to_sym, method_name)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def reset_methods
|
45
|
-
methods_to_modify.each do |method_name|
|
46
|
-
connection.class.send(:alias_method, method_name, "orig_#{method_name}".to_sym) rescue nil
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def generate_instead_of_executing(&block)
|
51
|
-
LolDba::Writer.reset
|
52
|
-
redefine_execute_methods
|
53
|
-
yield
|
54
|
-
reset_methods
|
55
|
-
end
|
56
|
-
|
57
|
-
def migrations(which)
|
58
|
-
migrator = nil
|
59
|
-
if ::ActiveRecord::VERSION::MAJOR == 4
|
60
|
-
migrator = ActiveRecord::Migrator.new(:up, ActiveRecord::Migrator.migrations(ActiveRecord::Migrator.migrations_path))
|
61
|
-
else
|
62
|
-
migrator = ActiveRecord::Migrator.new(:up, ActiveRecord::Migrator.migrations_path)
|
63
|
-
end
|
64
|
-
if which == "all"
|
65
|
-
migrator.migrations.collect { |m| m.filename }
|
66
|
-
elsif which == "pending"
|
67
|
-
pending = migrator.pending_migrations
|
68
|
-
if pending.empty?
|
69
|
-
puts "No pending migrations."
|
70
|
-
exit
|
71
|
-
end
|
72
|
-
migrator.pending_migrations.collect { |m| m.filename }
|
73
|
-
else
|
74
|
-
if migration = migrator.migrations.find {|m| m.version == which.to_i}
|
75
|
-
[migration.filename]
|
76
|
-
else
|
77
|
-
puts "There are no migrations for version #{which}."
|
78
|
-
exit
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def generate(which)
|
84
|
-
generate_instead_of_executing { migrations(which).each { |file| up_and_down(file) } }
|
85
|
-
end
|
86
|
-
|
87
|
-
def up_and_down(file)
|
88
|
-
migration = LolDba::Migration.new(file)
|
89
|
-
LolDba::Writer.file_name = "#{migration}.sql"
|
90
|
-
migration.up
|
91
|
-
#MigrationSqlGenerator::Writer.file_name = "#{migration}_down.sql"
|
92
|
-
#migration.down
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
data/lib/lol_dba/writer.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module LolDba
|
2
|
-
class Writer
|
3
|
-
class << self
|
4
|
-
attr_accessor :file_name
|
5
|
-
|
6
|
-
def reset
|
7
|
-
FileUtils.rm_rf output_dir
|
8
|
-
Dir.mkdir output_dir
|
9
|
-
end
|
10
|
-
|
11
|
-
def output_dir
|
12
|
-
File.join(Rails.root, "db", "migrate_sql")
|
13
|
-
end
|
14
|
-
|
15
|
-
def path
|
16
|
-
File.join(output_dir, file_name)
|
17
|
-
end
|
18
|
-
|
19
|
-
def write(string)
|
20
|
-
return if file_name.nil?
|
21
|
-
File.open(path, 'a') { |file| file << string; file << ";\n" }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,96 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe "Function form_migration_content:" do
|
4
|
-
|
5
|
-
before do
|
6
|
-
@add = ["add_index :report, :_id_test_plan"]
|
7
|
-
end
|
8
|
-
|
9
|
-
it "print migration skeleton with set name" do
|
10
|
-
migration = LolDba.form_migration_content("TestMigration", @add)
|
11
|
-
expect(migration).to match(/class TestMigration/i)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "print migration with add_keys params" do
|
15
|
-
migration = LolDba.form_migration_content("TestMigration", @add)
|
16
|
-
expect(migration).to match(/add_index :report, :_id_test_plan/i)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
RSpec.describe "Function form_data_for_migration:" do
|
21
|
-
|
22
|
-
it "return data for migrations for non-indexed single key in table" do
|
23
|
-
relationship_indexes = {:users => [:user_id]}
|
24
|
-
allow(LolDba).to receive(:key_exists?).with(:users, :user_id).and_return(false)
|
25
|
-
|
26
|
-
add_indexes = LolDba.form_data_for_migration(relationship_indexes)
|
27
|
-
|
28
|
-
expect(add_indexes.first).to eq("add_index :users, :user_id")
|
29
|
-
end
|
30
|
-
|
31
|
-
it "return data for migrations for non-indexed composite key in table" do
|
32
|
-
relationship_indexes = {:friends => [[:user_id, :friend_id]]}
|
33
|
-
allow(LolDba).to receive(:key_exists?).with(:friends, [:user_id, :friend_id]).and_return(false)
|
34
|
-
|
35
|
-
add_indexes = LolDba.form_data_for_migration(relationship_indexes)
|
36
|
-
|
37
|
-
expect(add_indexes.first).to eq("add_index :friends, [:user_id, :friend_id]")
|
38
|
-
end
|
39
|
-
|
40
|
-
it "ignore empty or nil keys for table" do
|
41
|
-
relationship_indexes = {:table => [""], :table2 => [nil]}
|
42
|
-
add_indexes = LolDba.form_data_for_migration(relationship_indexes)
|
43
|
-
|
44
|
-
expect(add_indexes).to be_empty
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
RSpec.describe "Function key_exists?:" do
|
50
|
-
|
51
|
-
it "return true if key is already indexed" do
|
52
|
-
expect(LolDba.key_exists?("companies", "country_id")).to be_truthy
|
53
|
-
end
|
54
|
-
|
55
|
-
it "return false if key is not indexed yet" do
|
56
|
-
expect(LolDba.key_exists?("addresses", "country_id")).to be_falsey
|
57
|
-
end
|
58
|
-
|
59
|
-
it "return true if key is primary key(default)" do
|
60
|
-
expect(LolDba.key_exists?("addresses", "id")).to be_truthy
|
61
|
-
end
|
62
|
-
|
63
|
-
it "return true if key is custom primary key" do
|
64
|
-
expect(LolDba.key_exists?("gifts", "custom_primary_key")).to be_truthy
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
|
-
RSpec.describe "Function puts_migration_content:" do
|
70
|
-
|
71
|
-
before do
|
72
|
-
@relationship_indexes, warning_messages = LolDba.check_for_indexes
|
73
|
-
end
|
74
|
-
|
75
|
-
it "print migration code" do
|
76
|
-
expect($stdout).to receive(:puts).with("")
|
77
|
-
expect($stdout).to receive(:puts).with(/TIP/)
|
78
|
-
expect($stdout).to receive(:puts).with(/TestMigration/i)
|
79
|
-
LolDba.puts_migration_content("TestMigration", @relationship_indexes, "")
|
80
|
-
end
|
81
|
-
|
82
|
-
it "print warning messages if they exist" do
|
83
|
-
warning = "warning text here"
|
84
|
-
expect($stdout).to receive(:puts).at_least(:once).with(warning)
|
85
|
-
expect($stdout).to receive(:puts)
|
86
|
-
|
87
|
-
LolDba.puts_migration_content("TestMigration", {}, warning)
|
88
|
-
end
|
89
|
-
|
90
|
-
it "print nothing if no indexes and warning messages exist" do
|
91
|
-
expect($stdout).to receive(:puts).with("")
|
92
|
-
expect($stdout).to receive(:puts).with("Yey, no missing indexes found!")
|
93
|
-
LolDba.puts_migration_content("TestMigration",{}, "")
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|