state_machines-activemodel 0.31.1 → 0.100.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 83ec0c17ef0c2f530f146fd28b90e6474a9ff1fde5e37c07f143652d65c60375
4
- data.tar.gz: 9d3c8fb5814ed1e8bf03f543aa9c25ef7ff0b8a241cb05dd20d7b64f15a039fb
3
+ metadata.gz: 111b5dc0bdce6aa5d89e1f0ce4a1b890656c2d2da382c1dc0db0061564f33933
4
+ data.tar.gz: 063d8903c160b5e5506704aca06d0702fe752a112e5aae67d9a6b8357fcc1fc0
5
5
  SHA512:
6
- metadata.gz: f47b157cadbf59127defff4c9f9dade32957b98d439be01963718abe482b0adf638ee8e273347e28fbef56598abbc9e91bfe4d1384f803569b42472abf190d25
7
- data.tar.gz: 0cd4c365cf6d108b219bd913598b9bfe1425d7fc9cd62a86961b865cea29483480d0421af07db63daa016050135c44da7578c2cf4131e9ab23ff292b5dd75111
6
+ metadata.gz: ae85cbe306c3b5918fd23e337d38e4db6c737f2fe72dd4fa1856f1e53f182df767cf06f9f1c854fdd69d332602abc182c122793c676b9fe687e364f044893524
7
+ data.tar.gz: 5a391a11fec4bc4f26437877f3f7f98a489b891a10be2f33385f36138d09796058490f5446571e0ff6f8fb161984273a3594ca71abfe43bcbfe8ec803841b0d6
@@ -3,7 +3,7 @@
3
3
  module StateMachines
4
4
  module Integrations
5
5
  module ActiveModel
6
- VERSION = '0.31.1'
6
+ VERSION = '0.100.0'
7
7
  end
8
8
  end
9
9
  end
@@ -20,7 +20,7 @@ class IntegrationTest < BaseTestCase
20
20
  end
21
21
 
22
22
  def test_should_not_match_if_class_does_not_include_active_model_features
23
- refute StateMachines::Integrations::ActiveModel.matches?(new_plain_model)
23
+ refute StateMachines::Integrations::ActiveModel.matches?(new_model)
24
24
  end
25
25
 
26
26
  def test_should_have_no_defaults
@@ -6,6 +6,7 @@ class MachineInitializationCompatibilityTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
8
  include ActiveModel::Validations
9
+ attr_accessor :state
9
10
  end
10
11
 
11
12
  @machine = StateMachines::Machine.new(@model, initial: :parked)
@@ -30,7 +31,9 @@ class MachineInitializationCompatibilityTest < BaseTestCase
30
31
 
31
32
  def test_should_handle_attribute_aliases
32
33
  @model.class_eval do
33
- alias_attribute :status, :state
34
+ def self.attribute_aliases
35
+ { 'status' => 'state' }
36
+ end
34
37
  end
35
38
 
36
39
  record = @model.new(status: 'idling')
@@ -5,7 +5,7 @@ require 'test_helper'
5
5
  class MachineMultipleTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
- attribute :status, :string
8
+ model_attribute :status
9
9
  end
10
10
 
11
11
  @state_machine = StateMachines::Machine.new(@model, initial: :parked, integration: :active_model)
@@ -5,14 +5,13 @@ require 'test_helper'
5
5
  class MachineWithDirtyAttributeAndCustomAttributesDuringLoopbackTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
- attribute :status, :string
8
+ include ActiveModel::Dirty
9
+ model_attribute :status
10
+ define_attribute_methods [:status]
9
11
 
10
12
  def save
11
- if valid?
13
+ super.tap do
12
14
  changes_applied
13
- true
14
- else
15
- false
16
15
  end
17
16
  end
18
17
  end
@@ -5,12 +5,12 @@ require 'test_helper'
5
5
  class MachineWithDirtyAttributeAndStateEventsTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
+ include ActiveModel::Dirty
9
+ define_attribute_methods [:state]
10
+
8
11
  def save
9
- if valid?
12
+ super.tap do
10
13
  changes_applied
11
- true
12
- else
13
- false
14
14
  end
15
15
  end
16
16
  end
@@ -5,14 +5,13 @@ require 'test_helper'
5
5
  class MachineWithDirtyAttributesAndCustomAttributeTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
- attribute :status, :string
8
+ include ActiveModel::Dirty
9
+ model_attribute :status
10
+ define_attribute_methods [:status]
9
11
 
10
12
  def save
11
- if valid?
13
+ super.tap do
12
14
  changes_applied
13
- true
14
- else
15
- false
16
15
  end
17
16
  end
18
17
  end
@@ -27,17 +26,17 @@ class MachineWithDirtyAttributesAndCustomAttributeTest < BaseTestCase
27
26
  end
28
27
 
29
28
  def test_should_include_state_in_changed_attributes
30
- assert_equal %w[status], @record.changed
29
+ assert_equal %w(status), @record.changed
31
30
  end
32
31
 
33
32
  def test_should_track_attribute_change
34
- assert_equal %w[parked idling], @record.changes['status']
33
+ assert_equal %w(parked idling), @record.changes['status']
35
34
  end
36
35
 
37
36
  def test_should_not_reset_changes_on_multiple_transitions
38
37
  transition = StateMachines::Transition.new(@record, @machine, :ignite, :idling, :idling)
39
38
  transition.perform
40
39
 
41
- assert_equal %w[parked idling], @record.changes['status']
40
+ assert_equal %w(parked idling), @record.changes['status']
42
41
  end
43
42
  end
@@ -5,12 +5,12 @@ require 'test_helper'
5
5
  class MachineWithDirtyAttributesDuringLoopbackTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
+ include ActiveModel::Dirty
9
+ define_attribute_methods [:state]
10
+
8
11
  def save
9
- if valid?
12
+ super.tap do
10
13
  changes_applied
11
- true
12
- else
13
- false
14
14
  end
15
15
  end
16
16
  end
@@ -5,12 +5,12 @@ require 'test_helper'
5
5
  class MachineWithDirtyAttributesTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
+ include ActiveModel::Dirty
9
+ define_attribute_methods [:state]
10
+
8
11
  def save
9
- if valid?
12
+ super.tap do
10
13
  changes_applied
11
- true
12
- else
13
- false
14
14
  end
15
15
  end
16
16
  end
@@ -25,17 +25,17 @@ class MachineWithDirtyAttributesTest < BaseTestCase
25
25
  end
26
26
 
27
27
  def test_should_include_state_in_changed_attributes
28
- assert_equal %w[state], @record.changed
28
+ assert_equal %w(state), @record.changed
29
29
  end
30
30
 
31
31
  def test_should_track_attribute_change
32
- assert_equal %w[parked idling], @record.changes['state']
32
+ assert_equal %w(parked idling), @record.changes['state']
33
33
  end
34
34
 
35
35
  def test_should_not_reset_changes_on_multiple_transitions
36
36
  transition = StateMachines::Transition.new(@record, @machine, :ignite, :idling, :idling)
37
37
  transition.perform
38
38
 
39
- assert_equal %w[parked idling], @record.changes['state']
39
+ assert_equal %w(parked idling), @record.changes['state']
40
40
  end
41
41
  end
@@ -6,7 +6,6 @@ class MachineWithInitializedAliasedAttributeTest < BaseTestCase
6
6
  def test_should_match_original_attribute_value_with_attribute_methods
7
7
  model = new_model do
8
8
  include ActiveModel::AttributeMethods
9
-
10
9
  alias_attribute :custom_status, :state
11
10
  end
12
11
 
@@ -20,16 +19,7 @@ class MachineWithInitializedAliasedAttributeTest < BaseTestCase
20
19
  end
21
20
 
22
21
  def test_should_not_match_original_attribute_value_without_attribute_methods
23
- model = new_plain_model do
24
- include ActiveModel::Model
25
-
26
- attr_accessor :state
27
-
28
- def self.alias_attribute(new_name, old_name)
29
- alias_method new_name, old_name
30
- alias_method "#{new_name}=", "#{old_name}="
31
- end
32
-
22
+ model = new_model do
33
23
  alias_attribute :custom_status, :state
34
24
  end
35
25
 
@@ -42,3 +32,4 @@ class MachineWithInitializedAliasedAttributeTest < BaseTestCase
42
32
  refute record.state?(:started)
43
33
  end
44
34
  end
35
+
@@ -4,8 +4,9 @@ require 'test_helper'
4
4
 
5
5
  class MachineWithNonModelStateAttributeUndefinedTest < BaseTestCase
6
6
  def setup
7
- @model = new_plain_model do
8
- def initialize; end
7
+ @model = new_model do
8
+ def initialize
9
+ end
9
10
  end
10
11
 
11
12
  @machine = StateMachines::Machine.new(@model, :status, initial: :parked, integration: :active_model)
data/test/test_helper.rb CHANGED
@@ -11,40 +11,45 @@ I18n.enforce_available_locales = true
11
11
 
12
12
  class BaseTestCase < ActiveSupport::TestCase
13
13
  protected
14
-
15
- # Creates a plain model without ActiveModel features
16
- def new_plain_model(&block)
17
- model = Class.new do
18
- def self.name
19
- 'Foo'
14
+ # Creates a new ActiveModel model (and the associated table)
15
+ def new_model(&block)
16
+ # Simple ActiveModel superclass
17
+ parent = Class.new do
18
+ def self.model_attribute(name)
19
+ define_method(name) { instance_variable_defined?(:"@#{name}") ? instance_variable_get(:"@#{name}") : nil }
20
+ define_method("#{name}=") do |value|
21
+ send(:"#{name}_will_change!") if self.class <= ActiveModel::Dirty && value != send(name)
22
+ instance_variable_set("@#{name}", value)
23
+ end
20
24
  end
21
- end
22
25
 
23
- model.class_eval(&block) if block_given?
26
+ def self.create
27
+ object = new
28
+ object.save
29
+ object
30
+ end
24
31
 
25
- model
26
- end
32
+ def initialize(attrs = {})
33
+ attrs.each { |attr, value| send("#{attr}=", value) }
34
+ end
27
35
 
28
- # Creates a new ActiveModel model (and the associated table)
29
- def new_model(&block)
30
- model = Class.new do
31
- include ActiveModel::Model
32
- include ActiveModel::Attributes
33
- include ActiveModel::Dirty
36
+ def attributes
37
+ @attributes ||= {}
38
+ end
34
39
 
35
- attribute :state, :string
40
+ def save
41
+ true
42
+ end
43
+ end
36
44
 
45
+ model = Class.new(parent) do
37
46
  def self.name
38
47
  'Foo'
39
48
  end
40
49
 
41
- def self.create
42
- new.tap { |instance| instance.save if instance.respond_to?(:save) }
43
- end
50
+ model_attribute :state
44
51
  end
45
-
46
52
  model.class_eval(&block) if block_given?
47
-
48
53
  model
49
54
  end
50
55
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: state_machines-activemodel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.31.1
4
+ version: 0.100.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelkader Boudih
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.100.1
19
+ version: 0.100.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: 0.100.1
26
+ version: 0.100.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  - !ruby/object:Gem::Version
170
170
  version: '0'
171
171
  requirements: []
172
- rubygems_version: 3.6.7
172
+ rubygems_version: 3.6.9
173
173
  specification_version: 4
174
174
  summary: ActiveModel integration for State Machines
175
175
  test_files: