active_metadata 0.8.7 → 0.8.7.1

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.
@@ -9,10 +9,7 @@ module ActiveMetadata::Persistence::History
9
9
  def save_history
10
10
  return if ActiveMetadata.skip_history?
11
11
  self.changes.each do |key, value|
12
- # Do not go on in case if new and old values are nil
13
- # https://github.com/rails/rails/issues/8874
14
- return if value.compact.empty?
15
- next if ActiveMetadata::CONFIG['history_skip_fields'].include?(key)
12
+ next if ActiveMetadata::CONFIG['history_skip_fields'].include?(key) || !change_is_valid_for_history?(value)
16
13
  ActiveMetadata::History.create! :value => value[1],:model_class => metadata_class, :model_id => metadata_id,:label => key.to_s, :created_by => current_user_id
17
14
  invalidate_history_cache_for key.to_s
18
15
  self.send(:send_notification, key, value[0], value[1], :history_message, current_user_id) unless skip_history_notification?
@@ -35,6 +32,20 @@ module ActiveMetadata::Persistence::History
35
32
  ActiveMetadata::History.all(:conditions => {:model_class => metadata_class, :model_id => metadata_id,:label => field}, :order => order)
36
33
  end
37
34
 
35
+ private
36
+
37
+ # Private
38
+ #
39
+ # - change The change array coming from AR changes method
40
+ #
41
+ # Return false if chnage has the following aspect:
42
+ # * [nil, nil]
43
+ # * ["", nil]
44
+ # * [nil, ""]
45
+ def change_is_valid_for_history? change
46
+ sanitized_change = change.dup.compact
47
+ sanitized_change.empty? || (sanitized_change.size == 1 && sanitized_change[0].to_s.blank?) ? false : true
48
+ end
38
49
 
39
50
  end
40
51
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveMetadata
2
- VERSION = "0.8.7"
2
+ VERSION = "0.8.7.1"
3
3
  end
@@ -3,7 +3,6 @@ require "time"
3
3
 
4
4
  describe ActiveMetadata do
5
5
 
6
-
7
6
  describe "history" do
8
7
 
9
8
  before(:each) do
@@ -28,8 +27,6 @@ describe ActiveMetadata do
28
27
  end
29
28
 
30
29
  it "should not save the history and send any notification if new value and old are both nil" do
31
- # see
32
- # https://github.com/rails/rails/issues/8874
33
30
  @user = User.create!(:email => "email@email.it", :firstname => 'John', :lastname => 'smith')
34
31
  ActiveMetadata::Watcher.create! :model_class => "Document", :label => :date, :owner_id => @user.id
35
32
  @document.date = ""
@@ -38,6 +35,15 @@ describe ActiveMetadata do
38
35
  @document.history_for(:date).should be_empty
39
36
  end
40
37
 
38
+ it "should not save the history and send any notification if changes is [nil,""]" do
39
+ @user = User.create!(:email => "email@email.it", :lastname => 'smith')
40
+ ActiveMetadata::Watcher.create! :model_class => "Document", :label => :date, :owner_id => @user.id
41
+ @document.surname = ""
42
+ @document.save
43
+ @document.notifier.should be_nil
44
+ @document.history_for(:surname).should be_empty
45
+ end
46
+
41
47
  it "should verify that history return records only for the self document" do
42
48
  # fixtures
43
49
  @another_doc = Document.create :name => "Andrea"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.7
4
+ version: 0.8.7.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-01-15 00:00:00.000000000 Z
13
+ date: 2013-01-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -245,7 +245,6 @@ files:
245
245
  - spec/dummy/public/500.html
246
246
  - spec/dummy/public/favicon.ico
247
247
  - spec/dummy/script/rails
248
- - spec/dummy/tmp/cache/.gitkeep
249
248
  - spec/helpers/active_metadata/stream_helpers_spec.rb
250
249
  - spec/lib/active_metadata_spec.rb
251
250
  - spec/lib/attachments_spec.rb
@@ -278,7 +277,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
278
277
  version: '0'
279
278
  segments:
280
279
  - 0
281
- hash: 3047558855022061685
280
+ hash: -264193675356772785
282
281
  required_rubygems_version: !ruby/object:Gem::Requirement
283
282
  none: false
284
283
  requirements:
@@ -287,7 +286,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
287
286
  version: '0'
288
287
  segments:
289
288
  - 0
290
- hash: 3047558855022061685
289
+ hash: -264193675356772785
291
290
  requirements: []
292
291
  rubyforge_project: active_metadata
293
292
  rubygems_version: 1.8.24
@@ -340,7 +339,6 @@ test_files:
340
339
  - spec/dummy/public/500.html
341
340
  - spec/dummy/public/favicon.ico
342
341
  - spec/dummy/script/rails
343
- - spec/dummy/tmp/cache/.gitkeep
344
342
  - spec/helpers/active_metadata/stream_helpers_spec.rb
345
343
  - spec/lib/active_metadata_spec.rb
346
344
  - spec/lib/attachments_spec.rb
File without changes