activerecord_views 0.0.19 → 0.1.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.
data/spec/tasks_spec.rb CHANGED
@@ -1,12 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'rake tasks' do
4
- def rake(task_name, production: false)
5
- system(*%W[
4
+ def rake(task_name, env: {})
5
+ system(env, *%W[
6
6
  rake
7
7
  -f spec/internal/Rakefile
8
8
  #{task_name}
9
- RAILS_ENV=#{production ? 'production' : 'development'}
10
9
  ])
11
10
  raise unless $?.success?
12
11
  end
@@ -28,10 +27,16 @@ describe 'rake tasks' do
28
27
 
29
28
  it 'creates database views in production mode' do
30
29
  expect(view_names).to be_empty
31
- rake 'db:migrate', production: true
30
+ rake 'db:migrate', env: {'RAILS_ENV' => 'production'}
32
31
  expect(view_names).to_not be_empty
33
32
  end
34
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
+
35
40
  context 'with unregistered view' do
36
41
  before do
37
42
  ActiveRecordViews.create_view ActiveRecord::Base.connection, 'old_view', 'OldView', 'SELECT 42 AS id'
@@ -45,24 +50,61 @@ describe 'rake tasks' do
45
50
 
46
51
  it 'drops unregistered views in production mode' do
47
52
  expect(view_names).to include 'old_view'
48
- rake 'db:migrate', production: true
53
+ rake 'db:migrate', env: {'RAILS_ENV' => 'production'}
49
54
  expect(view_names).to_not include 'old_view'
50
55
  end
51
56
  end
52
57
  end
53
58
 
54
- describe 'db:structure:dump' do
55
- it 'copies over activerecord_views data' do
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
+
56
65
  ActiveRecordViews.create_view ActiveRecord::Base.connection, 'test_view', 'TestView', 'SELECT 1'
66
+ end
57
67
 
68
+ after do
69
+ FileUtils.rm_f 'spec/internal/db/schema.rb'
58
70
  FileUtils.rm_f 'spec/internal/db/structure.sql'
59
- rake 'db:structure:dump'
60
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
61
79
  sql = File.read('spec/internal/db/structure.sql')
62
- FileUtils.rm_f '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'}
63
105
 
64
- expect(sql).to match(/COPY public\.active_record_views.+test_view\tTestView/m)
65
- expect(sql).to match(/UPDATE public\.active_record_views SET refreshed_at = NULL/)
106
+ expect(File.exist?('spec/internal/db/schema.rb')).to eq true
107
+ expect(File.exist?('spec/internal/db/structure.sql')).to eq false
66
108
  end
67
109
  end
68
110
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord_views
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Weathered
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-13 00:00:00.000000000 Z
11
+ date: 2021-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '4.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '5.3'
22
+ version: '6.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '4.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '5.3'
32
+ version: '6.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: appraisal
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -58,6 +58,20 @@ dependencies:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '2.14'
61
+ - !ruby/object:Gem::Dependency
62
+ name: super_diff
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
61
75
  - !ruby/object:Gem::Dependency
62
76
  name: combustion
63
77
  requirement: !ruby/object:Gem::Requirement
@@ -86,7 +100,21 @@ dependencies:
86
100
  - - ">="
87
101
  - !ruby/object:Gem::Version
88
102
  version: '0'
89
- description:
103
+ - !ruby/object:Gem::Dependency
104
+ name: warning
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ description:
90
118
  email:
91
119
  - jason@jasoncodes.com
92
120
  executables: []
@@ -95,6 +123,7 @@ extra_rdoc_files: []
95
123
  files:
96
124
  - ".gitignore"
97
125
  - ".rspec"
126
+ - ".tool-versions"
98
127
  - Appraisals
99
128
  - Gemfile
100
129
  - LICENSE.txt
@@ -105,6 +134,8 @@ files:
105
134
  - gemfiles/rails5_0.gemfile
106
135
  - gemfiles/rails5_1.gemfile
107
136
  - gemfiles/rails5_2.gemfile
137
+ - gemfiles/rails6_0.gemfile
138
+ - gemfiles/rails6_1.gemfile
108
139
  - lib/active_record_views.rb
109
140
  - lib/active_record_views/checksum_cache.rb
110
141
  - lib/active_record_views/database_cleaner/truncation_extension.rb
@@ -126,19 +157,20 @@ files:
126
157
  - spec/internal/app/models/external_file_test_model.rb
127
158
  - spec/internal/app/models/external_file_test_model.sql
128
159
  - spec/internal/app/models/heredoc_test_model.rb
129
- - spec/internal/app/models/missing_file_test_model.rb
130
160
  - spec/internal/app/models/modified_a.rb
131
161
  - spec/internal/app/models/modified_b.rb
132
162
  - spec/internal/app/models/namespace/test_model.rb
133
163
  - spec/internal/app/models/namespace/test_model.sql
134
164
  - spec/internal/config/database.yml
165
+ - spec/internal/config/routes.rb
135
166
  - spec/spec_helper.rb
167
+ - spec/support/silence_warnings.rb
136
168
  - spec/tasks_spec.rb
137
169
  homepage: http://github.com/jasoncodes/activerecord_views
138
170
  licenses:
139
171
  - MIT
140
172
  metadata: {}
141
- post_install_message:
173
+ post_install_message:
142
174
  rdoc_options: []
143
175
  require_paths:
144
176
  - lib
@@ -153,9 +185,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
185
  - !ruby/object:Gem::Version
154
186
  version: '0'
155
187
  requirements: []
156
- rubyforge_project:
157
- rubygems_version: 2.6.14.3
158
- signing_key:
188
+ rubygems_version: 3.0.3
189
+ signing_key:
159
190
  specification_version: 4
160
191
  summary: Automatic database view creation for ActiveRecord
161
192
  test_files:
@@ -171,11 +202,12 @@ test_files:
171
202
  - spec/internal/app/models/external_file_test_model.rb
172
203
  - spec/internal/app/models/external_file_test_model.sql
173
204
  - spec/internal/app/models/heredoc_test_model.rb
174
- - spec/internal/app/models/missing_file_test_model.rb
175
205
  - spec/internal/app/models/modified_a.rb
176
206
  - spec/internal/app/models/modified_b.rb
177
207
  - spec/internal/app/models/namespace/test_model.rb
178
208
  - spec/internal/app/models/namespace/test_model.sql
179
209
  - spec/internal/config/database.yml
210
+ - spec/internal/config/routes.rb
180
211
  - spec/spec_helper.rb
212
+ - spec/support/silence_warnings.rb
181
213
  - spec/tasks_spec.rb
@@ -1,5 +0,0 @@
1
- unless ActiveRecordViews::Extension.currently_migrating?
2
- class MissingFileTestModel < ActiveRecord::Base
3
- is_view
4
- end
5
- end