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
|
-
|
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
|
data/spec/lib/history_spec.rb
CHANGED
@@ -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-
|
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:
|
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:
|
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
|