controlled_versioning 0.10.0 → 0.11.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
- 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