auditrail 0.0.3 → 0.0.4

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/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # auditrail
2
- An easy and unobtrusive way to track changes on Active Record models.
2
+ An easy and unobtrusive way to track changes on Active Record models (only tested with Ruby 1.9.2).
3
3
 
4
4
 
5
5
  ## How it works
@@ -84,6 +84,10 @@ Nothing yet.
84
84
  * Let the implementor configure where to store the audits.
85
85
  * What the audit table name will be.
86
86
 
87
+ # Changelog
88
+
89
+ * 0.0.4 Fixed validation to check unchanged attributes when updating.
90
+
87
91
  # About the Author
88
92
  [Crowd Interactive](http://www.crowdint.com) is an American web design and development
89
93
  company that happens to work in Colima, Mexico. We specialize in building and growing
@@ -0,0 +1,27 @@
1
+ module Auditrail
2
+ module ClassMethods
3
+ class AuditOptions
4
+
5
+ def initialize(&block)
6
+ instance_eval &block if block
7
+ end
8
+
9
+ def user
10
+ @user
11
+ end
12
+
13
+ def attributes
14
+ @attributes
15
+ end
16
+
17
+ private
18
+ def by_user(user = nil, &block)
19
+ @user = block ? block.call : user
20
+ end
21
+
22
+ def for_attributes(*attributes)
23
+ @attributes = attributes
24
+ end
25
+ end
26
+ end
27
+ end
@@ -3,6 +3,7 @@ require 'active_support/concern'
3
3
  require 'yaml'
4
4
  require 'generators/migrations'
5
5
  require 'generators/model'
6
+ require 'audit_options'
6
7
 
7
8
  module Auditrail
8
9
 
@@ -10,31 +11,6 @@ module Auditrail
10
11
 
11
12
  module ClassMethods
12
13
 
13
- class AuditOptions
14
-
15
- def initialize(&block)
16
- instance_eval &block if block
17
- end
18
-
19
- def user
20
- @user
21
- end
22
-
23
- def attributes
24
- @attributes
25
- end
26
-
27
- private
28
- def by_user(user = nil, &block)
29
- @user = block ? block.call : user
30
- end
31
-
32
- def for_attributes(*attributes)
33
- @attributes = attributes
34
- end
35
-
36
- end
37
-
38
14
  def auditable(&block)
39
15
  audit_options = block ? AuditOptions.new(&block) : AuditOptions.new
40
16
 
@@ -60,7 +36,7 @@ module Auditrail
60
36
 
61
37
  private
62
38
  def attributes_changed?(*options)
63
- (options - changes.keys) != options || options.empty?
39
+ ((options - changes.keys) != options || options.empty?) & changed?
64
40
  end
65
41
 
66
42
 
@@ -1,3 +1,3 @@
1
1
  module Auditrail
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Auditrail::ClassMethods::AuditOptions do
4
+ before {Object.const_set(:AuditOptions, Class.new(Auditrail::ClassMethods::AuditOptions))}
5
+
6
+ context 'methods' do
7
+ before {@audit_options = AuditOptions.new}
8
+
9
+ it 'should contain a method to obtain a user' do
10
+ @audit_options.should respond_to(:user)
11
+ end
12
+
13
+ it 'should contain a method to obtain a attributes' do
14
+ @audit_options.should respond_to(:attributes)
15
+ end
16
+ end
17
+
18
+ it 'should accept a block as aparameter'
19
+ end
@@ -72,13 +72,22 @@ describe 'A test class' do
72
72
  end
73
73
 
74
74
  context 'updates an existing object' do
75
- it "should receive a creating status" do
75
+ it "should receive an updating status" do
76
76
  instance = @test_class.first
77
77
  instance.name = "Text change"
78
78
  instance.save
79
79
  @audit_class.last.action.should eq("updating")
80
80
  end
81
- end
81
+ end
82
+
83
+ context 'updates an existing object' do
84
+ it "should no receive more elements when there is no changes" do
85
+ lambda{
86
+ instance = @test_class.first
87
+ instance.name = "Text"
88
+ instance.save}.should change(@audit_class, :count).by(0)
89
+ end
90
+ end
82
91
 
83
92
  end
84
93
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 3
9
- version: 0.0.3
8
+ - 4
9
+ version: 0.0.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Luis Galaviz
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-22 00:00:00 -06:00
18
+ date: 2011-01-05 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -95,12 +95,14 @@ files:
95
95
  - README.md
96
96
  - Rakefile
97
97
  - auditrail.gemspec
98
+ - lib/audit_options.rb
98
99
  - lib/auditrail.rb
99
100
  - lib/auditrail/version.rb
100
101
  - lib/generators/migrations.rb
101
102
  - lib/generators/model.rb
102
103
  - lib/generators/templates/audit_model.rb
103
104
  - lib/generators/templates/audits_table.rb
105
+ - spec/audit_options_spec.rb
104
106
  - spec/auditrail_spec.rb
105
107
  - spec/migrations_spec.rb
106
108
  - spec/model_generator_spec.rb
@@ -138,5 +140,10 @@ rubygems_version: 1.3.7
138
140
  signing_key:
139
141
  specification_version: 3
140
142
  summary: An easy and unobtrusive way to track changes on Active Record models
141
- test_files: []
142
-
143
+ test_files:
144
+ - spec/audit_options_spec.rb
145
+ - spec/auditrail_spec.rb
146
+ - spec/migrations_spec.rb
147
+ - spec/model_generator_spec.rb
148
+ - spec/spec_helper.rb
149
+ - spec/support/active_record.rb