auditable 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,4 +1,9 @@
1
- ### 0.1.2 (2012-05-24
1
+ ### 0.1.3 (2012-05-24)
2
+ #### Fixes
3
+ * Fix a silly bug not loading the audits under the same `auditable_id`
4
+ * Get the latest audit via `id DESC` instead of `created_at DESC`
5
+
6
+ ### 0.1.2 (2012-05-24)
2
7
  #### Fixes
3
8
  * Fix bug creating duplicate audits despite no change in a record's subsequent saves, due to using `.build`. See this comment on ![issue #7](https://github.com/harleyttd/auditable/issues/7#issuecomment-5520894)
4
9
  * Fix bug not finding the right audit in rare cases when there are many audits with the same `created_at` timestamp
data/Gemfile CHANGED
@@ -2,6 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in auditable.gemspec
4
4
  gemspec
5
-
6
- gem 'debugger', :platform => :ruby_19
7
- gem 'ruby-debug', :platform => :ruby_18
data/auditable.gemspec CHANGED
@@ -4,7 +4,7 @@ require File.expand_path('../lib/auditable/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Harley Trung"]
6
6
  gem.email = ["harley@socialsci.com"]
7
- gem.description = %q{A simple gem that audit models' attributes or methods by taking snapshots and diff them for you. Starting from scratch to work with Rails 3.2.2 onwards}
7
+ gem.description = %q{A simple gem that audit ActiveRecord models' attributes or methods by taking snapshots and diff them for you. Starting from scratch to work with Rails 3.2.2 onwards}
8
8
  gem.summary = %q{A simple gem to audit attributes and methods in ActiveRecord models.}
9
9
  gem.homepage = "https://github.com/harleyttd/auditable"
10
10
 
@@ -19,10 +19,15 @@ Gem::Specification.new do |gem|
19
19
  gem.add_development_dependency 'rspec', '>= 2'
20
20
  gem.add_development_dependency 'watchr'
21
21
  gem.add_development_dependency 'sqlite3'
22
+ gem.add_development_dependency 'timecop'
22
23
  # documetation stuff
23
24
  gem.add_development_dependency 'yard'
24
25
  gem.add_development_dependency 'rdiscount'
25
- gem.add_development_dependency 'timecop'
26
+
27
+ # debugger. only included if one sets DEBUGGER env variable
28
+ if ENV['DEBUGGER']
29
+ gem.add_development_dependency 'debugger'
30
+ end
26
31
 
27
32
  gem.add_runtime_dependency 'activesupport', '>= 3.0'
28
33
  gem.add_runtime_dependency 'activerecord', '>= 3.0'
@@ -41,7 +41,7 @@ module Auditable
41
41
  # See #diff for more details
42
42
  def latest_diff(options = {})
43
43
  if options.present?
44
- scoped = auditable.audits.order("created_at DESC")
44
+ scoped = auditable.audits.order("id DESC")
45
45
  if tag = options.delete(:tag)
46
46
  scoped = scoped.where(:tag => tag)
47
47
  end
@@ -59,9 +59,9 @@ module Auditable
59
59
 
60
60
  # Diff this audit with the latest audit created before the `time` variable passed
61
61
  def diff_since(time)
62
- other_audit = self.class.where("created_at <= ? AND id != ?", time, id).order("created_at DESC").limit(1).first
62
+ other_audit = auditable.audits.where("created_at <= ? AND id != ?", time, id).order("id DESC").limit(1).first
63
63
  diff(other_audit)
64
- end
64
+ end
65
65
 
66
66
  # Returns user object
67
67
  #
@@ -1,3 +1,3 @@
1
1
  module Auditable
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -43,16 +43,25 @@ describe Auditable do
43
43
 
44
44
  it "should work after first update" do
45
45
  survey.update_attributes :title => "new title"
46
- survey.audited_changes.should == {"title" => ["test survey", "new title"]}
46
+ survey.audited_changes.should == {"title" => [nil, "new title"]}
47
47
  survey.audited_changes(:tag => "something").should == {"title" => [nil, "new title"]}
48
48
  survey.audits.count.should == 1
49
49
  end
50
50
 
51
- it "should create a new audit when calling audit_tag_with without existing audits" do
52
- survey.audits.count.should == 0
53
- survey.audit_tag_with("something") # no audit to tag but should be ok with it
54
- survey.audits.count.should == 1
55
- survey.audits.last.tag.should == "something"
51
+ describe ".audit_tag_with" do
52
+ it "should create a new audit when calling audit_tag_with without existing audits" do
53
+ expect do
54
+ survey.audit_tag_with("something") # no audit to tag but should be ok with it
55
+ end.to change { survey.audits.count }.from(0).to(1)
56
+ survey.audits.last.tag.should == "something"
57
+ end
58
+
59
+ it "should not create new audits when only tag changes" do
60
+ survey.audit_tag_with "one"
61
+ survey.audit_tag_with "two"
62
+ survey.audit_tag_with "three"
63
+ survey.audits.map(&:tag).should == ["three"]
64
+ end
56
65
  end
57
66
  end
58
67
 
@@ -170,6 +179,16 @@ describe Auditable do
170
179
  survey.save
171
180
  expect { 3.times { survey.save } }.to_not change { survey.audits.count }
172
181
  end
182
+
183
+ # TODO this behaviour is up for further debates: https://github.com/harleyttd/auditable/issues/7
184
+ it "should still store when only tag changes" do
185
+ survey.audits.delete_all
186
+ survey.update_attributes!(:audit_tag => 'one')
187
+ survey.update_attributes!(:audit_tag => 'two')
188
+ survey.update_attributes!(:audit_tag => 'three')
189
+ survey.update_attributes!(:audit_tag => 'four')
190
+ survey.audits.map(&:tag).should == %w[one two three four]
191
+ end
173
192
  end
174
193
 
175
194
  context "last change of a given attribute from past audits" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auditable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-05-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &2156001580 !ruby/object:Gem::Requirement
16
+ requirement: &2152531980 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2156001580
24
+ version_requirements: *2152531980
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &2155999120 !ruby/object:Gem::Requirement
27
+ requirement: &2152531400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '2'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2155999120
35
+ version_requirements: *2152531400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: watchr
38
- requirement: &2155994600 !ruby/object:Gem::Requirement
38
+ requirement: &2152530780 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2155994600
46
+ version_requirements: *2152530780
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sqlite3
49
- requirement: &2155992820 !ruby/object:Gem::Requirement
49
+ requirement: &2152530080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2155992820
57
+ version_requirements: *2152530080
58
58
  - !ruby/object:Gem::Dependency
59
- name: yard
60
- requirement: &2155991880 !ruby/object:Gem::Requirement
59
+ name: timecop
60
+ requirement: &2152529180 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2155991880
68
+ version_requirements: *2152529180
69
69
  - !ruby/object:Gem::Dependency
70
- name: rdiscount
71
- requirement: &2155990760 !ruby/object:Gem::Requirement
70
+ name: yard
71
+ requirement: &2152528200 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2155990760
79
+ version_requirements: *2152528200
80
80
  - !ruby/object:Gem::Dependency
81
- name: timecop
82
- requirement: &2155989640 !ruby/object:Gem::Requirement
81
+ name: rdiscount
82
+ requirement: &2152527680 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2155989640
90
+ version_requirements: *2152527680
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: activesupport
93
- requirement: &2155987940 !ruby/object:Gem::Requirement
93
+ requirement: &2152527140 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '3.0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *2155987940
101
+ version_requirements: *2152527140
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: activerecord
104
- requirement: &2155986140 !ruby/object:Gem::Requirement
104
+ requirement: &2152526620 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,9 +109,10 @@ dependencies:
109
109
  version: '3.0'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *2155986140
113
- description: A simple gem that audit models' attributes or methods by taking snapshots
114
- and diff them for you. Starting from scratch to work with Rails 3.2.2 onwards
112
+ version_requirements: *2152526620
113
+ description: A simple gem that audit ActiveRecord models' attributes or methods by
114
+ taking snapshots and diff them for you. Starting from scratch to work with Rails
115
+ 3.2.2 onwards
115
116
  email:
116
117
  - harley@socialsci.com
117
118
  executables: []