state_machine_audits 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,10 +1,10 @@
1
1
  require 'state_machine_audits/state_machine_state_audit'
2
2
 
3
3
  module StateMachineAudits
4
- VERSION = "0.1.0"
5
4
  extend ActiveSupport::Concern
6
5
 
7
6
  included do
7
+ raise "class must inherit from ActiveRecord::Base" unless self < ActiveRecord::Base
8
8
  after_save :store_state_machine_audit
9
9
  has_many :state_machine_state_audits, :as => :state_machine_auditable
10
10
  end
@@ -14,7 +14,6 @@ module StateMachineAudits
14
14
  if self.changes.include?(_state.to_s)
15
15
  the_new_state = self.changes[_state].last
16
16
  self.state_machine_state_audits.create(:state => the_new_state, :state_field => _state.to_s)
17
- Rails.logger.warn "AUDITING STATE: #{_state} - #{the_new_state}" if Rails.env.development?
18
17
  end
19
18
  end
20
19
  end
@@ -1,3 +1,3 @@
1
1
  module StateMachineAudits
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -0,0 +1,56 @@
1
+ require 'active_record'
2
+ require 'active_support'
3
+ require 'state_machine'
4
+ require 'state_machine_audits'
5
+
6
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
7
+
8
+ ActiveRecord::Base.connection.create_table(:state_machine_state_audits) do |t|
9
+ t.string :state_machine_auditable_type
10
+ t.integer :state_machine_auditable_id
11
+ t.string :state_field
12
+ t.string :state
13
+ t.timestamps
14
+ end
15
+
16
+ ActiveRecord::Base.connection.create_table(:vehicles) do |t|
17
+ t.string :name
18
+ t.string :state
19
+ t.timestamps
20
+ end
21
+
22
+ class Vehicle < ActiveRecord::Base
23
+ include StateMachineAudits
24
+
25
+ state_machine :initial => :parked do
26
+ event :ignite do
27
+ transition :parked => :first_gear
28
+ end
29
+ end
30
+ end
31
+
32
+ describe StateMachineStateAudit do
33
+
34
+ let( :vehicle ) { Vehicle.new }
35
+
36
+ context 'when a state machine event is called on a model' do
37
+ it 'should create a new audit record' do
38
+ lambda { vehicle.ignite }.should change(StateMachineStateAudit, :count).by(1)
39
+ end
40
+
41
+ it 'should record the state' do
42
+ vehicle.ignite
43
+ vehicle.state_machine_state_audits.last.state.should == 'first_gear'
44
+ end
45
+ end
46
+
47
+
48
+ context 'when the class does not inherit from ActiveRecord::Base' do
49
+ it 'should raise an error' do
50
+ lambda do
51
+ class Truck; include StateMachineAudits; end
52
+ end.should raise_error "class must inherit from ActiveRecord::Base"
53
+ end
54
+ end
55
+
56
+ end
@@ -14,6 +14,8 @@ Gem::Specification.new do |s|
14
14
  s.rubyforge_project = "state_machine_audits"
15
15
 
16
16
  s.add_development_dependency "bundler", ">= 1.0.0.rc.6"
17
+ s.add_development_dependency "rspec", "~> 2.4.0"
18
+ s.add_development_dependency "sqlite3", "~> 1.3.3"
17
19
 
18
20
  s.add_dependency 'activesupport', '~> 3.0.0'
19
21
  s.add_dependency 'activerecord', '~> 3.0.0'
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: state_machine_audits
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 25
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 1
8
- - 0
9
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
10
11
  platform: ruby
11
12
  authors:
12
13
  - Josh Adams
@@ -16,16 +17,18 @@ autorequire:
16
17
  bindir: bin
17
18
  cert_chain: []
18
19
 
19
- date: 2011-01-14 00:00:00 -06:00
20
+ date: 2011-01-18 00:00:00 -06:00
20
21
  default_executable:
21
22
  dependencies:
22
23
  - !ruby/object:Gem::Dependency
23
24
  name: bundler
24
25
  prerelease: false
25
26
  requirement: &id001 !ruby/object:Gem::Requirement
27
+ none: false
26
28
  requirements:
27
29
  - - ">="
28
30
  - !ruby/object:Gem::Version
31
+ hash: 15424057
29
32
  segments:
30
33
  - 1
31
34
  - 0
@@ -36,47 +39,85 @@ dependencies:
36
39
  type: :development
37
40
  version_requirements: *id001
38
41
  - !ruby/object:Gem::Dependency
39
- name: activesupport
42
+ name: rspec
40
43
  prerelease: false
41
44
  requirement: &id002 !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ hash: 31
50
+ segments:
51
+ - 2
52
+ - 4
53
+ - 0
54
+ version: 2.4.0
55
+ type: :development
56
+ version_requirements: *id002
57
+ - !ruby/object:Gem::Dependency
58
+ name: sqlite3
59
+ prerelease: false
60
+ requirement: &id003 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ hash: 29
66
+ segments:
67
+ - 1
68
+ - 3
69
+ - 3
70
+ version: 1.3.3
71
+ type: :development
72
+ version_requirements: *id003
73
+ - !ruby/object:Gem::Dependency
74
+ name: activesupport
75
+ prerelease: false
76
+ requirement: &id004 !ruby/object:Gem::Requirement
77
+ none: false
42
78
  requirements:
43
79
  - - ~>
44
80
  - !ruby/object:Gem::Version
81
+ hash: 7
45
82
  segments:
46
83
  - 3
47
84
  - 0
48
85
  - 0
49
86
  version: 3.0.0
50
87
  type: :runtime
51
- version_requirements: *id002
88
+ version_requirements: *id004
52
89
  - !ruby/object:Gem::Dependency
53
90
  name: activerecord
54
91
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
92
+ requirement: &id005 !ruby/object:Gem::Requirement
93
+ none: false
56
94
  requirements:
57
95
  - - ~>
58
96
  - !ruby/object:Gem::Version
97
+ hash: 7
59
98
  segments:
60
99
  - 3
61
100
  - 0
62
101
  - 0
63
102
  version: 3.0.0
64
103
  type: :runtime
65
- version_requirements: *id003
104
+ version_requirements: *id005
66
105
  - !ruby/object:Gem::Dependency
67
106
  name: state_machine
68
107
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
108
+ requirement: &id006 !ruby/object:Gem::Requirement
109
+ none: false
70
110
  requirements:
71
111
  - - ~>
72
112
  - !ruby/object:Gem::Version
113
+ hash: 51
73
114
  segments:
74
115
  - 0
75
116
  - 9
76
117
  - 4
77
118
  version: 0.9.4
78
119
  type: :runtime
79
- version_requirements: *id004
120
+ version_requirements: *id006
80
121
  description:
81
122
  email:
82
123
  - josh@isotope11.com
@@ -93,8 +134,8 @@ files:
93
134
  - Rakefile
94
135
  - lib/state_machine_audits.rb
95
136
  - lib/state_machine_audits/state_machine_state_audit.rb
96
- - lib/state_machine_audits/state_machine_state_audits.rb
97
137
  - lib/state_machine_audits/version.rb
138
+ - spec/state_machine_audits_spec.rb
98
139
  - state_machine_audits.gemspec
99
140
  has_rdoc: true
100
141
  homepage: http://rubygems.org/gems/state_machine_audits
@@ -106,16 +147,20 @@ rdoc_options: []
106
147
  require_paths:
107
148
  - lib
108
149
  required_ruby_version: !ruby/object:Gem::Requirement
150
+ none: false
109
151
  requirements:
110
152
  - - ">="
111
153
  - !ruby/object:Gem::Version
154
+ hash: 3
112
155
  segments:
113
156
  - 0
114
157
  version: "0"
115
158
  required_rubygems_version: !ruby/object:Gem::Requirement
159
+ none: false
116
160
  requirements:
117
161
  - - ">="
118
162
  - !ruby/object:Gem::Version
163
+ hash: 23
119
164
  segments:
120
165
  - 1
121
166
  - 3
@@ -124,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
169
  requirements: []
125
170
 
126
171
  rubyforge_project: state_machine_audits
127
- rubygems_version: 1.3.6
172
+ rubygems_version: 1.4.1
128
173
  signing_key:
129
174
  specification_version: 3
130
175
  summary: Audits for the state_machine gem
@@ -1,3 +0,0 @@
1
- class StateMachineStateAudits < ActiveRecord::Base
2
- belongs_to :state_machine_auditable, :polymorphic => true
3
- end