active_snapshot 0.2.1 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -1
- data/README.md +2 -2
- data/lib/active_snapshot/models/concerns/snapshots_concern.rb +3 -4
- data/lib/active_snapshot/models/snapshot.rb +8 -2
- data/lib/active_snapshot/models/snapshot_item.rb +7 -1
- data/lib/active_snapshot/version.rb +1 -1
- data/lib/generators/active_snapshot/install/templates/create_snapshots_tables.rb.erb +1 -1
- data/test/dummy_app/app/models/parent_without_children.rb +5 -0
- data/test/dummy_app/app/models/post.rb +1 -0
- data/test/dummy_app/app/models/sub_post.rb +11 -0
- data/test/dummy_app/config/application.rb +0 -8
- data/test/dummy_app/db/test.sqlite3 +0 -0
- data/test/dummy_app/log/test.log +2803 -805
- data/test/models/snapshot_test.rb +31 -0
- data/test/models/snapshots_concern_test.rb +1 -3
- data/test/test_helper.rb +1 -1
- metadata +35 -35
- data/test/dummy_app/config/environments/development.rb +0 -30
- data/test/dummy_app/config/environments/production.rb +0 -60
@@ -106,4 +106,35 @@ class SnapshotTest < ActiveSupport::TestCase
|
|
106
106
|
assert children_hash.all?{|k,v| v.all?{|x| x.readonly?} }
|
107
107
|
end
|
108
108
|
|
109
|
+
def test_fetch_reified_items_with_sti_class
|
110
|
+
post = SubPost.create!(a: 1, b: 2)
|
111
|
+
comment_content = 'Example comment'
|
112
|
+
post.comments.create!(content: comment_content)
|
113
|
+
post.create_snapshot!('v1')
|
114
|
+
snapshot = post.snapshots.first
|
115
|
+
reified_items = snapshot.fetch_reified_items
|
116
|
+
|
117
|
+
assert_equal post, reified_items.first
|
118
|
+
assert reified_items.first.readonly?
|
119
|
+
assert_equal comment_content, reified_items.second[:comments].first.content
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_single_model_snapshots_without_children
|
123
|
+
instance = ParentWithoutChildren.create!({a: 1, b: 2})
|
124
|
+
|
125
|
+
previous_attributes = instance.attributes
|
126
|
+
|
127
|
+
instance.create_snapshot!('v1')
|
128
|
+
|
129
|
+
instance.update!(a: 9, b: 9)
|
130
|
+
|
131
|
+
snapshot = instance.snapshots.first
|
132
|
+
|
133
|
+
reified_items = snapshot.fetch_reified_items
|
134
|
+
|
135
|
+
assert_equal [instance, {}], reified_items
|
136
|
+
|
137
|
+
assert_equal previous_attributes, reified_items.first.attributes
|
138
|
+
end
|
139
|
+
|
109
140
|
end
|
@@ -52,9 +52,7 @@ class SnapshotsConcernTest < ActiveSupport::TestCase
|
|
52
52
|
def test_has_snapshot_children
|
53
53
|
klass = VolatilePost
|
54
54
|
|
55
|
-
|
56
|
-
klass.has_snapshot_children
|
57
|
-
end
|
55
|
+
assert_nil klass.has_snapshot_children
|
58
56
|
|
59
57
|
klass.has_snapshot_children do
|
60
58
|
{}
|
data/test/test_helper.rb
CHANGED
@@ -50,7 +50,7 @@ klasses = [
|
|
50
50
|
]
|
51
51
|
|
52
52
|
klasses.each do |klass|
|
53
|
-
if
|
53
|
+
if klass.connection.adapter_name.downcase.include?("sqlite")
|
54
54
|
ActiveRecord::Base.connection.execute("DELETE FROM #{klass.table_name};")
|
55
55
|
ActiveRecord::Base.connection.execute("UPDATE `sqlite_sequence` SET `seq` = 0 WHERE `name` = '#{klass.table_name}';")
|
56
56
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_snapshot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Weston Ganger
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -149,7 +149,9 @@ files:
|
|
149
149
|
- test/dummy_app/app/models/application_record.rb
|
150
150
|
- test/dummy_app/app/models/comment.rb
|
151
151
|
- test/dummy_app/app/models/note.rb
|
152
|
+
- test/dummy_app/app/models/parent_without_children.rb
|
152
153
|
- test/dummy_app/app/models/post.rb
|
154
|
+
- test/dummy_app/app/models/sub_post.rb
|
153
155
|
- test/dummy_app/app/models/volatile_post.rb
|
154
156
|
- test/dummy_app/app/views/layouts/application.html.erb
|
155
157
|
- test/dummy_app/config.ru
|
@@ -157,8 +159,6 @@ files:
|
|
157
159
|
- test/dummy_app/config/boot.rb
|
158
160
|
- test/dummy_app/config/database.yml
|
159
161
|
- test/dummy_app/config/environment.rb
|
160
|
-
- test/dummy_app/config/environments/development.rb
|
161
|
-
- test/dummy_app/config/environments/production.rb
|
162
162
|
- test/dummy_app/config/environments/test.rb
|
163
163
|
- test/dummy_app/config/initializers/backtrace_silencers.rb
|
164
164
|
- test/dummy_app/config/initializers/inflections.rb
|
@@ -186,7 +186,7 @@ licenses:
|
|
186
186
|
metadata:
|
187
187
|
source_code_uri: https://github.com/westonganger/active_snapshot
|
188
188
|
changelog_uri: https://github.com/westonganger/active_snapshot/blob/master/CHANGELOG.md
|
189
|
-
post_install_message:
|
189
|
+
post_install_message:
|
190
190
|
rdoc_options: []
|
191
191
|
require_paths:
|
192
192
|
- lib
|
@@ -201,47 +201,47 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
201
|
- !ruby/object:Gem::Version
|
202
202
|
version: '0'
|
203
203
|
requirements: []
|
204
|
-
rubygems_version: 3.
|
205
|
-
signing_key:
|
204
|
+
rubygems_version: 3.2.32
|
205
|
+
signing_key:
|
206
206
|
specification_version: 4
|
207
207
|
summary: Dead simple snapshot versioning for ActiveRecord models and associations.
|
208
208
|
test_files:
|
209
|
-
- test/
|
210
|
-
- test/unit/errors_test.rb
|
211
|
-
- test/models/snapshots_concern_test.rb
|
212
|
-
- test/models/snapshot_item_test.rb
|
213
|
-
- test/models/snapshot_test.rb
|
214
|
-
- test/test_helper.rb
|
215
|
-
- test/generators/active_snapshot/install_generator_test.rb
|
216
|
-
- test/dummy_app/app/models/note.rb
|
217
|
-
- test/dummy_app/app/models/volatile_post.rb
|
218
|
-
- test/dummy_app/app/models/comment.rb
|
219
|
-
- test/dummy_app/app/models/application_record.rb
|
220
|
-
- test/dummy_app/app/models/post.rb
|
221
|
-
- test/dummy_app/app/controllers/application_controller.rb
|
222
|
-
- test/dummy_app/app/views/layouts/application.html.erb
|
209
|
+
- test/dummy_app/Rakefile
|
223
210
|
- test/dummy_app/app/assets/config/manifest.js
|
224
211
|
- test/dummy_app/app/assets/javascripts/application.js
|
225
212
|
- test/dummy_app/app/assets/stylesheets/application.css
|
226
|
-
- test/dummy_app/
|
227
|
-
- test/dummy_app/
|
228
|
-
- test/dummy_app/
|
229
|
-
- test/dummy_app/
|
230
|
-
- test/dummy_app/
|
231
|
-
- test/dummy_app/
|
232
|
-
- test/dummy_app/
|
213
|
+
- test/dummy_app/app/controllers/application_controller.rb
|
214
|
+
- test/dummy_app/app/models/application_record.rb
|
215
|
+
- test/dummy_app/app/models/comment.rb
|
216
|
+
- test/dummy_app/app/models/note.rb
|
217
|
+
- test/dummy_app/app/models/parent_without_children.rb
|
218
|
+
- test/dummy_app/app/models/post.rb
|
219
|
+
- test/dummy_app/app/models/sub_post.rb
|
220
|
+
- test/dummy_app/app/models/volatile_post.rb
|
221
|
+
- test/dummy_app/app/views/layouts/application.html.erb
|
233
222
|
- test/dummy_app/config/application.rb
|
234
|
-
- test/dummy_app/config/database.yml
|
235
223
|
- test/dummy_app/config/boot.rb
|
224
|
+
- test/dummy_app/config/database.yml
|
225
|
+
- test/dummy_app/config/environment.rb
|
226
|
+
- test/dummy_app/config/environments/test.rb
|
236
227
|
- test/dummy_app/config/initializers/backtrace_silencers.rb
|
228
|
+
- test/dummy_app/config/initializers/inflections.rb
|
237
229
|
- test/dummy_app/config/initializers/mime_types.rb
|
230
|
+
- test/dummy_app/config/initializers/secret_token.rb
|
238
231
|
- test/dummy_app/config/initializers/session_store.rb
|
239
232
|
- test/dummy_app/config/initializers/wrap_parameters.rb
|
240
|
-
- test/dummy_app/config/
|
241
|
-
- test/dummy_app/config/
|
233
|
+
- test/dummy_app/config/locales/en.yml
|
234
|
+
- test/dummy_app/config/routes.rb
|
235
|
+
- test/dummy_app/config/secrets.yml
|
242
236
|
- test/dummy_app/config.ru
|
243
|
-
- test/dummy_app/Rakefile
|
244
|
-
- test/dummy_app/db/test.sqlite3
|
245
|
-
- test/dummy_app/db/migrate/20210306100122_create_snapshots_tables.rb
|
246
237
|
- test/dummy_app/db/migrate/20210128155312_set_up_test_tables.rb
|
238
|
+
- test/dummy_app/db/migrate/20210306100122_create_snapshots_tables.rb
|
239
|
+
- test/dummy_app/db/test.sqlite3
|
247
240
|
- test/dummy_app/log/test.log
|
241
|
+
- test/generators/active_snapshot/install_generator_test.rb
|
242
|
+
- test/models/snapshot_item_test.rb
|
243
|
+
- test/models/snapshot_test.rb
|
244
|
+
- test/models/snapshots_concern_test.rb
|
245
|
+
- test/test_helper.rb
|
246
|
+
- test/unit/active_snapshot_test.rb
|
247
|
+
- test/unit/errors_test.rb
|
@@ -1,30 +0,0 @@
|
|
1
|
-
Dummy::Application.configure do
|
2
|
-
# Settings specified here will take precedence over those in config/application.rb
|
3
|
-
|
4
|
-
# In the development environment your application's code is reloaded on
|
5
|
-
# every request. This slows down response time but is perfect for development
|
6
|
-
# since you don't have to restart the web server when you make code changes.
|
7
|
-
config.cache_classes = false
|
8
|
-
|
9
|
-
# Log error messages when you accidentally call methods on nil.
|
10
|
-
config.whiny_nils = true
|
11
|
-
|
12
|
-
# Show full error reports and disable caching
|
13
|
-
config.consider_all_requests_local = true
|
14
|
-
config.action_controller.perform_caching = false
|
15
|
-
|
16
|
-
# Don't care if the mailer can't send
|
17
|
-
config.action_mailer.raise_delivery_errors = false
|
18
|
-
|
19
|
-
# Print deprecation notices to the Rails logger
|
20
|
-
config.active_support.deprecation = :log
|
21
|
-
|
22
|
-
# Only use best-standards-support built into browsers
|
23
|
-
config.action_dispatch.best_standards_support = :builtin
|
24
|
-
|
25
|
-
# Do not compress assets
|
26
|
-
config.assets.compress = false
|
27
|
-
|
28
|
-
# Expands the lines which load the assets
|
29
|
-
config.assets.debug = true
|
30
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
Dummy::Application.configure do
|
2
|
-
# Settings specified here will take precedence over those in config/application.rb
|
3
|
-
|
4
|
-
# Code is not reloaded between requests
|
5
|
-
config.cache_classes = true
|
6
|
-
|
7
|
-
# Full error reports are disabled and caching is turned on
|
8
|
-
config.consider_all_requests_local = false
|
9
|
-
config.action_controller.perform_caching = true
|
10
|
-
|
11
|
-
# Disable Rails's static asset server (Apache or nginx will already do this)
|
12
|
-
config.serve_static_files = false
|
13
|
-
|
14
|
-
# Compress JavaScripts and CSS
|
15
|
-
config.assets.compress = true
|
16
|
-
|
17
|
-
# Don't fallback to assets pipeline if a precompiled asset is missed
|
18
|
-
config.assets.compile = false
|
19
|
-
|
20
|
-
# Generate digests for assets URLs
|
21
|
-
config.assets.digest = true
|
22
|
-
|
23
|
-
# Defaults to Rails.root.join("public/assets")
|
24
|
-
# config.assets.manifest = YOUR_PATH
|
25
|
-
|
26
|
-
# Specifies the header that your server uses for sending files
|
27
|
-
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
|
28
|
-
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
|
29
|
-
|
30
|
-
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
31
|
-
# config.force_ssl = true
|
32
|
-
|
33
|
-
# See everything in the log (default is :info)
|
34
|
-
# config.log_level = :debug
|
35
|
-
|
36
|
-
# Use a different logger for distributed setups
|
37
|
-
# config.logger = SyslogLogger.new
|
38
|
-
|
39
|
-
# Use a different cache store in production
|
40
|
-
# config.cache_store = :mem_cache_store
|
41
|
-
|
42
|
-
# Enable serving of images, stylesheets, and JavaScripts from an asset server
|
43
|
-
# config.action_controller.asset_host = "http://assets.example.com"
|
44
|
-
|
45
|
-
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
|
46
|
-
# config.assets.precompile += %w( search.js )
|
47
|
-
|
48
|
-
# Disable delivery errors, bad email addresses will be ignored
|
49
|
-
# config.action_mailer.raise_delivery_errors = false
|
50
|
-
|
51
|
-
# Enable threaded mode
|
52
|
-
# config.threadsafe!
|
53
|
-
|
54
|
-
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
55
|
-
# the I18n.default_locale when a translation can not be found)
|
56
|
-
config.i18n.fallbacks = true
|
57
|
-
|
58
|
-
# Send deprecation notices to registered listeners
|
59
|
-
config.active_support.deprecation = :notify
|
60
|
-
end
|