state_machines-activemodel 0.31.0 → 0.31.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad141a5029b6489fb99da9c9ef4ad7bf2059d9947e993265225bb4ca88a0ff66
4
- data.tar.gz: ef7ae48fd6d4d1f712842e2f0057158e5674b5ba59487cc3b0483c89524374e3
3
+ metadata.gz: 83ec0c17ef0c2f530f146fd28b90e6474a9ff1fde5e37c07f143652d65c60375
4
+ data.tar.gz: 9d3c8fb5814ed1e8bf03f543aa9c25ef7ff0b8a241cb05dd20d7b64f15a039fb
5
5
  SHA512:
6
- metadata.gz: 82b54e46bc9713fdda9c22701d4bec699c8065344bb32e10217dc730a0743b0296bb97245d38ffc8d3b18bd65c770058cb1485a723f2620d66051ce93ce4b106
7
- data.tar.gz: 3ae6a52dd12a7c7ff56666fc9d691218f043ba2a0915d80262800a873589c0275a538d5b08ab956d046e23a3ba73e9c6d12ceb732ed0c75ee63d89cb77414b09
6
+ metadata.gz: f47b157cadbf59127defff4c9f9dade32957b98d439be01963718abe482b0adf638ee8e273347e28fbef56598abbc9e91bfe4d1384f803569b42472abf190d25
7
+ data.tar.gz: 0cd4c365cf6d108b219bd913598b9bfe1425d7fc9cd62a86961b865cea29483480d0421af07db63daa016050135c44da7578c2cf4131e9ab23ff292b5dd75111
@@ -3,7 +3,7 @@
3
3
  module StateMachines
4
4
  module Integrations
5
5
  module ActiveModel
6
- VERSION = '0.31.0'
6
+ VERSION = '0.31.1'
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_model)
23
+ refute StateMachines::Integrations::ActiveModel.matches?(new_plain_model)
24
24
  end
25
25
 
26
26
  def test_should_have_no_defaults
@@ -6,7 +6,6 @@ class MachineInitializationCompatibilityTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
8
  include ActiveModel::Validations
9
- attr_accessor :state
10
9
  end
11
10
 
12
11
  @machine = StateMachines::Machine.new(@model, initial: :parked)
@@ -31,9 +30,7 @@ class MachineInitializationCompatibilityTest < BaseTestCase
31
30
 
32
31
  def test_should_handle_attribute_aliases
33
32
  @model.class_eval do
34
- def self.attribute_aliases
35
- { 'status' => 'state' }
36
- end
33
+ alias_attribute :status, :state
37
34
  end
38
35
 
39
36
  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
- model_attribute :status
8
+ attribute :status, :string
9
9
  end
10
10
 
11
11
  @state_machine = StateMachines::Machine.new(@model, initial: :parked, integration: :active_model)
@@ -5,13 +5,14 @@ require 'test_helper'
5
5
  class MachineWithDirtyAttributeAndCustomAttributesDuringLoopbackTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
- include ActiveModel::Dirty
9
- model_attribute :status
10
- define_attribute_methods [:status]
8
+ attribute :status, :string
11
9
 
12
10
  def save
13
- super.tap do
11
+ if valid?
14
12
  changes_applied
13
+ true
14
+ else
15
+ false
15
16
  end
16
17
  end
17
18
  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
-
11
8
  def save
12
- super.tap do
9
+ if valid?
13
10
  changes_applied
11
+ true
12
+ else
13
+ false
14
14
  end
15
15
  end
16
16
  end
@@ -5,13 +5,14 @@ require 'test_helper'
5
5
  class MachineWithDirtyAttributesAndCustomAttributeTest < BaseTestCase
6
6
  def setup
7
7
  @model = new_model do
8
- include ActiveModel::Dirty
9
- model_attribute :status
10
- define_attribute_methods [:status]
8
+ attribute :status, :string
11
9
 
12
10
  def save
13
- super.tap do
11
+ if valid?
14
12
  changes_applied
13
+ true
14
+ else
15
+ false
15
16
  end
16
17
  end
17
18
  end
@@ -26,17 +27,17 @@ class MachineWithDirtyAttributesAndCustomAttributeTest < BaseTestCase
26
27
  end
27
28
 
28
29
  def test_should_include_state_in_changed_attributes
29
- assert_equal %w(status), @record.changed
30
+ assert_equal %w[status], @record.changed
30
31
  end
31
32
 
32
33
  def test_should_track_attribute_change
33
- assert_equal %w(parked idling), @record.changes['status']
34
+ assert_equal %w[parked idling], @record.changes['status']
34
35
  end
35
36
 
36
37
  def test_should_not_reset_changes_on_multiple_transitions
37
38
  transition = StateMachines::Transition.new(@record, @machine, :ignite, :idling, :idling)
38
39
  transition.perform
39
40
 
40
- assert_equal %w(parked idling), @record.changes['status']
41
+ assert_equal %w[parked idling], @record.changes['status']
41
42
  end
42
43
  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
-
11
8
  def save
12
- super.tap do
9
+ if valid?
13
10
  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
-
11
8
  def save
12
- super.tap do
9
+ if valid?
13
10
  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,6 +6,7 @@ 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
+
9
10
  alias_attribute :custom_status, :state
10
11
  end
11
12
 
@@ -19,7 +20,16 @@ class MachineWithInitializedAliasedAttributeTest < BaseTestCase
19
20
  end
20
21
 
21
22
  def test_should_not_match_original_attribute_value_without_attribute_methods
22
- model = new_model do
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
+
23
33
  alias_attribute :custom_status, :state
24
34
  end
25
35
 
@@ -32,4 +42,3 @@ class MachineWithInitializedAliasedAttributeTest < BaseTestCase
32
42
  refute record.state?(:started)
33
43
  end
34
44
  end
35
-
@@ -4,9 +4,8 @@ require 'test_helper'
4
4
 
5
5
  class MachineWithNonModelStateAttributeUndefinedTest < BaseTestCase
6
6
  def setup
7
- @model = new_model do
8
- def initialize
9
- end
7
+ @model = new_plain_model do
8
+ def initialize; end
10
9
  end
11
10
 
12
11
  @machine = StateMachines::Machine.new(@model, :status, initial: :parked, integration: :active_model)
data/test/test_helper.rb CHANGED
@@ -11,45 +11,40 @@ I18n.enforce_available_locales = true
11
11
 
12
12
  class BaseTestCase < ActiveSupport::TestCase
13
13
  protected
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
24
- end
25
14
 
26
- def self.create
27
- object = new
28
- object.save
29
- object
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'
30
20
  end
21
+ end
31
22
 
32
- def initialize(attrs = {})
33
- attrs.each { |attr, value| send("#{attr}=", value) }
34
- end
23
+ model.class_eval(&block) if block_given?
35
24
 
36
- def attributes
37
- @attributes ||= {}
38
- end
25
+ model
26
+ end
39
27
 
40
- def save
41
- true
42
- end
43
- end
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
34
+
35
+ attribute :state, :string
44
36
 
45
- model = Class.new(parent) do
46
37
  def self.name
47
38
  'Foo'
48
39
  end
49
40
 
50
- model_attribute :state
41
+ def self.create
42
+ new.tap { |instance| instance.save if instance.respond_to?(:save) }
43
+ end
51
44
  end
45
+
52
46
  model.class_eval(&block) if block_given?
47
+
53
48
  model
54
49
  end
55
50
  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.0
4
+ version: 0.31.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelkader Boudih
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.31.0
19
+ version: 0.100.1
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.31.0
26
+ version: 0.100.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '7.1'
33
+ version: '7.2'
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: '7.1'
40
+ version: '7.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -162,14 +162,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - ">="
164
164
  - !ruby/object:Gem::Version
165
- version: 3.1.0
165
+ version: 3.2.0
166
166
  required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  requirements:
168
168
  - - ">="
169
169
  - !ruby/object:Gem::Version
170
170
  version: '0'
171
171
  requirements: []
172
- rubygems_version: 3.6.9
172
+ rubygems_version: 3.6.7
173
173
  specification_version: 4
174
174
  summary: ActiveModel integration for State Machines
175
175
  test_files: