sequel-state-machine 1.2.0 → 1.2.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: 3f0c0bd5c716d726e9e8ba679d545038637a3ed7da8a569918e24725d0558021
4
- data.tar.gz: dcba20e8cb5eb3fbcbad3e70e5e5d0662d3515c44ebb6fa033efc5ae4f1e7a02
3
+ metadata.gz: 7ecbd578f38b3444f3e5174d6bee1fbceb3421eec1d2435a1d3435ec20904ed0
4
+ data.tar.gz: c336baa29efda7c18885264aae288e6fc15f975da155e87be320976be7ccb93d
5
5
  SHA512:
6
- metadata.gz: 78367e0296561bc60d3474dad00650cf1865bd50ee8c96eef1e430c24da24b47ab9f2a70c21f2560a1417ec014b0437e4cbc374c276ab8f18a1f162f4e1dfe5c
7
- data.tar.gz: 48c59a255b6d6c4736ceed4e75ab8f0bfe59363cab146ae989c2928d9560f829ea62da3cae3452a1006a6e19a7c8600ced96847ab9f453f74cc854cf51c39841
6
+ metadata.gz: e9718320cbc2646fd5e3dfdae80e98fda4c6ccd230643ac3301893cee210206400199359297c3e6cac5707b590cdcc065c225d93980ebce4cf3f5ae1b5b493fc
7
+ data.tar.gz: 666800f88b63defc4a2f336315c147eef1338f37574eacdcb2130c930784cbd63ba66cc6cd10df7ff2bbc3260d06315f3bc4686e855100ce577eb21ed2c4154a
@@ -2,54 +2,60 @@
2
2
 
3
3
  require "rspec"
4
4
 
5
- RSpec::Matchers.define :transition_on do |event|
6
- match do |receiver|
7
- raise ArgumentError, "must use :to to provide a target state" if (@to || "").to_s.empty?
8
- raise ArgumentError, "must use :of_machine for use with multiple state machines" if
9
- @machine.nil? && receiver.class.state_machines.length > 1
10
- receiver.send(event, *@args)
11
- @to == receiver.send(@machine || :sequel_state_machine_status)
12
- end
5
+ module StateMachines
6
+ module Sequel
7
+ module SpecHelpers
8
+ module_function def find_state_machine(receiver, event)
9
+ state_machine = receiver.class.state_machines.values.find { |sm| sm.events[event] }
10
+ raise ArgumentError, "receiver #{receiver.class} has no state machine for event #{event}" unless state_machine
11
+ return state_machine
12
+ end
13
13
 
14
- chain :of_machine do |col|
15
- @machine = col
16
- end
14
+ RSpec::Matchers.define :transition_on do |event|
15
+ match do |receiver|
16
+ raise ArgumentError, "must use :to to provide a target state" if (@to || "").to_s.empty?
17
+ machine = StateMachines::Sequel::SpecHelpers.find_state_machine(receiver, event)
18
+ receiver.send(event, *@args)
19
+ current_status = receiver.send(machine.attribute)
20
+ @to == current_status
21
+ end
17
22
 
18
- chain :to do |to_state|
19
- @to = to_state
20
- end
23
+ chain :to do |to_state|
24
+ @to = to_state
25
+ end
21
26
 
22
- chain :with do |*args|
23
- @args = args
24
- end
27
+ chain :with do |*args|
28
+ @args = args
29
+ end
25
30
 
26
- chain :audit do
27
- @audit = true
28
- end
31
+ chain :audit do
32
+ @audit = true
33
+ end
29
34
 
30
- failure_message do |receiver|
31
- msg =
32
- if @to == receiver.state_machine_status
33
- "expected that event #{event} would transition, but did not"
34
- else
35
- "expected that event #{event} would transition to #{@to} but is #{receiver.state_machine_status}"
35
+ failure_message do |receiver|
36
+ status = receiver.send(StateMachines::Sequel::SpecHelpers.find_state_machine(receiver, event).attribute)
37
+ msg =
38
+ "expected that event #{event} would transition to #{@to} but is #{status}"
39
+ (msg += "\n#{receiver.audit_logs.map(&:inspect).join("\n")}") if @audit
40
+ msg
41
+ end
36
42
  end
37
- (msg += "\n#{receiver.audit_logs.map(&:inspect).join("\n")}") if @audit
38
- msg
39
- end
40
- end
41
43
 
42
- RSpec::Matchers.define :not_transition_on do |event|
43
- match do |receiver|
44
- !receiver.send(event, *@args)
45
- end
44
+ RSpec::Matchers.define :not_transition_on do |event|
45
+ match do |receiver|
46
+ !receiver.send(event, *@args)
47
+ end
46
48
 
47
- chain :with do |*args|
48
- @args = args
49
- end
49
+ chain :with do |*args|
50
+ @args = args
51
+ end
50
52
 
51
- failure_message do |receiver|
52
- "expected that event #{event} would not transition, but did and is now #{receiver.state_machine_status}"
53
+ failure_message do |receiver|
54
+ status = receiver.send(StateMachines::Sequel::SpecHelpers.find_state_machine(receiver, event).attribute)
55
+ "expected that event #{event} would not transition, but did and is now #{status}"
56
+ end
57
+ end
58
+ end
53
59
  end
54
60
  end
55
61
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module StateMachines
4
4
  module Sequel
5
- VERSION = "1.2.0"
5
+ VERSION = "1.2.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-state-machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lithic Tech
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-05 00:00:00.000000000 Z
11
+ date: 2022-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec