sequel-state-machine 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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