localtower 0.5.0 → 1.0.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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -17
  3. data/app/controllers/localtower/pages_controller.rb +27 -12
  4. data/app/views/layouts/localtower/application.html.erb +16 -33
  5. data/app/views/localtower/pages/_alert_no_models.html.erb +3 -0
  6. data/app/views/localtower/pages/migrations.html.erb +52 -83
  7. data/app/views/localtower/pages/models.html.erb +53 -70
  8. data/app/views/localtower/pages/new_migration.html.erb +103 -0
  9. data/app/views/localtower/pages/new_model.html.erb +87 -0
  10. data/config/routes.rb +4 -4
  11. data/lib/localtower/generators/migration.rb +51 -120
  12. data/lib/localtower/generators/model.rb +52 -28
  13. data/lib/localtower/generators/service_objects/insert_array.rb +23 -0
  14. data/lib/localtower/generators/service_objects/insert_defaults.rb +15 -43
  15. data/lib/localtower/generators/service_objects/insert_indexes.rb +80 -0
  16. data/lib/localtower/generators/service_objects/insert_nullable.rb +23 -0
  17. data/lib/localtower/status.rb +1 -1
  18. data/lib/localtower/tools.rb +13 -16
  19. data/lib/localtower/version.rb +1 -1
  20. data/public/css/app.css +0 -49
  21. data/public/js/app.js +215 -70
  22. data/public/screenshots/v1.0.0/migrations.png +0 -0
  23. data/public/screenshots/v1.0.0/models.png +0 -0
  24. data/public/screenshots/v1.0.0/new_migration.png +0 -0
  25. data/public/screenshots/v1.0.0/new_model.png +0 -0
  26. data/spec/dummy/Gemfile +0 -2
  27. data/spec/dummy/Gemfile.lock +1 -10
  28. data/spec/dummy/app/models/post.rb +3 -0
  29. data/spec/dummy/app/models/user.rb +1 -0
  30. data/spec/dummy/config/environments/development.rb +1 -0
  31. data/spec/dummy/config/puma.rb +1 -1
  32. data/spec/dummy/db/migrate/20230119221452_create_users.rb +14 -0
  33. data/spec/dummy/db/migrate/20230119221751_change_users_at1674166670.rb +7 -0
  34. data/spec/dummy/db/migrate/20230119222054_create_posts.rb +11 -0
  35. data/spec/dummy/db/migrate/20230119222106_change_posts_at1674166865.rb +5 -0
  36. data/spec/dummy/db/schema.rb +20 -8
  37. data/spec/dummy/log/development.log +15281 -3345
  38. data/spec/dummy/log/localtower.log +1897 -132
  39. data/spec/dummy/log/test.log +0 -0
  40. data/spec/dummy/test/index.html +38 -0
  41. data/spec/dummy/tmp/pids/server.pid +1 -0
  42. data/spec/factories/migration.rb +25 -41
  43. data/spec/factories/model.rb +39 -25
  44. data/spec/lib/localtower/generators/migration_spec.rb +36 -63
  45. data/spec/lib/localtower/generators/model_spec.rb +43 -34
  46. data/spec/lib/localtower/generators/service_objects/insert_array_spec.rb +47 -0
  47. data/spec/lib/localtower/generators/service_objects/insert_defaults_spec.rb +30 -35
  48. data/spec/lib/localtower/generators/service_objects/insert_indexes_spec.rb +90 -0
  49. data/spec/lib/localtower/generators/service_objects/insert_nullable_spec.rb +61 -0
  50. data/spec/lib/localtower/tools_spec.rb +1 -11
  51. data/spec/spec_helper.rb +8 -3
  52. metadata +34 -18
  53. data/app/views/localtower/pages/_migrations.html.erb +0 -57
  54. data/app/views/localtower/pages/schema.html.erb +0 -67
  55. data/spec/dummy/db/migrate/20221115190039_create_users.rb +0 -13
  56. data/spec/dummy/db/migrate/20221115193020_change_users.rb +0 -8
  57. data/spec/dummy/db/migrate/20221115193532_change_users_at1668540931.rb +0 -5
  58. data/spec/dummy/db/migrate/20221115193605_change_users_at1668540964.rb +0 -5
  59. data/spec/dummy/db/migrate/20221115193637_change_users_at1668540996.rb +0 -5
  60. data/spec/dummy/db/migrate/20221115193642_change_users_at1668541001.rb +0 -5
  61. data/spec/lib/localtower/generators/relation_spec.rb +0 -65
@@ -0,0 +1,90 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Localtower::Generators::ServiceObjects::InsertIndexes do
4
+ let(:service) { described_class.new(attributes) }
5
+
6
+ let(:attributes) {
7
+ [
8
+ { 'first' =>
9
+ {
10
+ 'using' => 'gin',
11
+ 'algorithm' => 'concurrently',
12
+ }
13
+ },
14
+ { 'third' =>
15
+ {
16
+ 'using' => 'gist',
17
+ 'unique' => true,
18
+ }
19
+ },
20
+ { 'fourth' =>
21
+ {
22
+ 'using' => 'default',
23
+ 'algorithm' => 'concurrently',
24
+ }
25
+ },
26
+ { 'fifth' =>
27
+ {
28
+ 'using' => 'default',
29
+ 'unique' => true,
30
+ }
31
+ }
32
+ ]
33
+ }
34
+
35
+ let(:base_file_content) {
36
+ <<-MIGRATION.strip_heredoc
37
+ class CreateTests < ActiveRecord::Migration[7.0]
38
+ def change
39
+ create_table :tests do |t|
40
+ t.string :zero
41
+ t.string :first
42
+ t.string :third
43
+ t.string :fourth
44
+ t.integer :fifth
45
+
46
+ t.timestamps
47
+ end
48
+ add_index :tests, :first
49
+ add_index :tests, :third
50
+ add_index :tests, :fourth
51
+ add_index :tests, :fifth
52
+ end
53
+ end
54
+ MIGRATION
55
+ }
56
+
57
+ let(:expected_file_content) {
58
+ <<-MIGRATION.strip_heredoc
59
+ class CreateTests < ActiveRecord::Migration[7.0]
60
+ disable_ddl_transaction!
61
+
62
+ def change
63
+ create_table :tests do |t|
64
+ t.string :zero
65
+ t.string :first
66
+ t.string :third
67
+ t.string :fourth
68
+ t.integer :fifth
69
+
70
+ t.timestamps
71
+ end
72
+ add_index :tests, :first, using: :gin, algorithm: :concurrently
73
+ add_index :tests, :third, using: :gist, unique: true
74
+ add_index :tests, :fourth, algorithm: :concurrently
75
+ add_index :tests, :fifth, unique: true
76
+ end
77
+ end
78
+ MIGRATION
79
+ }
80
+
81
+ before do
82
+ File.open("#{Rails.root}/db/migrate/0_migration_name_.rb", 'w') { |f| f.write(base_file_content) }
83
+ end
84
+
85
+ it 'works' do
86
+ service.call
87
+
88
+ expect(File.read(last_migration)).to eq(expected_file_content)
89
+ end
90
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Localtower::Generators::ServiceObjects::InsertNullable do
4
+ let(:service) { described_class.new(attributes) }
5
+
6
+ let(:attributes) {
7
+ [
8
+ 'first',
9
+ 'third',
10
+ 'fourth'
11
+ ]
12
+ }
13
+
14
+ let(:base_file_content) {
15
+ <<-MIGRATION.strip_heredoc
16
+ class CreateTests < ActiveRecord::Migration[7.0]
17
+ def change
18
+ create_table :tests do |t|
19
+ t.string :first
20
+ t.integer :second
21
+ t.string :third
22
+ t.string :fourth, default: 'foo'
23
+ t.integer :fifth
24
+
25
+ t.timestamps
26
+ end
27
+ add_index :tests, :first
28
+ end
29
+ end
30
+ MIGRATION
31
+ }
32
+
33
+ let(:expected_file_content) {
34
+ <<-MIGRATION.strip_heredoc
35
+ class CreateTests < ActiveRecord::Migration[7.0]
36
+ def change
37
+ create_table :tests do |t|
38
+ t.string :first, null: false
39
+ t.integer :second
40
+ t.string :third, null: false
41
+ t.string :fourth, null: false, default: 'foo'
42
+ t.integer :fifth
43
+
44
+ t.timestamps
45
+ end
46
+ add_index :tests, :first
47
+ end
48
+ end
49
+ MIGRATION
50
+ }
51
+
52
+ before do
53
+ File.open("#{Rails.root}/db/migrate/0_migration_name_.rb", 'w') { |f| f.write(base_file_content) }
54
+ end
55
+
56
+ it 'works' do
57
+ service.call
58
+
59
+ expect(File.read(last_migration)).to eq(expected_file_content)
60
+ end
61
+ end
@@ -1,14 +1,4 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Localtower::Tools do
4
- before(:each) do
5
- end
6
-
7
- after(:all) do
8
- end
9
-
10
- # TODO:
11
- it 'list models' do
12
- models = ::Localtower::Tools.models_presented
13
- end
3
+ RSpec.describe Localtower::Tools do
14
4
  end
data/spec/spec_helper.rb CHANGED
@@ -16,7 +16,9 @@ end
16
16
  f.write(content_schema)
17
17
  end
18
18
 
19
- Dir["#{Rails.root}/app/models/**/*.*"].each { |model_file| File.delete(model_file) }
19
+ Dir["#{Rails.root}/app/models/**/*.*"]
20
+ .reject { |file_name| file_name['application_record.rb']}
21
+ .each { |model_file| File.delete(model_file) }
20
22
  end
21
23
 
22
24
  def migration_files
@@ -27,6 +29,10 @@ def last_migration
27
29
  migration_files.sort.last
28
30
  end
29
31
 
32
+ def word_in_file?(file, word_or_exp)
33
+ File.readlines(file).grep(word_or_exp).size > 0
34
+ end
35
+
30
36
  #============================
31
37
  ENV['RAILS_ENV'] = 'test'
32
38
 
@@ -45,13 +51,12 @@ RSpec.configure do |config|
45
51
  config.infer_base_class_for_anonymous_controllers = true
46
52
 
47
53
  config.order = 123
48
- # config.order = 'random'
49
54
 
50
55
  config.before(:suite) do
51
56
  FactoryBot.find_definitions
52
57
  end
53
58
 
54
- config.before(:all) do
59
+ config.before(:each) do
55
60
  clean_files
56
61
  end
57
62
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: localtower
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damian Le Nouaille Diez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-16 00:00:00.000000000 Z
11
+ date: 2023-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -107,16 +107,20 @@ files:
107
107
  - app/controllers/localtower/pages_controller.rb
108
108
  - app/helpers/localtower/application_helper.rb
109
109
  - app/views/layouts/localtower/application.html.erb
110
- - app/views/localtower/pages/_migrations.html.erb
110
+ - app/views/localtower/pages/_alert_no_models.html.erb
111
111
  - app/views/localtower/pages/migrations.html.erb
112
112
  - app/views/localtower/pages/models.html.erb
113
- - app/views/localtower/pages/schema.html.erb
113
+ - app/views/localtower/pages/new_migration.html.erb
114
+ - app/views/localtower/pages/new_model.html.erb
114
115
  - config/routes.rb
115
116
  - lib/localtower.rb
116
117
  - lib/localtower/engine.rb
117
118
  - lib/localtower/generators/migration.rb
118
119
  - lib/localtower/generators/model.rb
120
+ - lib/localtower/generators/service_objects/insert_array.rb
119
121
  - lib/localtower/generators/service_objects/insert_defaults.rb
122
+ - lib/localtower/generators/service_objects/insert_indexes.rb
123
+ - lib/localtower/generators/service_objects/insert_nullable.rb
120
124
  - lib/localtower/status.rb
121
125
  - lib/localtower/tools.rb
122
126
  - lib/localtower/version.rb
@@ -172,6 +176,10 @@ files:
172
176
  - public/screenshots/v0.1.6/3_relations.png
173
177
  - public/screenshots/v0.1.6/4_migrations.png
174
178
  - public/screenshots/v0.1.6/5_capture.png
179
+ - public/screenshots/v1.0.0/migrations.png
180
+ - public/screenshots/v1.0.0/models.png
181
+ - public/screenshots/v1.0.0/new_migration.png
182
+ - public/screenshots/v1.0.0/new_model.png
175
183
  - public/vendor/font-awesome.min.css
176
184
  - public/vendor/highlight-js-default.min.css
177
185
  - public/vendor/highlight.min.js
@@ -192,6 +200,7 @@ files:
192
200
  - spec/dummy/app/jobs/application_job.rb
193
201
  - spec/dummy/app/mailers/application_mailer.rb
194
202
  - spec/dummy/app/models/application_record.rb
203
+ - spec/dummy/app/models/post.rb
195
204
  - spec/dummy/app/models/user.rb
196
205
  - spec/dummy/app/views/layouts/application.html.erb
197
206
  - spec/dummy/app/views/layouts/mailer.html.erb
@@ -227,15 +236,15 @@ files:
227
236
  - spec/dummy/config/routes.rb
228
237
  - spec/dummy/config/secrets.yml
229
238
  - spec/dummy/config/spring.rb
230
- - spec/dummy/db/migrate/20221115190039_create_users.rb
231
- - spec/dummy/db/migrate/20221115193020_change_users.rb
232
- - spec/dummy/db/migrate/20221115193532_change_users_at1668540931.rb
233
- - spec/dummy/db/migrate/20221115193605_change_users_at1668540964.rb
234
- - spec/dummy/db/migrate/20221115193637_change_users_at1668540996.rb
235
- - spec/dummy/db/migrate/20221115193642_change_users_at1668541001.rb
239
+ - spec/dummy/db/migrate/20230119221452_create_users.rb
240
+ - spec/dummy/db/migrate/20230119221751_change_users_at1674166670.rb
241
+ - spec/dummy/db/migrate/20230119222054_create_posts.rb
242
+ - spec/dummy/db/migrate/20230119222106_change_posts_at1674166865.rb
236
243
  - spec/dummy/db/schema.rb
237
244
  - spec/dummy/log/development.log
238
245
  - spec/dummy/log/localtower.log
246
+ - spec/dummy/log/test.log
247
+ - spec/dummy/test/index.html
239
248
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-Y/-YOiiBKqc2UODHFjctm8xc7xFoZaL7zOjWQj6qQ2wyE.cache
240
249
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-d/-dwueM4vmPt8L51S3jeSyg_AjGDcj0GUN6pDpCA1gCg.cache
241
250
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/0g/0gaJnJQdtd2ACbihXxn8OnjLWlDjnQ_WxfgOpbiLzhg.cache
@@ -303,13 +312,16 @@ files:
303
312
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/yH/yHZ-a1J23ZCf2n5mEHINMz23Iec2cLGTKauW7k4yGTE.cache
304
313
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/z7/z7KfUWYoSaGq8tQ5mbHwyfXyT3Pa4FWKJswHcIdJuds.cache
305
314
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/zu/zuExWc5WHxeOUPZUKHl9a9ZRmN50g7jMOD28macn6M0.cache
315
+ - spec/dummy/tmp/pids/server.pid
306
316
  - spec/dummy/tmp/restart.txt
307
317
  - spec/factories/migration.rb
308
318
  - spec/factories/model.rb
309
319
  - spec/lib/localtower/generators/migration_spec.rb
310
320
  - spec/lib/localtower/generators/model_spec.rb
311
- - spec/lib/localtower/generators/relation_spec.rb
321
+ - spec/lib/localtower/generators/service_objects/insert_array_spec.rb
312
322
  - spec/lib/localtower/generators/service_objects/insert_defaults_spec.rb
323
+ - spec/lib/localtower/generators/service_objects/insert_indexes_spec.rb
324
+ - spec/lib/localtower/generators/service_objects/insert_nullable_spec.rb
313
325
  - spec/lib/localtower/tools_spec.rb
314
326
  - spec/spec_helper.rb
315
327
  homepage: https://github.com/damln/localtower
@@ -338,6 +350,7 @@ test_files:
338
350
  - spec/spec_helper.rb
339
351
  - spec/dummy/app/mailers/application_mailer.rb
340
352
  - spec/dummy/app/models/application_record.rb
353
+ - spec/dummy/app/models/post.rb
341
354
  - spec/dummy/app/models/user.rb
342
355
  - spec/dummy/app/jobs/application_job.rb
343
356
  - spec/dummy/app/controllers/application_controller.rb
@@ -353,6 +366,7 @@ test_files:
353
366
  - spec/dummy/app/helpers/application_helper.rb
354
367
  - spec/dummy/app/channels/application_cable/connection.rb
355
368
  - spec/dummy/app/channels/application_cable/channel.rb
369
+ - spec/dummy/test/index.html
356
370
  - spec/dummy/bin/update
357
371
  - spec/dummy/bin/rake
358
372
  - spec/dummy/bin/setup
@@ -386,16 +400,16 @@ test_files:
386
400
  - spec/dummy/README.md
387
401
  - spec/dummy/Rakefile
388
402
  - spec/dummy/db/schema.rb
389
- - spec/dummy/db/migrate/20221115193637_change_users_at1668540996.rb
390
- - spec/dummy/db/migrate/20221115193605_change_users_at1668540964.rb
391
- - spec/dummy/db/migrate/20221115193532_change_users_at1668540931.rb
392
- - spec/dummy/db/migrate/20221115193020_change_users.rb
393
- - spec/dummy/db/migrate/20221115193642_change_users_at1668541001.rb
394
- - spec/dummy/db/migrate/20221115190039_create_users.rb
403
+ - spec/dummy/db/migrate/20230119221751_change_users_at1674166670.rb
404
+ - spec/dummy/db/migrate/20230119221452_create_users.rb
405
+ - spec/dummy/db/migrate/20230119222054_create_posts.rb
406
+ - spec/dummy/db/migrate/20230119222106_change_posts_at1674166865.rb
395
407
  - spec/dummy/Gemfile
396
408
  - spec/dummy/log/localtower.log
409
+ - spec/dummy/log/test.log
397
410
  - spec/dummy/log/development.log
398
411
  - spec/dummy/Gemfile.lock
412
+ - spec/dummy/tmp/pids/server.pid
399
413
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/3W/3WBmqd-2V6q5N-jvbyp-tlcfn3aHYMwBppbOUm7x4qg.cache
400
414
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pv/pv6tV3CDkIAmLXdU8EPLlNEkXAKJPufVD4VP30o4fWo.cache
401
415
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/sY/sYvTb1uPWWmnHJNXKuW_xSco-aUb-rN2f0J35zSIzuc.cache
@@ -469,5 +483,7 @@ test_files:
469
483
  - spec/lib/localtower/tools_spec.rb
470
484
  - spec/lib/localtower/generators/migration_spec.rb
471
485
  - spec/lib/localtower/generators/service_objects/insert_defaults_spec.rb
486
+ - spec/lib/localtower/generators/service_objects/insert_array_spec.rb
487
+ - spec/lib/localtower/generators/service_objects/insert_nullable_spec.rb
488
+ - spec/lib/localtower/generators/service_objects/insert_indexes_spec.rb
472
489
  - spec/lib/localtower/generators/model_spec.rb
473
- - spec/lib/localtower/generators/relation_spec.rb
@@ -1,57 +0,0 @@
1
- <div class="card">
2
- <div class="header">
3
- <div class="container-fluid">
4
- <div class="row">
5
- <div class="col-md-6"><h4 class="title">Pending migrations</h4></div>
6
- <div class="col-md-6">
7
- <div class="pull-right">
8
- <% if migrations.any? %>
9
- <%= form_tag actions_path, class: "form" do %>
10
- <button name="cmd" type="submit" value="rails db:migrate" class="btn btn-warning" data-selector="submit">
11
- Run Pending Migrations (<code>bundle exec rails db:migrate</code>)
12
- </button>
13
- <% end %>
14
- <% end %>
15
- </div>
16
- </div>
17
- </div>
18
- </div>
19
- </div>
20
-
21
- <div class="content">
22
- <% if migrations.any? %>
23
- <% migrations.each do |entry| %>
24
- <div class="container-fluid">
25
- <div class="row">
26
- <div class="col-md-8">
27
- <h5 style="color: <%= entry['status'] == :todo ? 'red' : 'green' %>;">
28
- <% if entry['status'] == :todo %>
29
- <button type="button" class="btn btn-danger btn-xs">PENDING</button>
30
- <% end %>
31
-
32
- <a href="<%= file_link(entry['file_full_path']) %>"><%= entry['name'] %></a>
33
- </h5>
34
- </div>
35
- </div>
36
-
37
- <div class="row">
38
- <div class="col-md-12">
39
- <% if entry['status'] == :todo %>
40
- <pre><code class="language-ruby"><%= entry['content'] %></code></pre>
41
- <% end %>
42
- </div>
43
- </div>
44
- </div>
45
- <% end %>
46
-
47
- <% else %>
48
- <div class="container-fluid">
49
- <div class="row">
50
- <div class="col-md-8">
51
- No pending migrations.
52
- </div>
53
- </div>
54
- </div>
55
- <% end %>
56
- </div>
57
- </div>
@@ -1,67 +0,0 @@
1
- <% content_for :title do %>Schema<% end %>
2
-
3
- <div class="row">
4
- <div class="col-md-12">
5
- <div class="content">
6
- <div class="">
7
-
8
- <div class="grid">
9
- <div class="grid-sizer"></div>
10
-
11
- <% ::Localtower::Tools.models_presented.each do |model| %>
12
-
13
- <div class="grid-item text-small card">
14
- <div class="text-center">
15
- <h5><%= model[:name] %></h5>
16
- </div>
17
-
18
- <table class="table table-hover table-striped table-condensed">
19
- <thead>
20
- <th>Field</th>
21
- <th>Type</th>
22
- <th>Belongs To</th>
23
- <th>Index?</th>
24
- </thead>
25
-
26
- <tbody>
27
- <% model[:attributes_list].each do |attribute_data| %>
28
-
29
- <tr>
30
- <td>
31
- <code>
32
- <%= attribute_data["name"] %>
33
- </code>
34
- </td>
35
-
36
- <td>
37
- <%= attribute_data["type_clean"] %>
38
- </td>
39
-
40
- <td>
41
- <% if attribute_data["belongs_to"] %>
42
- <span class="label label-primary">
43
- <%= attribute_data["belongs_to"] %>
44
- </span>
45
- <% end %>
46
- </td>
47
-
48
- <td>
49
- <% if attribute_data["index"].any? %>
50
- <span class="label label-success">Yes</span>
51
- <% else %>
52
- <span class="label label-default">No</span>
53
- <% end %>
54
- </td>
55
- </tr>
56
- <% end %>
57
- </tbody>
58
- </table>
59
- </div>
60
- <% end %>
61
- <div class="clearfix"></div>
62
- </div>
63
-
64
- </div>
65
- </div>
66
- </div>
67
- </div>
@@ -1,13 +0,0 @@
1
- class CreateUsers < ActiveRecord::Migration[7.0]
2
- def change
3
- create_table :users do |t|
4
- t.string :name
5
- t.string :email
6
- t.integer :age
7
-
8
- t.timestamps
9
- end
10
- add_index :users, :name
11
- add_index :users, :email
12
- end
13
- end
@@ -1,8 +0,0 @@
1
- class ChangeUsers < ActiveRecord::Migration[7.0]
2
- def change
3
- add_index :users, :age
4
- remove_index :users, :name
5
- change_column :users, :name, :text
6
- rename_column :users, :email, :reference
7
- end
8
- end
@@ -1,5 +0,0 @@
1
- class ChangeUsersAt1668540931 < ActiveRecord::Migration[7.0]
2
- def change
3
- add_index :users, :age
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- class ChangeUsersAt1668540964 < ActiveRecord::Migration[7.0]
2
- def change
3
- remove_index :users, :name
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- class ChangeUsersAt1668540996 < ActiveRecord::Migration[7.0]
2
- def change
3
- add_column :users, :family, :string
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- class ChangeUsersAt1668541001 < ActiveRecord::Migration[7.0]
2
- def change
3
- add_column :users, :lol, :string
4
- end
5
- end
@@ -1,65 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Localtower
4
- module Generators
5
- describe Relation do
6
- before(:all) do
7
- clean_files
8
- end
9
-
10
- after(:all) do
11
- end
12
-
13
- it 'belongs_to' do
14
- data1 = attributes_for(:post_one)
15
- data1["run_migrate"] = true
16
- ::Localtower::Generators::Model.new(data1).run
17
-
18
- data2 = attributes_for(:user_one)
19
- data2["run_migrate"] = true
20
- ::Localtower::Generators::Model.new(data2).run
21
-
22
- data = attributes_for(:belongs_to)
23
- data["run_migrate"] = true
24
-
25
- generator = ::Localtower::Generators::Migration.new(data).run
26
-
27
- expect(::Localtower::Tools.word_in_file?(last_migration, /add_reference :posts, :user, foreign_key: true, index: true/)).to eq(true)
28
- expect(File.exist?("#{Rails.root}/app/models/post.rb")).to eq(true)
29
- expect(File.exist?("#{Rails.root}/app/models/user.rb")).to eq(true)
30
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/post.rb", /class Post/)).to eq(true)
31
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/post.rb", /belongs_to/)).to eq(true)
32
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/user.rb", /class User/)).to eq(true)
33
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/user.rb", /has_many/)).to eq(true)
34
-
35
- Dir["#{Rails.root}/app/models/**/*.*"].each { |model_file| File.delete(model_file) }
36
- end
37
-
38
- it 'create a relation' do
39
- clean_files
40
-
41
- ::Localtower::Generators::Model.new(attributes_for(:post_one)).run
42
- ::Localtower::Generators::Model.new(attributes_for(:user_one)).run
43
-
44
- ::Localtower::Generators::Relation.new(attributes_for(:relation_one)).run
45
-
46
- expect(File.exist?("#{Rails.root}/app/models/user_post.rb")).to eq(true)
47
-
48
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/user_post.rb", /class UserPost/)).to eq(true)
49
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /create_table "user_posts"/)).to eq(true)
50
-
51
- user_id = ::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.integer(.*)"user_id"/) || ::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.bigint(.*)"user_id"/)
52
- post_id = ::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.integer(.*)"post_id"/) || ::Localtower::Tools.word_in_file?("#{Rails.root}/db/schema.rb", /t.bigint(.*)"post_id"/)
53
-
54
- expect(user_id).to eq(true)
55
- expect(post_id).to eq(true)
56
-
57
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/user.rb", /has_many :posts, through: :user_posts/)).to eq(true)
58
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/user.rb", /has_many :posts/)).to eq(true)
59
-
60
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/post.rb", /has_many :users/)).to eq(true)
61
- expect(::Localtower::Tools.word_in_file?("#{Rails.root}/app/models/post.rb", /has_many :users, through: :user_posts/)).to eq(true)
62
- end
63
- end
64
- end
65
- end