controlled_versioning 0.11.0 → 0.12.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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTg2ZTUxYzM1ZWU1NDM1YTllODA2NDE1NzFmYjBjNTI2YjMwMjg5NA==
4
+ NTA4NTM0NzYxMDI5YmIyZjhmM2M1NzY0MWY4OTU4MTZjMjE5MjM4ZA==
5
5
  data.tar.gz: !binary |-
6
- ZTFkMWMzMTZmNzNlZGQxNzc2OGM3YWI3YWUwZTgyOWU1ZGJjNjA0Mw==
6
+ OGQ3MzdhNTMyZDMzNTI1M2MxMTM1MGY2MDYzMGQxNzc3ZDA2M2RlOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OWRlNWJiMjUzMzk4YTkwODZiNTExZGZkZGMxMjliMjhhYmRkMzg0ZTE2MTI0
10
- NWU4MWExMzMyYzY1NTgzZGE5ZGE3OThjZTNlN2RiMmY1NWVhZDJiZjc3YTlj
11
- ZDFmMTkwZDg3NDZjMDgxMjIwNWQ3ZTdmODUyODc3YmYyODE4NTA=
9
+ N2FiNzc2MGMwNzU0MDZkMmZhNzhiYmVjYmU1NThlNGVlMmZjNGY3ZTE3MmYz
10
+ Y2Y5OTc5YzlkZDg2MTM0MTAwYTUwMDk2YWU3MTdmMGQ4NzkxMjEzZGRhNjVl
11
+ YjgxZjU1YzlhY2I2NGQ3NmJjMWMzMDI0MTA0ZWMwMGFkOThhOWI=
12
12
  data.tar.gz: !binary |-
13
- YmQ2NjQwYjY5YjIwMmQ4NGMwZTFiZWM4ZDYyNDhlY2E2NTM0MjIyYzg2ZGE0
14
- NmJhMmQxNjEzODJiNmYxYTc2OTZiMmI0ODRhODc5ZTU3OWIzN2FhNTdiZjU3
15
- MjMwOWM1ODVmMDQyZWJjZjAxNTRiMjIxMjA4ZTQ5YTkxZjkyNDE=
13
+ NmMxOTE1ODZlZjllYjdjZWM5ZDIyYmUzZWNmNTEzNzM0NjgyYTY2YTBlZDkz
14
+ MzM1Y2VmMjllZTdiOGQ4ZTM4Mjg1ZmY3ZmJiY2FkYzg2YWU0NTlhZTg1MWYz
15
+ MjIxNDg2ZGExNWVhYTYxYjRhODZhZGU2MDk4MWM3YWJjMzZjMzg=
@@ -32,6 +32,10 @@ module ControlledVersioning
32
32
  end
33
33
  end
34
34
 
35
+ def changed_attributes_count
36
+ ChangeCounter.new(self).count
37
+ end
38
+
35
39
  def revisions
36
40
  ChangeTracker.new(self)
37
41
  end
@@ -50,7 +54,17 @@ module ControlledVersioning
50
54
  def trigger_callbacks(type)
51
55
  if versionable.class.respond_to?(type)
52
56
  callbacks = versionable.class.send(type)
53
- callbacks.each { |callback| versionable.send(callback) }
57
+ callbacks.each do |callback|
58
+ send_callback(callback)
59
+ end
60
+ end
61
+ end
62
+
63
+ def send_callback(callback)
64
+ if versionable.method(callback).parameters.length > 0
65
+ versionable.send(callback, self)
66
+ else
67
+ versionable.send(callback)
54
68
  end
55
69
  end
56
70
  end
@@ -3,6 +3,8 @@ require "controlled_versioning/engine"
3
3
  # Core
4
4
  require "controlled_versioning/version"
5
5
 
6
+ require "controlled_versioning/change_counter"
7
+
6
8
  require "controlled_versioning/change_tracker"
7
9
  require "controlled_versioning/change_tracker/attribute"
8
10
  require "controlled_versioning/change_tracker/child"
@@ -0,0 +1,18 @@
1
+ class ChangeCounter
2
+
3
+ attr_accessor :version
4
+ def initialize(version)
5
+ @version = version
6
+ end
7
+
8
+ def count
9
+ version.version_attributes.length + changed_child_attributes
10
+ end
11
+
12
+ private
13
+ def changed_child_attributes
14
+ version.version_children.collect{ |child| ChangeCounter.new(child).count }.
15
+ inject(:+) || 0
16
+ end
17
+
18
+ end
@@ -1,3 +1,3 @@
1
1
  module ControlledVersioning
2
- VERSION_NUMBER = "0.11.0"
2
+ VERSION_NUMBER = "0.12.0"
3
3
  end
@@ -27,6 +27,19 @@ describe ControlledVersioning::Version do
27
27
  ] })
28
28
  end
29
29
 
30
+ it 'changed attributes count' do
31
+ first_child_resource = @resource.child_resources[0]
32
+ first_grand_child_resource = first_child_resource.
33
+ grand_child_resources.first
34
+ version = @resource.submit_revision(r_string: "new string",
35
+ child_resources_attributes: [
36
+ {id: first_child_resource.id, grand_child_resources_attributes: [
37
+ {id: first_grand_child_resource.id, r_string: "new string"}
38
+ ]}
39
+ ])
40
+ expect(version.changed_attributes_count).to eq 2
41
+ end
42
+
30
43
  it 'changed attributes' do
31
44
  version = @resource.submit_revision(r_string: "new string")
32
45
  changed_attribute = version.revisions.attributes.first
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: controlled_versioning
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - timothythehuman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-12 00:00:00.000000000 Z
11
+ date: 2014-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -133,6 +133,7 @@ files:
133
133
  - db/migrate/20140206204910_create_controlled_versioning_version_attributes.rb
134
134
  - db/migrate/20140206204920_create_controlled_versioning_version_children.rb
135
135
  - lib/controlled_versioning.rb
136
+ - lib/controlled_versioning/change_counter.rb
136
137
  - lib/controlled_versioning/change_tracker.rb
137
138
  - lib/controlled_versioning/change_tracker/attribute.rb
138
139
  - lib/controlled_versioning/change_tracker/child.rb
@@ -235,65 +236,65 @@ specification_version: 4
235
236
  summary: Adds model versioning to a Rails app, with the ability to approve and declined
236
237
  revisions.
237
238
  test_files:
238
- - spec/spec_helper.rb
239
- - spec/factories/parent_resources.rb
240
- - spec/factories/partially_inclusive_versionable_resources.rb
241
- - spec/factories/unversionable_resources.rb
242
- - spec/factories/handler_resources.rb
243
- - spec/factories/grand_child_resources.rb
239
+ - spec/factories/partially_exclusive_versionable_resources.rb
244
240
  - spec/factories/users.rb
241
+ - spec/factories/partially_inclusive_versionable_resources.rb
245
242
  - spec/factories/versionable_resources.rb
243
+ - spec/factories/handler_resources.rb
244
+ - spec/factories/parent_resources.rb
246
245
  - spec/factories/child_resources.rb
247
- - spec/factories/partially_exclusive_versionable_resources.rb
248
- - spec/models/controlled_versioning/version_spec.rb
249
- - spec/controlled_versioning_spec.rb
250
- - spec/dummy/config/database.yml
251
- - spec/dummy/config/initializers/session_store.rb
252
- - spec/dummy/config/initializers/secret_token.rb
253
- - spec/dummy/config/initializers/wrap_parameters.rb
254
- - spec/dummy/config/initializers/filter_parameter_logging.rb
255
- - spec/dummy/config/initializers/inflections.rb
256
- - spec/dummy/config/initializers/mime_types.rb
257
- - spec/dummy/config/initializers/backtrace_silencers.rb
258
- - spec/dummy/config/application.rb
246
+ - spec/factories/grand_child_resources.rb
247
+ - spec/factories/unversionable_resources.rb
248
+ - spec/spec_helper.rb
259
249
  - spec/dummy/config/environment.rb
260
- - spec/dummy/config/boot.rb
261
250
  - spec/dummy/config/routes.rb
251
+ - spec/dummy/config/locales/en.yml
252
+ - spec/dummy/config/environments/production.rb
262
253
  - spec/dummy/config/environments/development.rb
263
254
  - spec/dummy/config/environments/test.rb
264
- - spec/dummy/config/environments/production.rb
265
- - spec/dummy/config/locales/en.yml
266
- - spec/dummy/Rakefile
267
- - spec/dummy/bin/rake
268
- - spec/dummy/bin/bundle
269
- - spec/dummy/bin/rails
255
+ - spec/dummy/config/initializers/backtrace_silencers.rb
256
+ - spec/dummy/config/initializers/secret_token.rb
257
+ - spec/dummy/config/initializers/wrap_parameters.rb
258
+ - spec/dummy/config/initializers/mime_types.rb
259
+ - spec/dummy/config/initializers/inflections.rb
260
+ - spec/dummy/config/initializers/session_store.rb
261
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
262
+ - spec/dummy/config/boot.rb
263
+ - spec/dummy/config/application.rb
264
+ - spec/dummy/config/database.yml
265
+ - spec/dummy/README.rdoc
266
+ - spec/dummy/db/schema.rb
267
+ - spec/dummy/db/migrate/20140117222842_create_grand_child_resources.rb
268
+ - spec/dummy/db/migrate/20140117222808_create_versionable_resources.rb
269
+ - spec/dummy/db/migrate/20140117222814_create_partially_inclusive_versionable_resources.rb
270
+ - spec/dummy/db/migrate/20140118222842_create_handler_resources.rb
271
+ - spec/dummy/db/migrate/20140117222815_create_partially_exclusive_versionable_resources.rb
272
+ - spec/dummy/db/migrate/20140117222840_create_parent_resources.rb
273
+ - spec/dummy/db/migrate/20140117222841_create_child_resources.rb
274
+ - spec/dummy/db/migrate/20140117222828_create_nonversionable_resources.rb
275
+ - spec/dummy/db/migrate/20140117222800_create_users.rb
270
276
  - spec/dummy/public/422.html
277
+ - spec/dummy/public/500.html
271
278
  - spec/dummy/public/favicon.ico
272
279
  - spec/dummy/public/404.html
273
- - spec/dummy/public/500.html
274
- - spec/dummy/app/controllers/application_controller.rb
275
280
  - spec/dummy/app/helpers/application_helper.rb
276
- - spec/dummy/app/models/handler_resource.rb
281
+ - spec/dummy/app/views/layouts/application.html.erb
282
+ - spec/dummy/app/controllers/application_controller.rb
283
+ - spec/dummy/app/models/parent_resource.rb
284
+ - spec/dummy/app/models/user.rb
277
285
  - spec/dummy/app/models/child_resource.rb
278
- - spec/dummy/app/models/nonversionable_resource.rb
279
286
  - spec/dummy/app/models/versionable_resource.rb
280
287
  - spec/dummy/app/models/grand_child_resource.rb
281
288
  - spec/dummy/app/models/partially_exclusive_versionable_resource.rb
282
- - spec/dummy/app/models/parent_resource.rb
283
- - spec/dummy/app/models/user.rb
284
289
  - spec/dummy/app/models/partially_inclusive_versionable_resource.rb
285
- - spec/dummy/app/views/layouts/application.html.erb
290
+ - spec/dummy/app/models/handler_resource.rb
291
+ - spec/dummy/app/models/nonversionable_resource.rb
286
292
  - spec/dummy/app/assets/javascripts/application.js
287
293
  - spec/dummy/app/assets/stylesheets/application.css
294
+ - spec/dummy/Rakefile
295
+ - spec/dummy/bin/rails
296
+ - spec/dummy/bin/rake
297
+ - spec/dummy/bin/bundle
288
298
  - spec/dummy/config.ru
289
- - spec/dummy/README.rdoc
290
- - spec/dummy/db/schema.rb
291
- - spec/dummy/db/migrate/20140117222815_create_partially_exclusive_versionable_resources.rb
292
- - spec/dummy/db/migrate/20140117222808_create_versionable_resources.rb
293
- - spec/dummy/db/migrate/20140117222840_create_parent_resources.rb
294
- - spec/dummy/db/migrate/20140117222800_create_users.rb
295
- - spec/dummy/db/migrate/20140117222842_create_grand_child_resources.rb
296
- - spec/dummy/db/migrate/20140117222841_create_child_resources.rb
297
- - spec/dummy/db/migrate/20140118222842_create_handler_resources.rb
298
- - spec/dummy/db/migrate/20140117222814_create_partially_inclusive_versionable_resources.rb
299
- - spec/dummy/db/migrate/20140117222828_create_nonversionable_resources.rb
299
+ - spec/models/controlled_versioning/version_spec.rb
300
+ - spec/controlled_versioning_spec.rb