state_machines-activerecord 0.0.1 → 0.1.0
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 +4 -4
- data/.travis.yml +1 -3
- data/lib/state_machines/integrations/active_record.rb +26 -51
- data/lib/state_machines/integrations/active_record/version.rb +1 -1
- data/test/integration_test.rb +6 -0
- data/test/machine_with_non_column_state_attribute_defined_test.rb +1 -7
- metadata +3 -5
- data/test/machine_with_non_column_state_attribute_undefined_test.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83184c4ea1136843d9a2b5a6638ffe4af34502d5
|
4
|
+
data.tar.gz: d5c732fd76e6a9bd4f96cf391fa360f5d526bc24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 844e338a3c7c50cad3c3c6de08944cb9b81d7bcb6a81d6428c597feb09c09141f6a3d983cbcae804f89133b65bd87348ece794ca585e61dca9818cd34210a023
|
7
|
+
data.tar.gz: b9c56c10217e4d74b667ad1a4e56bec12635f921e8fa908b41da0922ae8f7810c371864c47aec04443e82c483bf5a4dc4c0cb1e69f17d6be868f089f14435246
|
data/.travis.yml
CHANGED
@@ -447,47 +447,41 @@ module StateMachines
|
|
447
447
|
end
|
448
448
|
end
|
449
449
|
|
450
|
-
# Defines an initialization hook into the owner class for setting the
|
451
|
-
# initial state of the machine *before* any attributes are set on the
|
452
|
-
# object
|
453
450
|
def define_state_initializer
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
def column_defaults(*) #:nodoc:
|
451
|
+
if ::ActiveRecord.gem_version >= Gem::Version.new('4.2')
|
452
|
+
define_helper :instance, <<-end_eval, __FILE__, __LINE__ + 1
|
453
|
+
def initialize(attributes = nil, options = {})
|
454
|
+
super(attributes, options) do |*args|
|
455
|
+
self.class.state_machines.initialize_states(self, {}, attributes || {})
|
456
|
+
yield(*args) if block_given?
|
457
|
+
end
|
458
|
+
end
|
459
|
+
end_eval
|
460
|
+
else
|
461
|
+
# Initializes static states
|
462
|
+
#
|
463
|
+
# This is the only available hook where the default set of attributes
|
464
|
+
# can be overridden for a new object *prior* to the processing of the
|
465
|
+
# attributes passed into #initialize
|
466
|
+
define_helper :class, <<-end_eval, __FILE__, __LINE__ + 1
|
467
|
+
def column_defaults(*) #:nodoc:
|
472
468
|
result = super
|
473
469
|
# No need to pass in an object, since the overrides will be forced
|
474
470
|
self.state_machines.initialize_states(nil, :static => :force, :dynamic => false, :to => result)
|
475
471
|
result
|
476
|
-
|
477
|
-
|
478
|
-
end_eval
|
479
|
-
end
|
472
|
+
end
|
473
|
+
end_eval
|
480
474
|
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
self.class.state_machines.initialize_states(self)
|
475
|
+
# Initializes dynamic states
|
476
|
+
define_helper :instance, <<-end_eval, __FILE__, __LINE__ + 1
|
477
|
+
def initialize(attributes = nil, options = {})
|
478
|
+
super(attributes, options) do |*args|
|
479
|
+
self.class.state_machines.initialize_states(self, {}, attributes || {})
|
487
480
|
yield(*args) if block_given?
|
488
481
|
end
|
489
482
|
end
|
490
|
-
|
483
|
+
end_eval
|
484
|
+
end
|
491
485
|
end
|
492
486
|
|
493
487
|
# Uses around callbacks to run state events if using the :save hook
|
@@ -566,23 +560,4 @@ module StateMachines
|
|
566
560
|
end
|
567
561
|
end
|
568
562
|
end
|
569
|
-
class Machine
|
570
|
-
# FIXME
|
571
|
-
def initialize_state(object, options = {})
|
572
|
-
state = initial_state(object)
|
573
|
-
if state && (options[:force] || initialize_state?(object))
|
574
|
-
value = state.value
|
575
|
-
|
576
|
-
if hash = options[:to]
|
577
|
-
if hash.is_a?(Hash)
|
578
|
-
hash[attribute.to_s] = value
|
579
|
-
else # in ActiveRecord 4.2 hash is an Activerecord::AttributeSet
|
580
|
-
hash.write_from_user(attribute.to_s, value)
|
581
|
-
end
|
582
|
-
else
|
583
|
-
write(object, :state, value)
|
584
|
-
end
|
585
|
-
end
|
586
|
-
end
|
587
|
-
end
|
588
563
|
end
|
data/test/integration_test.rb
CHANGED
@@ -5,6 +5,12 @@ class IntegrationTest < BaseTestCase
|
|
5
5
|
assert_equal :active_record, StateMachines::Integrations::ActiveRecord.integration_name
|
6
6
|
end
|
7
7
|
|
8
|
+
def test_should_be_before_activemodel
|
9
|
+
integrations = StateMachines::Integrations.list.to_a
|
10
|
+
assert StateMachines::Integrations::ActiveRecord, integrations.first
|
11
|
+
assert StateMachines::Integrations::ActiveModel, integrations.last
|
12
|
+
end
|
13
|
+
|
8
14
|
def test_should_match_if_class_inherits_from_active_record
|
9
15
|
assert StateMachines::Integrations::ActiveRecord.matches?(new_model)
|
10
16
|
end
|
@@ -3,13 +3,7 @@ require_relative 'test_helper'
|
|
3
3
|
class MachineWithNonColumnStateAttributeDefinedTest < BaseTestCase
|
4
4
|
def setup
|
5
5
|
@model = new_model do
|
6
|
-
|
7
|
-
self['status'] = value
|
8
|
-
end
|
9
|
-
|
10
|
-
def status
|
11
|
-
self['status']
|
12
|
-
end
|
6
|
+
attr_accessor :status
|
13
7
|
end
|
14
8
|
|
15
9
|
@machine = StateMachines::Machine.new(@model, :status, :initial => :parked)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: state_machines-activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abdelkader Boudih
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-01-
|
12
|
+
date: 2015-01-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: state_machines-activemodel
|
@@ -169,7 +169,6 @@ files:
|
|
169
169
|
- test/machine_with_internationalization_test.rb
|
170
170
|
- test/machine_with_loopback_test.rb
|
171
171
|
- test/machine_with_non_column_state_attribute_defined_test.rb
|
172
|
-
- test/machine_with_non_column_state_attribute_undefined_test.rb
|
173
172
|
- test/machine_with_same_column_default_test.rb
|
174
173
|
- test/machine_with_scopes_and_joins_test.rb
|
175
174
|
- test/machine_with_scopes_and_owner_subclass_test.rb
|
@@ -204,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
203
|
version: '0'
|
205
204
|
requirements: []
|
206
205
|
rubyforge_project:
|
207
|
-
rubygems_version: 2.
|
206
|
+
rubygems_version: 2.4.5
|
208
207
|
signing_key:
|
209
208
|
specification_version: 4
|
210
209
|
summary: State machines Active Record Integration
|
@@ -246,7 +245,6 @@ test_files:
|
|
246
245
|
- test/machine_with_internationalization_test.rb
|
247
246
|
- test/machine_with_loopback_test.rb
|
248
247
|
- test/machine_with_non_column_state_attribute_defined_test.rb
|
249
|
-
- test/machine_with_non_column_state_attribute_undefined_test.rb
|
250
248
|
- test/machine_with_same_column_default_test.rb
|
251
249
|
- test/machine_with_scopes_and_joins_test.rb
|
252
250
|
- test/machine_with_scopes_and_owner_subclass_test.rb
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
class MachineWithNonColumnStateAttributeUndefinedTest < BaseTestCase
|
4
|
-
def setup
|
5
|
-
@model = new_model do
|
6
|
-
def initialize
|
7
|
-
# Skip attribute initialization
|
8
|
-
@initialized_state_machines = true
|
9
|
-
super
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
@machine = StateMachines::Machine.new(@model, :status, :initial => :parked)
|
14
|
-
@machine.other_states(:idling)
|
15
|
-
@record = @model.new
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_not_define_a_column_for_the_attribute
|
19
|
-
assert_nil @model.columns_hash['status']
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_define_a_reader_attribute_for_the_attribute
|
23
|
-
assert @record.respond_to?(:status)
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_should_define_a_writer_attribute_for_the_attribute
|
27
|
-
assert @record.respond_to?(:status=)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_should_define_an_attribute_predicate
|
31
|
-
assert @record.respond_to?(:status?)
|
32
|
-
end
|
33
|
-
end
|