police_state 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47f665aae832d5746617bc30b6cfb58bcd0701544adda6feda21684d653ba10d
4
- data.tar.gz: b04a2119131c0fcc5c5f3c5c9b1defd47cc6081dd6ff9d09101b3cb319f96775
3
+ metadata.gz: a685b8954d8d16307a98d00bbea5b351dac53ecde4a439f2e37df9853bbabf7d
4
+ data.tar.gz: e1b69d7295fb9f4380d7434eef84c2076e0bd8c3b2dd935cb2feadc73f9e9b1c
5
5
  SHA512:
6
- metadata.gz: ee47ba665ec350f1fbdf0ee9bd38d7c8a97846aedddd23619a1d4e465e0a35396a1c50ac6180f0bdbb7c1dd2267a52e6f883f7295de18add5c68490773e702bd
7
- data.tar.gz: 759653bd39ff42d876bcb9a6dc449ae9fc427aa0ed0d1a246a4198ab9975d1fe18b44902f93366965047ae81beb88f2a5f4f02918d4c87228716e331472ff5b1
6
+ metadata.gz: c3a81784c20c41dce2f1e3d2f887821e3cf74fc127ee5370db8709f79a4ccc23a299b476e6034e40820bb9ed1b878dc76887862dd24d102366ca1fee61a1d13e
7
+ data.tar.gz: 3234e7617756f20ee9daa6c535ee0a9b74b64441b6a26ae4d7cbb08c1db6bd5b43cacc6b08eeedb102e0caf75f811c3ea5fbe183c313f5e469708521bad9fbb0
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- [![Build Status](https://travis-ci.org/ianpurvis/police_state.svg?branch=master)](https://travis-ci.org/ianpurvis/police_state)
1
+ [![Build Status](https://travis-ci.com/ianpurvis/police_state.svg?branch=master)](https://travis-ci.com/ianpurvis/police_state)
2
+ [![codecov](https://codecov.io/gh/ianpurvis/police_state/branch/master/graph/badge.svg)](https://codecov.io/gh/ianpurvis/police_state)
2
3
  [![Doc Status](http://inch-ci.org/github/ianpurvis/police_state.svg?branch=master)](http://inch-ci.org/github/ianpurvis/police_state)
3
4
 
4
5
  # Police State
@@ -145,3 +146,5 @@ $ gem install police_state
145
146
 
146
147
  ## License
147
148
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
149
+
150
+ [![https://purvisresearch.com](logo.svg)](https://purvisresearch.com)
@@ -31,7 +31,7 @@ module PoliceState
31
31
  # model.status_transitioned?(to: "complete") # => true
32
32
  # model.status_transitioned?(from: nil, to: :complete) # => true
33
33
  def attribute_transitioned?(attr, options={})
34
- options = _transform_options_for_attribute(attr, options)
34
+ options = _type_cast_transition_options(attr, options)
35
35
  !!previous_changes.include?(attr) &&
36
36
  (!options.include?(:to) || options[:to] == previous_changes[attr].last) &&
37
37
  (!options.include?(:from) || options[:from] == previous_changes[attr].first)
@@ -52,20 +52,22 @@ module PoliceState
52
52
  # model.status_transitioning?(to: "complete") # => true
53
53
  # model.status_transitioning?(from: nil, to: :complete) # => true
54
54
  def attribute_transitioning?(attr, options={})
55
- options = _transform_options_for_attribute(attr, options)
56
- attribute_changed?(attr, options)
55
+ options = _type_cast_transition_options(attr, options)
56
+ !!attribute_changed?(attr, options)
57
57
  end
58
58
 
59
59
 
60
60
  private
61
61
 
62
- # Facilitates easier change checking for ActiveRecord::Enum attributes
63
- # by casting any symbolized :to and :from values into their native strings.
64
- def _transform_options_for_attribute(attr, options={})
65
- return options unless self.class.respond_to?(:attribute_types)
66
- options.transform_values {|value|
67
- self.class.attribute_types.with_indifferent_access[attr].cast(value)
68
- }
62
+ # Returns +true+ if +attribute+ is an ActiveRecord::Enum, otherwise +false+.
63
+ def _attribute_enum?(attr)
64
+ return false unless self.class.respond_to?(:defined_enums)
65
+ self.class.defined_enums.with_indifferent_access.include?(attr)
66
+ end
67
+
68
+ # Casts +:to+ and +:from+ to string when attribute is an ActiveRecord::Enum.
69
+ def _type_cast_transition_options(attr, options={})
70
+ _attribute_enum?(attr) ? options.transform_values(&:to_s) : options
69
71
  end
70
72
  end
71
73
  end
@@ -16,17 +16,17 @@ module PoliceState
16
16
 
17
17
  private
18
18
 
19
- def destination
19
+ def allowed_destination
20
20
  options[:to]
21
21
  end
22
22
 
23
- def origins
23
+ def allowed_origins
24
24
  options[:from].instance_eval {nil? ? [nil] : Array.wrap(self)}
25
25
  end
26
26
 
27
27
  def transition_allowed?(record, attr_name)
28
- !record.attribute_transitioning?(attr_name, to: destination) ||
29
- origins.any? {|origin| record.attribute_transitioning?(attr_name, from: origin)}
28
+ !record.attribute_transitioning?(attr_name, to: allowed_destination) ||
29
+ allowed_origins.any? {|origin| record.attribute_transitioning?(attr_name, from: origin)}
30
30
  end
31
31
  end
32
32
  end
@@ -1,3 +1,3 @@
1
1
  module PoliceState
2
- VERSION = '0.5.0' # :nodoc:
2
+ VERSION = '0.6.0' # :nodoc:
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: police_state
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Purvis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-22 00:00:00.000000000 Z
11
+ date: 2020-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -16,28 +16,126 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.0
19
+ version: 5.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 4.2.0
26
+ version: 5.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.2.0
33
+ version: 5.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 4.2.0
40
+ version: 5.2.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activerecord-nulldb-adapter
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: codecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-rails
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry-byebug
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
41
139
  - !ruby/object:Gem::Dependency
42
140
  name: rake
43
141
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +164,21 @@ dependencies:
66
164
  - - ">="
67
165
  - !ruby/object:Gem::Version
68
166
  version: '0'
69
- description:
167
+ - !ruby/object:Gem::Dependency
168
+ name: simplecov
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ description:
70
182
  email:
71
183
  - ian@purvisresearch.com
72
184
  executables: []
@@ -82,11 +194,11 @@ files:
82
194
  - lib/police_state/validation_helpers.rb
83
195
  - lib/police_state/version.rb
84
196
  - lib/tasks/police_state_tasks.rake
85
- homepage:
197
+ homepage:
86
198
  licenses:
87
199
  - MIT
88
200
  metadata: {}
89
- post_install_message:
201
+ post_install_message:
90
202
  rdoc_options: []
91
203
  require_paths:
92
204
  - lib
@@ -101,8 +213,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
213
  - !ruby/object:Gem::Version
102
214
  version: '0'
103
215
  requirements: []
104
- rubygems_version: 3.0.3
105
- signing_key:
216
+ rubygems_version: 3.1.4
217
+ signing_key:
106
218
  specification_version: 4
107
219
  summary: Lightweight state machine for Active Record and Active Model.
108
220
  test_files: []