state_machine_audits 0.1.0 → 0.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.
@@ -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