activerecord_views 0.1.4 → 0.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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/lib/active_record_views/database_tasks.rb +91 -0
  3. data/lib/active_record_views/railtie.rb +0 -4
  4. data/lib/active_record_views/version.rb +1 -1
  5. data/lib/active_record_views.rb +2 -0
  6. metadata +9 -77
  7. data/.gitignore +0 -8
  8. data/.rspec +0 -2
  9. data/.tool-versions +0 -1
  10. data/Appraisals +0 -15
  11. data/Gemfile +0 -3
  12. data/LICENSE.txt +0 -22
  13. data/Rakefile +0 -14
  14. data/activerecord_views.gemspec +0 -28
  15. data/gemfiles/rails5_2.gemfile +0 -7
  16. data/gemfiles/rails6_0.gemfile +0 -7
  17. data/gemfiles/rails6_1.gemfile +0 -7
  18. data/gemfiles/rails7_0.gemfile +0 -7
  19. data/lib/tasks/active_record_views.rake +0 -99
  20. data/spec/active_record_views_checksum_cache_spec.rb +0 -112
  21. data/spec/active_record_views_extension_spec.rb +0 -459
  22. data/spec/active_record_views_spec.rb +0 -344
  23. data/spec/internal/Rakefile +0 -24
  24. data/spec/internal/app/models/dependency_a.rb +0 -3
  25. data/spec/internal/app/models/dependency_b.rb +0 -3
  26. data/spec/internal/app/models/dependency_c.rb +0 -3
  27. data/spec/internal/app/models/erb_test_model.rb +0 -7
  28. data/spec/internal/app/models/erb_test_model.sql.erb +0 -1
  29. data/spec/internal/app/models/external_file_test_model.rb +0 -3
  30. data/spec/internal/app/models/external_file_test_model.sql +0 -1
  31. data/spec/internal/app/models/heredoc_test_model.rb +0 -5
  32. data/spec/internal/app/models/modified_a.rb +0 -3
  33. data/spec/internal/app/models/modified_b.rb +0 -3
  34. data/spec/internal/app/models/namespace/test_model.rb +0 -3
  35. data/spec/internal/app/models/namespace/test_model.sql +0 -1
  36. data/spec/internal/config/database.yml +0 -9
  37. data/spec/internal/config/routes.rb +0 -3
  38. data/spec/spec_helper.rb +0 -132
  39. data/spec/support/silence_warnings.rb +0 -6
  40. data/spec/tasks_spec.rb +0 -110
data/spec/tasks_spec.rb DELETED
@@ -1,110 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'rake tasks' do
4
- def rake(task_name, env: {})
5
- system(env, *%W[
6
- rake
7
- -f spec/internal/Rakefile
8
- #{task_name}
9
- ])
10
- raise unless $?.success?
11
- end
12
-
13
- describe 'db:migrate' do
14
- def view_names
15
- ActiveRecord::Base.connection.select_values(<<~SQL.squish)
16
- SELECT table_name
17
- FROM information_schema.views
18
- WHERE table_schema = 'public'
19
- SQL
20
- end
21
-
22
- it 'does not create any database views' do
23
- expect(view_names).to be_empty
24
- rake 'db:migrate'
25
- expect(view_names).to be_empty
26
- end
27
-
28
- it 'creates database views in production mode' do
29
- expect(view_names).to be_empty
30
- rake 'db:migrate', env: {'RAILS_ENV' => 'production'}
31
- expect(view_names).to_not be_empty
32
- end
33
-
34
- it 'does nothing in production mode without models' do
35
- expect(view_names).to be_empty
36
- rake 'db:migrate', env: {'RAILS_ENV' => 'production', 'SKIP_MODEL_EAGER_LOAD' => 'true'}
37
- expect(view_names).to be_empty
38
- end
39
-
40
- context 'with unregistered view' do
41
- before do
42
- ActiveRecordViews.create_view ActiveRecord::Base.connection, 'old_view', 'OldView', 'SELECT 42 AS id'
43
- end
44
-
45
- it 'does not drop unregistered views' do
46
- expect(view_names).to include 'old_view'
47
- rake 'db:migrate'
48
- expect(view_names).to include 'old_view'
49
- end
50
-
51
- it 'drops unregistered views in production mode' do
52
- expect(view_names).to include 'old_view'
53
- rake 'db:migrate', env: {'RAILS_ENV' => 'production'}
54
- expect(view_names).to_not include 'old_view'
55
- end
56
- end
57
- end
58
-
59
- schema_rake_task = Gem::Version.new(Rails.version) >= Gem::Version.new("6.1") ? 'db:schema:dump' : 'db:structure:dump'
60
- describe schema_rake_task do
61
- before do
62
- FileUtils.rm_f 'spec/internal/db/schema.rb'
63
- FileUtils.rm_f 'spec/internal/db/structure.sql'
64
-
65
- ActiveRecordViews.create_view ActiveRecord::Base.connection, 'test_view', 'TestView', 'SELECT 1'
66
- end
67
-
68
- after do
69
- FileUtils.rm_f 'spec/internal/db/schema.rb'
70
- FileUtils.rm_f 'spec/internal/db/structure.sql'
71
-
72
- File.write 'spec/internal/db/schema.rb', ''
73
- end
74
-
75
- it 'copies over activerecord_views data' do
76
- rake schema_rake_task
77
-
78
- expect(File.exist?('spec/internal/db/schema.rb')).to eq false
79
- sql = File.read('spec/internal/db/structure.sql')
80
- expect(sql).to match(/CREATE TABLE public\.schema_migrations/)
81
- expect(sql).to match(/CREATE VIEW public\.test_view/)
82
- expect(sql).to match(/COPY public\.active_record_views.+test_view\tTestView\t.*\t.*\t\\N$/m)
83
- end
84
-
85
- it 'clears refreshed_at values' do
86
- ActiveRecord::Base.connection.execute "UPDATE active_record_views SET refreshed_at = current_timestamp AT TIME ZONE 'UTC' WHERE name = 'test_view';"
87
-
88
- rake schema_rake_task
89
-
90
- ActiveRecord::Base.clear_all_connections!
91
-
92
- system 'dropdb activerecord_views_test'
93
- raise unless $?.success?
94
- system 'createdb activerecord_views_test'
95
- raise unless $?.success?
96
- system 'psql -X -q -o /dev/null -f spec/internal/db/structure.sql activerecord_views_test'
97
- raise unless $?.success?
98
-
99
- refreshed_ats = ActiveRecord::Base.connection.select_values("SELECT refreshed_at FROM active_record_views WHERE name = 'test_view'")
100
- expect(refreshed_ats).to eq [nil]
101
- end
102
-
103
- it 'does not write structure.sql when `schema_format = :ruby`', if: schema_rake_task != 'db:structure:dump' do
104
- rake schema_rake_task, env: {'SCHEMA_FORMAT' => 'ruby'}
105
-
106
- expect(File.exist?('spec/internal/db/schema.rb')).to eq true
107
- expect(File.exist?('spec/internal/db/structure.sql')).to eq false
108
- end
109
- end
110
- end