acts_as_audited 1.1.0 → 1.1.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.1.1
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{acts_as_audited}
8
- s.version = "1.1.0"
8
+ s.version = "1.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brandon Keepers"]
12
- s.date = %q{2009-11-01}
12
+ s.date = %q{2010-04-03}
13
13
  s.email = %q{brandon@opensoul.org}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
41
41
  s.homepage = %q{http://github.com/collectiveidea/acts_as_audited}
42
42
  s.rdoc_options = ["--charset=UTF-8"]
43
43
  s.require_paths = ["lib"]
44
- s.rubygems_version = %q{1.3.5}
44
+ s.rubygems_version = %q{1.3.6}
45
45
  s.summary = %q{ActiveRecord extension that logs all changes to your models in an audits table}
46
46
  s.test_files = [
47
47
  "test/acts_as_audited_test.rb",
@@ -70,3 +70,4 @@ Gem::Specification.new do |s|
70
70
  s.add_dependency(%q<jnunemaker-matchy>, [">= 0"])
71
71
  end
72
72
  end
73
+
@@ -69,11 +69,12 @@ module CollectiveIdea #:nodoc:
69
69
 
70
70
  class_inheritable_reader :non_audited_columns
71
71
  class_inheritable_reader :auditing_enabled
72
-
72
+
73
73
  if options[:only]
74
74
  except = self.column_names - options[:only].flatten.map(&:to_s)
75
75
  else
76
- except = [self.primary_key, inheritance_column, 'lock_version', 'created_at', 'updated_at']
76
+ except = [self.primary_key, inheritance_column, 'lock_version',
77
+ 'created_at', 'updated_at', 'created_on', 'updated_on']
77
78
  except |= Array(options[:except]).collect(&:to_s) if options[:except]
78
79
  end
79
80
  write_inheritable_attribute :non_audited_columns, except
@@ -82,9 +83,9 @@ module CollectiveIdea #:nodoc:
82
83
  attr_protected :audit_ids if options[:protect]
83
84
  Audit.audited_class_names << self.to_s
84
85
 
85
- after_create :audit_create
86
- before_update :audit_update
87
- after_destroy :audit_destroy
86
+ after_create :audit_create if !options[:on] || (options[:on] && options[:on].include?(:create))
87
+ before_update :audit_update if !options[:on] || (options[:on] && options[:on].include?(:update))
88
+ after_destroy :audit_destroy if !options[:on] || (options[:on] && options[:on].include?(:destroy))
88
89
 
89
90
  attr_accessor :version
90
91
 
@@ -23,9 +23,6 @@ class Audit < ActiveRecord::Base
23
23
  self.audited_class_names.map(&:constantize)
24
24
  end
25
25
 
26
- cattr_accessor :audit_as_user
27
- self.audit_as_user = nil
28
-
29
26
  # All audits made during the block called will be recorded as made
30
27
  # by +user+. This method is hopefully threadsafe, making it ideal
31
28
  # for background operations that require audit information.
@@ -11,7 +11,7 @@ module CollectiveIdea
11
11
  User.should be_kind_of(CollectiveIdea::Acts::Audited::SingletonMethods)
12
12
  end
13
13
 
14
- ['created_at', 'updated_at', 'lock_version', 'id', 'password'].each do |column|
14
+ ['created_at', 'updated_at', 'created_on', 'updated_on', 'lock_version', 'id', 'password'].each do |column|
15
15
  should "not audit #{column}" do
16
16
  User.non_audited_columns.should include(column)
17
17
  end
@@ -20,7 +20,7 @@ module CollectiveIdea
20
20
  should "not save non-audited columns" do
21
21
  create_user.audits.first.changes.keys.any?{|col| ['created_at', 'updated_at', 'password'].include? col}.should be(false)
22
22
  end
23
-
23
+
24
24
  context "on create" do
25
25
  setup { @user = create_user }
26
26
 
@@ -37,8 +37,17 @@ module CollectiveIdea
37
37
  should "store all the audited attributes" do
38
38
  @user.audits.first.changes.should == @user.audited_attributes
39
39
  end
40
- end
40
+
41
+ should "not audit an attribute which is excepted if specified on create and on destroy" do
42
+ on_create_destroy_except_name = OnCreateDestroyExceptName.create(:name => 'Bart')
43
+ on_create_destroy_except_name.audits.first.changes.keys.any?{|col| ['name'].include? col}.should be(false)
44
+ end
41
45
 
46
+ should "not save an audit if only specified on update and on destroy" do
47
+ lambda { on_update_destroy = OnUpdateDestroy.create(:name => 'Bart') }.should_not change { Audit.count }
48
+ end
49
+ end
50
+
42
51
  context "on update" do
43
52
  setup do
44
53
  @user = create_user(:name => 'Brandon')
@@ -73,6 +82,10 @@ module CollectiveIdea
73
82
  end
74
83
  end
75
84
 
85
+ should "not save an audit if only specified on create and on destroy" do
86
+ on_create_destroy = OnCreateDestroy.create(:name => 'Bart')
87
+ lambda { on_create_destroy.update_attributes :name => 'Changed' }.should_not change { Audit.count }
88
+ end
76
89
  end
77
90
 
78
91
  context "on destroy" do
@@ -101,6 +114,11 @@ module CollectiveIdea
101
114
  revision = @user.audits.first.revision
102
115
  revision.name.should == @user.name
103
116
  end
117
+
118
+ should "not save an audit if only specified on create and on update" do
119
+ on_create_update = OnCreateUpdate.create(:name => 'Bart')
120
+ lambda { on_create_update.destroy }.should_not change { Audit.count }
121
+ end
104
122
  end
105
123
 
106
124
  context "dirty tracking" do
data/test/db/schema.rb CHANGED
@@ -12,7 +12,7 @@ ActiveRecord::Schema.define(:version => 0) do
12
12
  create_table :companies, :force => true do |t|
13
13
  t.column :name, :string
14
14
  end
15
-
15
+
16
16
  create_table :audits, :force => true do |t|
17
17
  t.column :auditable_id, :integer
18
18
  t.column :auditable_type, :string
data/test/test_helper.rb CHANGED
@@ -30,10 +30,31 @@ class User < ActiveRecord::Base
30
30
  write_attribute(:name, CGI.escapeHTML(val))
31
31
  end
32
32
  end
33
+
33
34
  class Company < ActiveRecord::Base
34
35
  acts_as_audited
35
36
  end
36
37
 
38
+ class OnUpdateDestroy < ActiveRecord::Base
39
+ set_table_name 'companies'
40
+ acts_as_audited :on => [:update, :destroy]
41
+ end
42
+
43
+ class OnCreateDestroy < ActiveRecord::Base
44
+ set_table_name 'companies'
45
+ acts_as_audited :on => [:create, :destroy]
46
+ end
47
+
48
+ class OnCreateDestroyExceptName < ActiveRecord::Base
49
+ set_table_name 'companies'
50
+ acts_as_audited :except => :name, :on => [:create, :destroy]
51
+ end
52
+
53
+ class OnCreateUpdate < ActiveRecord::Base
54
+ set_table_name 'companies'
55
+ acts_as_audited :on => [:create, :update]
56
+ end
57
+
37
58
  class Test::Unit::TestCase
38
59
  # def change(receiver=nil, message=nil, &block)
39
60
  # ChangeExpectation.new(self, receiver, message, &block)
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_audited
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 1
8
+ - 1
9
+ version: 1.1.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Brandon Keepers
@@ -9,39 +14,46 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-11-01 00:00:00 -04:00
17
+ date: 2010-04-03 00:00:00 -04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: activerecord
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 1
23
30
  version: "2.1"
24
- version:
31
+ type: :runtime
32
+ version_requirements: *id001
25
33
  - !ruby/object:Gem::Dependency
26
34
  name: thoughtbot-shoulda
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
30
37
  requirements:
31
38
  - - ">="
32
39
  - !ruby/object:Gem::Version
40
+ segments:
41
+ - 0
33
42
  version: "0"
34
- version:
43
+ type: :development
44
+ version_requirements: *id002
35
45
  - !ruby/object:Gem::Dependency
36
46
  name: jnunemaker-matchy
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
47
+ prerelease: false
48
+ requirement: &id003 !ruby/object:Gem::Requirement
40
49
  requirements:
41
50
  - - ">="
42
51
  - !ruby/object:Gem::Version
52
+ segments:
53
+ - 0
43
54
  version: "0"
44
- version:
55
+ type: :development
56
+ version_requirements: *id003
45
57
  description:
46
58
  email: brandon@opensoul.org
47
59
  executables: []
@@ -86,18 +98,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
98
  requirements:
87
99
  - - ">="
88
100
  - !ruby/object:Gem::Version
101
+ segments:
102
+ - 0
89
103
  version: "0"
90
- version:
91
104
  required_rubygems_version: !ruby/object:Gem::Requirement
92
105
  requirements:
93
106
  - - ">="
94
107
  - !ruby/object:Gem::Version
108
+ segments:
109
+ - 0
95
110
  version: "0"
96
- version:
97
111
  requirements: []
98
112
 
99
113
  rubyforge_project:
100
- rubygems_version: 1.3.5
114
+ rubygems_version: 1.3.6
101
115
  signing_key:
102
116
  specification_version: 3
103
117
  summary: ActiveRecord extension that logs all changes to your models in an audits table