controlled_versioning 0.10.0 → 0.11.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
- NzdiMmM3ZTU3MWI2YTQ4MjgxYWE5Y2E4ODRiYmRmM2U5NGNkZDg4OA==
4
+ YTg2ZTUxYzM1ZWU1NDM1YTllODA2NDE1NzFmYjBjNTI2YjMwMjg5NA==
5
5
  data.tar.gz: !binary |-
6
- ZTI3OTQ4MThkZWNmNTg5ZmNhOWE1NjAyZjdiNzg0MzliZmEwYmUxMA==
6
+ ZTFkMWMzMTZmNzNlZGQxNzc2OGM3YWI3YWUwZTgyOWU1ZGJjNjA0Mw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDRiYTI2NWU3OWY4YTgxNzljZTQ1NWM4YThjNDRmMGVkZTdhMGRkOGJjZjU5
10
- NGM3Mzg3ZWIyN2RlNTBjMDY5MTMzNDFlZGZhYjEwMDZhNDUyMThlYmVmZGQ1
11
- ZDg1YzE0NDg0NGJkYzNkMzZjZWExNjllZjBmMjc4MjNjYzAxYzA=
9
+ OWRlNWJiMjUzMzk4YTkwODZiNTExZGZkZGMxMjliMjhhYmRkMzg0ZTE2MTI0
10
+ NWU4MWExMzMyYzY1NTgzZGE5ZGE3OThjZTNlN2RiMmY1NWVhZDJiZjc3YTlj
11
+ ZDFmMTkwZDg3NDZjMDgxMjIwNWQ3ZTdmODUyODc3YmYyODE4NTA=
12
12
  data.tar.gz: !binary |-
13
- MTA5YmE1NzRjMjQ3N2IxYTMzODVhZjNiNjFlYmI1OTgwMGQ0ZDM0Y2EwOGMy
14
- Y2JkZjRhNGY0YmIyYmY2YWU3NWU2NGE2NDFhMGZkYzE2MTRiNzg4ZDFiN2I5
15
- NGU0ZmY0NzM4NzRjNmVkNTEyMjU3NzJjODgwNThlZTExZWE2Njk=
13
+ YmQ2NjQwYjY5YjIwMmQ4NGMwZTFiZWM4ZDYyNDhlY2E2NTM0MjIyYzg2ZGE0
14
+ NmJhMmQxNjEzODJiNmYxYTc2OTZiMmI0ODRhODc5ZTU3OWIzN2FhNTdiZjU3
15
+ MjMwOWM1ODVmMDQyZWJjZjAxNTRiMjIxMjA4ZTQ5YTkxZjkyNDE=
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2014 YOURNAME
1
+ Copyright 2014 Timothy Baron
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -9,22 +9,26 @@ module ControlledVersioning
9
9
  scope :accepted, -> { where(accepted: true) }
10
10
  scope :declined, -> { where(declined: true) }
11
11
 
12
+ after_create :run_user_generated_create_callbacks
13
+
12
14
  def accept
13
15
  if pending?
16
+ versionable.reload
14
17
  Revision::Publisher.new(self).accept_revision unless initial?
15
18
  update_attributes(pending: false, accepted: true)
16
- versionable.try(:when_accepting_anything)
17
- versionable.try(:when_accepting_an_initial_version) if initial?
18
- versionable.try(:when_accepting_a_revision) unless initial?
19
+ trigger_callbacks(:general_accepting_callbacks)
20
+ trigger_callbacks(:initial_accepting_callbacks) if initial?
21
+ trigger_callbacks(:revision_accepting_callbacks) unless initial?
19
22
  end
20
23
  end
21
24
 
22
25
  def decline
23
26
  if pending?
27
+ versionable.reload
24
28
  update_attributes(pending: false, declined: true)
25
- versionable.try(:when_declining_anything)
26
- versionable.try(:when_declining_an_initial_version) if initial?
27
- versionable.try(:when_declining_a_revision) unless initial?
29
+ trigger_callbacks(:general_declining_callbacks)
30
+ trigger_callbacks(:initial_declining_callbacks) if initial?
31
+ trigger_callbacks(:revision_declining_callbacks) unless initial?
28
32
  end
29
33
  end
30
34
 
@@ -35,5 +39,19 @@ module ControlledVersioning
35
39
  def is_a_child?
36
40
  false
37
41
  end
42
+
43
+ private
44
+ def run_user_generated_create_callbacks
45
+ trigger_callbacks(:general_creating_callbacks)
46
+ trigger_callbacks(:initial_creating_callbacks) if initial?
47
+ trigger_callbacks(:revision_creating_callbacks) unless initial?
48
+ end
49
+
50
+ def trigger_callbacks(type)
51
+ if versionable.class.respond_to?(type)
52
+ callbacks = versionable.class.send(type)
53
+ callbacks.each { |callback| versionable.send(callback) }
54
+ end
55
+ end
38
56
  end
39
57
  end
@@ -31,6 +31,27 @@ module ControlledVersioning
31
31
 
32
32
  send :include, InstanceMethods
33
33
 
34
+ def define_callbacks(*types)
35
+ types.each { |type| define_callback(type) }
36
+ end
37
+
38
+ def define_callback(type)
39
+ define_singleton_method("after_#{type}_a_version") do |*args|
40
+ options = args.extract_options!
41
+ options.merge!(only: :general) if options[:only].blank?
42
+ register_callback_methods(type, args, options)
43
+ end
44
+ end
45
+
46
+ def register_callback_methods(type, args, options)
47
+ restriction = options[:only].to_s
48
+ define_singleton_method("#{restriction}_#{type}_callbacks") do
49
+ args
50
+ end
51
+ end
52
+
53
+ define_callbacks :creating, :accepting, :declining
54
+
34
55
  def set_versionable_attribute_names(nonversionables)
35
56
  nonversionables = [] unless nonversionables.present?
36
57
  ArrayConverter.to_s!(nonversionables)
@@ -1,3 +1,3 @@
1
1
  module ControlledVersioning
2
- VERSION_NUMBER = "0.10.0"
2
+ VERSION_NUMBER = "0.11.0"
3
3
  end
@@ -1,30 +1,61 @@
1
1
  class HandlerResource < ActiveRecord::Base
2
- acts_as_versionable
3
-
4
- def when_accepting_anything
2
+ acts_as_versionable nonversionable_attributes: [:create_count, :accept_count,
3
+ :decline_count, :created_revisions_count, :accepted_revisions_count,
4
+ :declined_revisions_count, :has_been_created, :accepted, :declined]
5
+
6
+ after_creating_a_version :increment_create_count
7
+ after_creating_a_version :created, only: :initial
8
+ after_creating_a_version :increment_created_revision_count,
9
+ only: :revision
10
+
11
+ after_accepting_a_version :increment_accept_count
12
+ after_accepting_a_version :accept, only: :initial
13
+ after_accepting_a_version :increment_accepted_revision_count,
14
+ only: :revision
15
+
16
+ after_declining_a_version :increment_decline_count
17
+ after_declining_a_version :decline, only: :initial
18
+ after_declining_a_version :increment_declined_revision_count,
19
+ only: :revision
20
+
21
+ def increment_create_count
22
+ increment(:create_count)
23
+ save
24
+ end
25
+
26
+ def created
27
+ update_attribute(:has_been_created, true)
28
+ end
29
+
30
+ def increment_created_revision_count
31
+ increment(:created_revisions_count)
32
+ save
33
+ end
34
+
35
+ def increment_accept_count
5
36
  increment(:accept_count)
6
37
  save
7
38
  end
8
39
 
9
- def when_accepting_an_initial_version
40
+ def accept
10
41
  update_attribute(:accepted, true)
11
42
  end
12
43
 
13
- def when_accepting_a_revision
44
+ def increment_accepted_revision_count
14
45
  increment(:accepted_revisions_count)
15
46
  save
16
47
  end
17
48
 
18
- def when_declining_anything
49
+ def increment_decline_count
19
50
  increment(:decline_count)
20
51
  save
21
52
  end
22
53
 
23
- def when_declining_an_initial_version
54
+ def decline
24
55
  update_attribute(:declined, true)
25
56
  end
26
57
 
27
- def when_declining_a_revision
58
+ def increment_declined_revision_count
28
59
  increment(:declined_revisions_count)
29
60
  save
30
61
  end
@@ -11,11 +11,15 @@ class CreateHandlerResources < ActiveRecord::Migration
11
11
  t.text :r_text
12
12
  t.time :r_time
13
13
 
14
+ t.integer :create_count, null: false, default: 0
14
15
  t.integer :accept_count, null: false, default: 0
15
16
  t.integer :decline_count, null: false, default: 0
17
+
18
+ t.integer :created_revisions_count, null: false, default: 0
16
19
  t.integer :accepted_revisions_count, null: false, default: 0
17
20
  t.integer :declined_revisions_count, null: false, default: 0
18
21
 
22
+ t.boolean :has_been_created, null: false, default: false
19
23
  t.boolean :accepted, null: false, default: false
20
24
  t.boolean :declined, null: false, default: false
21
25
 
@@ -98,10 +98,13 @@ ActiveRecord::Schema.define(version: 20140206204920) do
98
98
  t.string "r_string"
99
99
  t.text "r_text"
100
100
  t.time "r_time"
101
+ t.integer "create_count", default: 0, null: false
101
102
  t.integer "accept_count", default: 0, null: false
102
103
  t.integer "decline_count", default: 0, null: false
104
+ t.integer "created_revisions_count", default: 0, null: false
103
105
  t.integer "accepted_revisions_count", default: 0, null: false
104
106
  t.integer "declined_revisions_count", default: 0, null: false
107
+ t.boolean "has_been_created", default: false, null: false
105
108
  t.boolean "accepted", default: false, null: false
106
109
  t.boolean "declined", default: false, null: false
107
110
  t.datetime "created_at"
@@ -95,6 +95,24 @@ describe ControlledVersioning::Version do
95
95
  @revision_two = @resource.submit_revision(r_string: "second revisions")
96
96
  end
97
97
 
98
+ context 'creations of' do
99
+ before :each do
100
+ @resource.reload
101
+ end
102
+
103
+ it 'any kind' do
104
+ expect(@resource.create_count).to eq 3
105
+ end
106
+
107
+ it 'initial versions' do
108
+ expect(@resource.has_been_created).to be_true
109
+ end
110
+
111
+ it 'revisions' do
112
+ expect(@resource.created_revisions_count).to eq 2
113
+ end
114
+ end
115
+
98
116
  context 'acceptances of' do
99
117
  before :each do
100
118
  @resource.initial_version.accept
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.10.0
4
+ version: 0.11.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-07 00:00:00.000000000 Z
11
+ date: 2014-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -229,71 +229,71 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
229
  version: '0'
230
230
  requirements: []
231
231
  rubyforge_project:
232
- rubygems_version: 2.2.1
232
+ rubygems_version: 2.2.2
233
233
  signing_key:
234
234
  specification_version: 4
235
235
  summary: Adds model versioning to a Rails app, with the ability to approve and declined
236
236
  revisions.
237
237
  test_files:
238
+ - spec/spec_helper.rb
238
239
  - spec/factories/parent_resources.rb
239
- - spec/factories/versionable_resources.rb
240
- - spec/factories/grand_child_resources.rb
241
- - spec/factories/handler_resources.rb
242
240
  - spec/factories/partially_inclusive_versionable_resources.rb
243
- - spec/factories/child_resources.rb
244
- - spec/factories/partially_exclusive_versionable_resources.rb
245
241
  - spec/factories/unversionable_resources.rb
242
+ - spec/factories/handler_resources.rb
243
+ - spec/factories/grand_child_resources.rb
246
244
  - spec/factories/users.rb
247
- - spec/spec_helper.rb
245
+ - spec/factories/versionable_resources.rb
246
+ - spec/factories/child_resources.rb
247
+ - spec/factories/partially_exclusive_versionable_resources.rb
248
248
  - spec/models/controlled_versioning/version_spec.rb
249
249
  - spec/controlled_versioning_spec.rb
250
- - spec/dummy/Rakefile
251
- - spec/dummy/public/favicon.ico
252
- - spec/dummy/public/422.html
253
- - spec/dummy/public/500.html
254
- - spec/dummy/public/404.html
255
- - spec/dummy/bin/rake
256
- - spec/dummy/bin/rails
257
- - spec/dummy/bin/bundle
258
- - spec/dummy/db/schema.rb
259
- - spec/dummy/db/migrate/20140117222808_create_versionable_resources.rb
260
- - spec/dummy/db/migrate/20140117222840_create_parent_resources.rb
261
- - spec/dummy/db/migrate/20140117222800_create_users.rb
262
- - spec/dummy/db/migrate/20140117222842_create_grand_child_resources.rb
263
- - spec/dummy/db/migrate/20140117222815_create_partially_exclusive_versionable_resources.rb
264
- - spec/dummy/db/migrate/20140117222828_create_nonversionable_resources.rb
265
- - spec/dummy/db/migrate/20140117222841_create_child_resources.rb
266
- - spec/dummy/db/migrate/20140117222814_create_partially_inclusive_versionable_resources.rb
267
- - spec/dummy/db/migrate/20140118222842_create_handler_resources.rb
268
- - spec/dummy/config.ru
269
- - spec/dummy/config/boot.rb
270
- - spec/dummy/config/initializers/wrap_parameters.rb
271
- - spec/dummy/config/initializers/inflections.rb
250
+ - spec/dummy/config/database.yml
272
251
  - spec/dummy/config/initializers/session_store.rb
273
- - spec/dummy/config/initializers/backtrace_silencers.rb
274
- - spec/dummy/config/initializers/filter_parameter_logging.rb
275
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
276
256
  - spec/dummy/config/initializers/mime_types.rb
277
- - spec/dummy/config/locales/en.yml
257
+ - spec/dummy/config/initializers/backtrace_silencers.rb
278
258
  - spec/dummy/config/application.rb
279
259
  - spec/dummy/config/environment.rb
260
+ - spec/dummy/config/boot.rb
280
261
  - spec/dummy/config/routes.rb
281
262
  - spec/dummy/config/environments/development.rb
282
263
  - spec/dummy/config/environments/test.rb
283
264
  - spec/dummy/config/environments/production.rb
284
- - spec/dummy/config/database.yml
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
270
+ - spec/dummy/public/422.html
271
+ - spec/dummy/public/favicon.ico
272
+ - spec/dummy/public/404.html
273
+ - spec/dummy/public/500.html
285
274
  - spec/dummy/app/controllers/application_controller.rb
286
- - spec/dummy/app/models/versionable_resource.rb
287
- - spec/dummy/app/models/user.rb
288
- - spec/dummy/app/models/parent_resource.rb
289
- - spec/dummy/app/models/partially_exclusive_versionable_resource.rb
275
+ - spec/dummy/app/helpers/application_helper.rb
276
+ - spec/dummy/app/models/handler_resource.rb
290
277
  - spec/dummy/app/models/child_resource.rb
291
278
  - spec/dummy/app/models/nonversionable_resource.rb
292
- - spec/dummy/app/models/handler_resource.rb
279
+ - spec/dummy/app/models/versionable_resource.rb
293
280
  - spec/dummy/app/models/grand_child_resource.rb
281
+ - spec/dummy/app/models/partially_exclusive_versionable_resource.rb
282
+ - spec/dummy/app/models/parent_resource.rb
283
+ - spec/dummy/app/models/user.rb
294
284
  - spec/dummy/app/models/partially_inclusive_versionable_resource.rb
295
285
  - spec/dummy/app/views/layouts/application.html.erb
296
- - spec/dummy/app/helpers/application_helper.rb
297
286
  - spec/dummy/app/assets/javascripts/application.js
298
287
  - spec/dummy/app/assets/stylesheets/application.css
288
+ - spec/dummy/config.ru
299
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