aasm 5.0.0 → 5.0.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
  SHA1:
3
- metadata.gz: 69f97deda18ab481d469c17a67f79bff67fe73ab
4
- data.tar.gz: c0f8afb149306a0023e14b511b51f5c4dd681535
3
+ metadata.gz: ea455b8d666bb3c526bec4b9be0736719a3b38a5
4
+ data.tar.gz: 3987011c8c53b930f369f76399b37194966bd170
5
5
  SHA512:
6
- metadata.gz: 1c806b50bca06602c0f9fc72c7f8852315a68d2cfe1cd84e7010c30c21b67668359e6b00e3559e55366048582262b81902a86cbd35ec87afa8976a10293f0837
7
- data.tar.gz: e2ef393b52f021463e8734a48e86fe59305d4e2b94e57e82cd4849e216599d17a68134c00331f096a621843a0d35aeff8183dd8232c9d89f4520f5f96b3086cc
6
+ metadata.gz: b35a314d950405db70775b44f8cb06617d5b4987d1f07e586069e19dcab525e761d71551019c53340b622733a8600de5ce238a44cf685854801696203cdda4d0
7
+ data.tar.gz: 3852368590562313ea46427efb3c41d1f414c9a379e522880d7af472807014350a109ab65c2ebe445dbbd6132cee531375e20bb0fd36a83eea425d4cf054d377
@@ -1,13 +1,19 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## unreleased
4
+
5
+ ## 5.0.1
6
+
7
+ * Fix failures array in transition not being reset [#383](https://github.com/aasm/aasm/issues/383)
8
+ * Enable AASM scopes to be defined on abstract classes.
9
+
3
10
  ## 5.0.0
4
11
 
5
12
  * Chore(invokers): Refactor callback invokers, add class-callbacks support [#541](https://github.com/aasm/aasm/pull/541), thanks to [pandomic](https://github.com/pandomic)
6
13
  * Add docker setup to readme
7
- * Add support for Nobrainer (RethinkDB) [#522](https://github.com/aasm/aasm/pull/522), thanks to [zedtux] (https://github.com/zedtux)
14
+ * Add support for Nobrainer (RethinkDB) [#522](https://github.com/aasm/aasm/pull/522), thanks to [zedtux](https://github.com/zedtux)
8
15
  * Patch `allow_event` to accept event with custom arguments [#419](https://github.com/aasm/aasm/pull/419), thanks to [czhc](https://github.com/czhc)
9
16
 
10
-
11
17
  ## 4.12.3
12
18
 
13
19
  * Add to AASM fire(event) and fire!(event) methods [#494](https://github.com/aasm/aasm/pull/494), thanks to [slayer](https://github.com/slayer)
@@ -21,9 +27,9 @@
21
27
 
22
28
  ## 4.12.1
23
29
 
24
- * DRY-up Mongoid and ActiveRecord Persistence, Add Sequel transactions and locking [#475](https://github.com/aasm/aasm/pull/475), thanks to [@Aryk] (https://github.com/Aryk)
25
- * Add aliases for event methods [#476](https://github.com/aasm/aasm/pull/476), thanks to [@Aryk] (https://github.com/Aryk)
26
- * Support Minitest spec expectations [#387](https://github.com/aasm/aasm/pull/387), thanks to [@faragorn] (https://github.com/faragorn)
30
+ * DRY-up Mongoid and ActiveRecord Persistence, Add Sequel transactions and locking [#475](https://github.com/aasm/aasm/pull/475), thanks to [@Aryk](https://github.com/Aryk)
31
+ * Add aliases for event methods [#476](https://github.com/aasm/aasm/pull/476), thanks to [@Aryk](https://github.com/Aryk)
32
+ * Support Minitest spec expectations [#387](https://github.com/aasm/aasm/pull/387), thanks to [@faragorn](https://github.com/faragorn)
27
33
  ## 4.12.0
28
34
 
29
35
  * Fix thread safe issue with concurrent-ruby gem [see [pull-request #422](https://github.com/aasm/aasm/pull/442), thanks to [@reidmorrison](https://github.com/reidmorrison)
data/README.md CHANGED
@@ -134,16 +134,6 @@ You can define a number of callbacks for your events, transitions and states. Th
134
134
  called when certain criteria are met, like entering a particular state:
135
135
 
136
136
  ```ruby
137
- class LogRunTime
138
- def initialize(resource)
139
- @resource = resource
140
- end
141
-
142
- def call
143
- # Do whatever you want with @resource
144
- end
145
- end
146
-
147
137
  class Job
148
138
  include AASM
149
139
 
@@ -139,6 +139,7 @@ module AASM::Core
139
139
  end
140
140
 
141
141
  transitions.each do |transition|
142
+ transition.failures.clear #https://github.com/aasm/aasm/issues/383
142
143
  next if to_state and !Array(transition.to).include?(to_state)
143
144
  if (options.key?(:may_fire) && transition.eql?(options[:may_fire])) ||
144
145
  (!options.key?(:may_fire) && transition.allowed?(obj, *args))
@@ -41,14 +41,15 @@ module AASM
41
41
 
42
42
  module ClassMethods
43
43
  def aasm_create_scope(state_machine_name, scope_name)
44
- conditions = {
45
- table_name => { aasm(state_machine_name).attribute_name => scope_name.to_s }
46
- }
47
44
  if ActiveRecord::VERSION::MAJOR >= 3
45
+ conditions = { aasm(state_machine_name).attribute_name => scope_name.to_s }
48
46
  class_eval do
49
- scope scope_name, lambda { where(conditions) }
47
+ scope scope_name, lambda { where(table_name => conditions) }
50
48
  end
51
49
  else
50
+ conditions = {
51
+ table_name => { aasm(state_machine_name).attribute_name => scope_name.to_s }
52
+ }
52
53
  class_eval do
53
54
  named_scope scope_name, :conditions => conditions
54
55
  end
@@ -1,3 +1,3 @@
1
1
  module AASM
2
- VERSION = "5.0.0"
2
+ VERSION = "5.0.1"
3
3
  end
@@ -11,6 +11,9 @@ ActiveRecord::Migration.suppress_messages do
11
11
  ActiveRecord::Migration.create_table "multiple_simple_new_dsls", :force => true do |t|
12
12
  t.string "status"
13
13
  end
14
+ ActiveRecord::Migration.create_table "implemented_abstract_class_dsls", :force => true do |t|
15
+ t.string "status"
16
+ end
14
17
 
15
18
  ActiveRecord::Migration.create_table "complex_active_record_examples", :force => true do |t|
16
19
  t.string "left"
@@ -15,3 +15,18 @@ class MultipleSimpleNewDsl < ActiveRecord::Base
15
15
  state :new
16
16
  end
17
17
  end
18
+
19
+ class AbstractClassDsl < ActiveRecord::Base
20
+ include AASM
21
+
22
+ self.abstract_class = true
23
+
24
+ aasm :column => :status
25
+ aasm do
26
+ state :unknown_scope, :another_unknown_scope
27
+ state :new
28
+ end
29
+ end
30
+
31
+ class ImplementedAbstractClassDsl < AbstractClassDsl
32
+ end
@@ -49,7 +49,7 @@ describe 'callbacks for the new DSL' do
49
49
 
50
50
  expect {
51
51
  callback.left_close!
52
- }.to raise_error(AASM::InvalidTransition, "Event 'left_close' cannot transition from 'open'. Failed callback(s): [:after_transition, :event_guard].")
52
+ }.to raise_error(AASM::InvalidTransition, "Event 'left_close' cannot transition from 'open'. Failed callback(s): [:event_guard].")
53
53
 
54
54
  end
55
55
 
@@ -88,7 +88,7 @@ describe 'callbacks for the new DSL' do
88
88
 
89
89
  expect {
90
90
  callback.left_close!
91
- }.to raise_error(AASM::InvalidTransition, "Event 'left_close' cannot transition from 'open'. Failed callback(s): [:after_transition, :event_guard, :transition_guard].")
91
+ }.to raise_error(AASM::InvalidTransition, "Event 'left_close' cannot transition from 'open'. Failed callback(s): [:transition_guard].")
92
92
  end
93
93
 
94
94
  it "does not run transition_guard twice for multiple permitted transitions" do
@@ -287,7 +287,7 @@ describe 'event callbacks' do
287
287
  expect(@foo).to receive(:aasm_event_failed).with(:null, :open)
288
288
  expect{
289
289
  @foo.null
290
- }.to raise_error(AASM::InvalidTransition, "Event 'null' cannot transition from 'open'. Failed callback(s): [:always_false, :always_false].")
290
+ }.to raise_error(AASM::InvalidTransition, "Event 'null' cannot transition from 'open'. Failed callback(s): [:always_false].")
291
291
  end
292
292
 
293
293
  it 'should not call it if persist fails for bang fire' do
@@ -333,6 +333,22 @@ if defined?(ActiveRecord)
333
333
  end
334
334
  end
335
335
 
336
+ # Scopes on abstract classes didn't work until Rails 5.
337
+ #
338
+ # Reference:
339
+ # https://github.com/rails/rails/issues/10658
340
+ if ActiveRecord::VERSION::MAJOR >= 5
341
+ context "For a descendant of an abstract model" do
342
+ it "should add the scope without the table_name" do
343
+ expect(ImplementedAbstractClassDsl).to respond_to(:unknown_scope)
344
+ expect(ImplementedAbstractClassDsl).to respond_to(:another_unknown_scope)
345
+
346
+ expect(ImplementedAbstractClassDsl.unknown_scope.is_a?(ActiveRecord::Relation)).to be_truthy
347
+ expect(ImplementedAbstractClassDsl.another_unknown_scope.is_a?(ActiveRecord::Relation)).to be_truthy
348
+ end
349
+ end
350
+ end
351
+
336
352
  it "does not create scopes if requested" do
337
353
  expect(NoScope).not_to respond_to(:pending)
338
354
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thorsten Boettger
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-07-30 00:00:00.000000000 Z
12
+ date: 2018-09-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby