statesman 1.2.3 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 747626de855901f8252afbc7bae793d67c3e062a
4
- data.tar.gz: f6b3c8239d7b92883c4bffce040d133cfc7cedfd
3
+ metadata.gz: 8247dd4b145c4c16a848f6cba121782199a05f43
4
+ data.tar.gz: 2f4b476e0b585f432f06985d759357d84f1ac1d1
5
5
  SHA512:
6
- metadata.gz: 3db31cb3e861d3230ab1f631c30727709251d70e109a27c3b723bcfe0f213ed3f73f82920a939e9ac897e87db8cee5852c20f4e8103fc3a7a210a57b62445f07
7
- data.tar.gz: b17bfbc8186d3c0bc888cb0c92e282cd8174b0cb64dcd78185b6b40ed9bac8b2112314ca4ee0031d0293af07aeaa7cc7b2960809e7daa9ec89a8e5d785ad5550
6
+ metadata.gz: 52b5b0d12f0b0741874afa857633c91e0eeba7c79678cb8f4da9d474b2227f7ca870cfa5ead883ad780a503a77028de7fa830e890e7d5611683245da0f00500d
7
+ data.tar.gz: df47a34f64bcea46519b56c450ceb0cec66233316fb03ff515578074babb6ecdcb98136ff357e8c7fb7fbf12359187c320f1101abd7aab97e1dab936ebfab2d3
data/.rubocop.yml CHANGED
@@ -42,3 +42,7 @@ SingleSpaceBeforeFirstArg:
42
42
 
43
43
  DotPosition:
44
44
  EnforcedStyle: trailing
45
+
46
+ # Allow class and message or instance raises
47
+ Style/RaiseArgs:
48
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## v1.2.4 16 June 2015
2
+
3
+ - Clarify error messages when misusing `Statesman::Adapters::ActiveRecordTransition` (patch by [@isaacseymour](https://github.com/isaacseymour))
4
+
1
5
  ## v1.2.3 14 April 2015
2
6
 
3
7
  - Fix use of most_recent column in MySQL (partial indexes aren't supported) (patch by [@greysteil](https://github.com/greysteil))
data/README.md CHANGED
@@ -200,7 +200,7 @@ an array of states (`.transition(from: :some_state, to: [:another_state, :some_o
200
200
 
201
201
  #### `Machine.guard_transition`
202
202
  ```ruby
203
- Machine.guard_transition(from: :some_state, to: another_state) do |object|
203
+ Machine.guard_transition(from: :some_state, to: :another_state) do |object|
204
204
  object.some_boolean?
205
205
  end
206
206
  ```
@@ -210,7 +210,7 @@ be idempotent as it could be called many times.
210
210
 
211
211
  #### `Machine.before_transition`
212
212
  ```ruby
213
- Machine.before_transition(from: :some_state, to: another_state) do |object|
213
+ Machine.before_transition(from: :some_state, to: :another_state) do |object|
214
214
  object.side_effect
215
215
  end
216
216
  ```
@@ -220,7 +220,7 @@ have side-effects as it will only be run once immediately before the transition.
220
220
 
221
221
  #### `Machine.after_transition`
222
222
  ```ruby
223
- Machine.after_transition(from: :some_state, to: another_state) do |object, transition|
223
+ Machine.after_transition(from: :some_state, to: :another_state) do |object, transition|
224
224
  object.side_effect
225
225
  end
226
226
  ```
@@ -394,9 +394,8 @@ Callbacks are tested by asserting that the action they perform occurs:
394
394
  describe "some callback" do
395
395
  it "adds one to the count property on the model" do
396
396
  expect { some_model.transition_to!(:some_state) }.
397
- to change {
398
- some_model.reload.count
399
- }.by(1)
397
+ to change { some_model.reload.count }.
398
+ by(1)
400
399
  end
401
400
  end
402
401
  ```
@@ -21,12 +21,9 @@ module Statesman
21
21
  serialized = serialized?(transition_class)
22
22
  column_type = transition_class.columns_hash['metadata'].sql_type
23
23
  if !serialized && !JSON_COLUMN_TYPES.include?(column_type)
24
- raise UnserializedMetadataError,
25
- "#{transition_class.name}#metadata is not serialized"
24
+ raise UnserializedMetadataError.new(transition_class.name)
26
25
  elsif serialized && JSON_COLUMN_TYPES.include?(column_type)
27
- raise IncompatibleSerializationError,
28
- "#{transition_class.name}#metadata column type cannot be json
29
- and serialized simultaneously"
26
+ raise IncompatibleSerializationError.new(transition_class.name)
30
27
  end
31
28
  @transition_class = transition_class
32
29
  @parent_model = parent_model
@@ -4,7 +4,34 @@ module Statesman
4
4
  class InvalidCallbackError < StandardError; end
5
5
  class GuardFailedError < StandardError; end
6
6
  class TransitionFailedError < StandardError; end
7
- class UnserializedMetadataError < StandardError; end
8
- class IncompatibleSerializationError < StandardError; end
9
7
  class TransitionConflictError < StandardError; end
8
+
9
+ class UnserializedMetadataError < StandardError
10
+ def initialize(transition_class_name)
11
+ super(_message(transition_class_name))
12
+ end
13
+
14
+ private
15
+
16
+ def _message(transition_class_name)
17
+ "#{transition_class_name}#metadata is not serialized. If you " \
18
+ "are using a non-json column type, you should `include " \
19
+ "Statesman::Adapters::ActiveRecordTransition`"
20
+ end
21
+ end
22
+
23
+ class IncompatibleSerializationError < StandardError
24
+ def initialize(transition_class_name)
25
+ super(_message(transition_class_name))
26
+ end
27
+
28
+ private
29
+
30
+ def _message(transition_class_name)
31
+ "#{transition_class_name}#metadata column type cannot be json " \
32
+ "and serialized simultaneously. If you are using a json " \
33
+ "column type, it is not necessary to `include " \
34
+ "Statesman::Adapters::ActiveRecordTransition`"
35
+ end
36
+ end
10
37
  end
@@ -1,3 +1,3 @@
1
1
  module Statesman
2
- VERSION = "1.2.3"
2
+ VERSION = "1.2.4"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,15 @@
1
1
  require "statesman"
2
2
  require "sqlite3"
3
3
  require "active_record"
4
+ # We have to include all of Rails to make rspec-rails work
5
+ require "rails"
6
+ require "action_view"
7
+ require "action_dispatch"
8
+ require "action_controller"
9
+ require "rspec/rails"
4
10
  require "support/active_record"
5
11
  require "mongoid"
6
- require 'rspec/its'
12
+ require "rspec/its"
7
13
 
8
14
  RSpec.configure do |config|
9
15
  config.raise_errors_for_deprecations!
@@ -1,4 +1,5 @@
1
1
  require "rails/version"
2
+ require "rspec/rails"
2
3
  require "ammeter/init"
3
4
 
4
5
  TMP_GENERATOR_PATH = File.expand_path('../generator-tmp', __FILE__)
data/statesman.gemspec CHANGED
@@ -21,13 +21,14 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec", "~> 3.1"
24
+ spec.add_development_dependency "rspec-rails", "~> 3.1"
24
25
  spec.add_development_dependency "rspec-its", "~> 1.1"
25
26
  spec.add_development_dependency "guard-rspec", "~> 4.3"
26
27
  spec.add_development_dependency "rubocop", "~> 0.30.0"
27
28
  spec.add_development_dependency "guard-rubocop", "~> 1.2"
28
29
  spec.add_development_dependency "sqlite3", "~> 1.3"
29
30
  spec.add_development_dependency "mongoid", ">= 3.1"
30
- spec.add_development_dependency "activerecord", ">= 3.2"
31
+ spec.add_development_dependency "rails", ">= 3.2"
31
32
  spec.add_development_dependency "pg", "~> 0.18"
32
33
  spec.add_development_dependency "mysql2", "~> 0.3"
33
34
  spec.add_development_dependency "ammeter", "~> 1.1"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statesman
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Marr
@@ -9,188 +9,202 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-14 00:00:00.000000000 Z
12
+ date: 2015-06-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '1.3'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.3'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '3.1'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '3.1'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec-rails
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '3.1'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
54
68
  - !ruby/object:Gem::Version
55
69
  version: '3.1'
56
70
  - !ruby/object:Gem::Dependency
57
71
  name: rspec-its
58
72
  requirement: !ruby/object:Gem::Requirement
59
73
  requirements:
60
- - - ~>
74
+ - - "~>"
61
75
  - !ruby/object:Gem::Version
62
76
  version: '1.1'
63
77
  type: :development
64
78
  prerelease: false
65
79
  version_requirements: !ruby/object:Gem::Requirement
66
80
  requirements:
67
- - - ~>
81
+ - - "~>"
68
82
  - !ruby/object:Gem::Version
69
83
  version: '1.1'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: guard-rspec
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
- - - ~>
88
+ - - "~>"
75
89
  - !ruby/object:Gem::Version
76
90
  version: '4.3'
77
91
  type: :development
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
- - - ~>
95
+ - - "~>"
82
96
  - !ruby/object:Gem::Version
83
97
  version: '4.3'
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: rubocop
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
- - - ~>
102
+ - - "~>"
89
103
  - !ruby/object:Gem::Version
90
104
  version: 0.30.0
91
105
  type: :development
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
- - - ~>
109
+ - - "~>"
96
110
  - !ruby/object:Gem::Version
97
111
  version: 0.30.0
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: guard-rubocop
100
114
  requirement: !ruby/object:Gem::Requirement
101
115
  requirements:
102
- - - ~>
116
+ - - "~>"
103
117
  - !ruby/object:Gem::Version
104
118
  version: '1.2'
105
119
  type: :development
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
108
122
  requirements:
109
- - - ~>
123
+ - - "~>"
110
124
  - !ruby/object:Gem::Version
111
125
  version: '1.2'
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: sqlite3
114
128
  requirement: !ruby/object:Gem::Requirement
115
129
  requirements:
116
- - - ~>
130
+ - - "~>"
117
131
  - !ruby/object:Gem::Version
118
132
  version: '1.3'
119
133
  type: :development
120
134
  prerelease: false
121
135
  version_requirements: !ruby/object:Gem::Requirement
122
136
  requirements:
123
- - - ~>
137
+ - - "~>"
124
138
  - !ruby/object:Gem::Version
125
139
  version: '1.3'
126
140
  - !ruby/object:Gem::Dependency
127
141
  name: mongoid
128
142
  requirement: !ruby/object:Gem::Requirement
129
143
  requirements:
130
- - - '>='
144
+ - - ">="
131
145
  - !ruby/object:Gem::Version
132
146
  version: '3.1'
133
147
  type: :development
134
148
  prerelease: false
135
149
  version_requirements: !ruby/object:Gem::Requirement
136
150
  requirements:
137
- - - '>='
151
+ - - ">="
138
152
  - !ruby/object:Gem::Version
139
153
  version: '3.1'
140
154
  - !ruby/object:Gem::Dependency
141
- name: activerecord
155
+ name: rails
142
156
  requirement: !ruby/object:Gem::Requirement
143
157
  requirements:
144
- - - '>='
158
+ - - ">="
145
159
  - !ruby/object:Gem::Version
146
160
  version: '3.2'
147
161
  type: :development
148
162
  prerelease: false
149
163
  version_requirements: !ruby/object:Gem::Requirement
150
164
  requirements:
151
- - - '>='
165
+ - - ">="
152
166
  - !ruby/object:Gem::Version
153
167
  version: '3.2'
154
168
  - !ruby/object:Gem::Dependency
155
169
  name: pg
156
170
  requirement: !ruby/object:Gem::Requirement
157
171
  requirements:
158
- - - ~>
172
+ - - "~>"
159
173
  - !ruby/object:Gem::Version
160
174
  version: '0.18'
161
175
  type: :development
162
176
  prerelease: false
163
177
  version_requirements: !ruby/object:Gem::Requirement
164
178
  requirements:
165
- - - ~>
179
+ - - "~>"
166
180
  - !ruby/object:Gem::Version
167
181
  version: '0.18'
168
182
  - !ruby/object:Gem::Dependency
169
183
  name: mysql2
170
184
  requirement: !ruby/object:Gem::Requirement
171
185
  requirements:
172
- - - ~>
186
+ - - "~>"
173
187
  - !ruby/object:Gem::Version
174
188
  version: '0.3'
175
189
  type: :development
176
190
  prerelease: false
177
191
  version_requirements: !ruby/object:Gem::Requirement
178
192
  requirements:
179
- - - ~>
193
+ - - "~>"
180
194
  - !ruby/object:Gem::Version
181
195
  version: '0.3'
182
196
  - !ruby/object:Gem::Dependency
183
197
  name: ammeter
184
198
  requirement: !ruby/object:Gem::Requirement
185
199
  requirements:
186
- - - ~>
200
+ - - "~>"
187
201
  - !ruby/object:Gem::Version
188
202
  version: '1.1'
189
203
  type: :development
190
204
  prerelease: false
191
205
  version_requirements: !ruby/object:Gem::Requirement
192
206
  requirements:
193
- - - ~>
207
+ - - "~>"
194
208
  - !ruby/object:Gem::Version
195
209
  version: '1.1'
196
210
  description: A statesmanlike state machine library
@@ -200,9 +214,9 @@ executables: []
200
214
  extensions: []
201
215
  extra_rdoc_files: []
202
216
  files:
203
- - .gitignore
204
- - .rubocop.yml
205
- - .travis.yml
217
+ - ".gitignore"
218
+ - ".rubocop.yml"
219
+ - ".travis.yml"
206
220
  - CHANGELOG.md
207
221
  - CONTRIBUTING.md
208
222
  - Gemfile
@@ -274,17 +288,17 @@ require_paths:
274
288
  - lib
275
289
  required_ruby_version: !ruby/object:Gem::Requirement
276
290
  requirements:
277
- - - '>='
291
+ - - ">="
278
292
  - !ruby/object:Gem::Version
279
293
  version: '0'
280
294
  required_rubygems_version: !ruby/object:Gem::Requirement
281
295
  requirements:
282
- - - '>='
296
+ - - ">="
283
297
  - !ruby/object:Gem::Version
284
298
  version: '0'
285
299
  requirements: []
286
300
  rubyforge_project:
287
- rubygems_version: 2.2.2
301
+ rubygems_version: 2.4.1
288
302
  signing_key:
289
303
  specification_version: 4
290
304
  summary: A statesmanlike state machine library
@@ -312,3 +326,4 @@ test_files:
312
326
  - spec/support/active_record.rb
313
327
  - spec/support/generators_shared_examples.rb
314
328
  - spec/support/mongoid.rb
329
+ has_rdoc: