pipa-statelogic 0.1 → 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.
- data/README.rdoc +12 -0
- data/lib/statelogic/activerecord.rb +2 -1
- data/test/statelogic_test.rb +5 -0
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -38,10 +38,22 @@ http://pipa.lighthouseapp.com/projects/22857-statelogic
|
|
38
38
|
end
|
39
39
|
state 'suspended' do # you guess
|
40
40
|
transitions_to 'unpaid', 'ready', 'redeemed'
|
41
|
+
validate do |order|
|
42
|
+
order.errors.add(:txref, :invalid) if order.txref && order.txref !~ /\AREF/
|
43
|
+
end
|
41
44
|
end
|
42
45
|
end
|
43
46
|
...
|
44
47
|
end
|
45
48
|
|
49
|
+
order = Order.new
|
50
|
+
order.state = 'wtf'
|
51
|
+
order.txref = 'orly'
|
52
|
+
order.valid? # Please note that state transition checks are done during
|
53
|
+
# the validation step as well, and the error is added to
|
54
|
+
# the model's +errors+ collection on the state column and
|
55
|
+
# will appear on your form. Standard ActiveRecord's error
|
56
|
+
# message +:inclusion+ is used. Override it with Rails i18n
|
57
|
+
# for something more specific if it's to be displayed to user.
|
46
58
|
|
47
59
|
Copyright (c) 2009 Igor Gunko, released under the MIT license
|
@@ -10,7 +10,8 @@ module Statelogic
|
|
10
10
|
DEFAULT_OPTIONS = {:attribute => :state}.freeze
|
11
11
|
|
12
12
|
class StateScopeHelper
|
13
|
-
CALLBACKS = ::ActiveRecord::Callbacks::CALLBACKS
|
13
|
+
CALLBACKS = (::ActiveRecord::Callbacks::CALLBACKS +
|
14
|
+
::ActiveRecord::Validations::VALIDATIONS).map(&:to_sym).to_set.freeze
|
14
15
|
MACROS_PATTERN = /\Avalidates_/.freeze
|
15
16
|
|
16
17
|
def initialize(cl, state, config)
|
data/test/statelogic_test.rb
CHANGED
@@ -15,6 +15,9 @@ class Order < ActiveRecord::Base
|
|
15
15
|
end
|
16
16
|
state 'suspended' do
|
17
17
|
transitions_to 'unpaid', 'ready', 'redeemed'
|
18
|
+
validate do |order|
|
19
|
+
order.errors.add(:txref, :invalid) if order.txref && order.txref !~ /\AREF/
|
20
|
+
end
|
18
21
|
end
|
19
22
|
end
|
20
23
|
end
|
@@ -76,6 +79,8 @@ class OrderTest < ActiveSupport::TestCase
|
|
76
79
|
|
77
80
|
should_allow_values_for :state, 'suspended', 'redeemed', 'ready', 'unpaid'
|
78
81
|
should_not_allow_values_for :state, 'screwed_up', :message => default_error_message(:inclusion)
|
82
|
+
should_allow_values_for :txref, 'REF12345'
|
83
|
+
should_not_allow_values_for :txref, '12345'
|
79
84
|
should_not_require_attributes :txref, :redeemed_at, :facility_id
|
80
85
|
end
|
81
86
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pipa-statelogic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Gunko
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-08 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|