active_metadata 0.8.7 → 0.8.7.1

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