controlled_versioning 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
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