bcdd-result 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +16 -1
- data/CHANGELOG.md +70 -16
- data/README.md +293 -83
- data/Steepfile +4 -4
- data/examples/multiple_listeners/Rakefile +55 -0
- data/examples/multiple_listeners/app/models/account/member.rb +10 -0
- data/examples/multiple_listeners/app/models/account/owner_creation.rb +62 -0
- data/examples/multiple_listeners/app/models/account.rb +11 -0
- data/examples/multiple_listeners/app/models/user/creation.rb +67 -0
- data/examples/multiple_listeners/app/models/user/token/creation.rb +51 -0
- data/examples/multiple_listeners/app/models/user/token.rb +7 -0
- data/examples/multiple_listeners/app/models/user.rb +15 -0
- data/examples/multiple_listeners/config/boot.rb +16 -0
- data/examples/multiple_listeners/config/initializers/bcdd.rb +11 -0
- data/examples/multiple_listeners/config.rb +27 -0
- data/examples/multiple_listeners/db/setup.rb +61 -0
- data/examples/multiple_listeners/lib/bcdd/result/rollback_on_failure.rb +15 -0
- data/examples/multiple_listeners/lib/bcdd/result/transitions_record.rb +28 -0
- data/examples/multiple_listeners/lib/runtime_breaker.rb +11 -0
- data/examples/multiple_listeners/lib/transitions_listener/stdout.rb +54 -0
- data/examples/single_listener/Rakefile +92 -0
- data/examples/single_listener/app/models/account/member.rb +10 -0
- data/examples/single_listener/app/models/account/owner_creation.rb +62 -0
- data/examples/single_listener/app/models/account.rb +11 -0
- data/examples/single_listener/app/models/user/creation.rb +67 -0
- data/examples/single_listener/app/models/user/token/creation.rb +51 -0
- data/examples/single_listener/app/models/user/token.rb +7 -0
- data/examples/single_listener/app/models/user.rb +15 -0
- data/examples/single_listener/config/boot.rb +16 -0
- data/examples/single_listener/config/initializers/bcdd.rb +11 -0
- data/examples/single_listener/config.rb +23 -0
- data/examples/single_listener/db/setup.rb +49 -0
- data/examples/single_listener/lib/bcdd/result/rollback_on_failure.rb +15 -0
- data/examples/single_listener/lib/runtime_breaker.rb +11 -0
- data/examples/single_listener/lib/single_transitions_listener.rb +108 -0
- data/lib/bcdd/result/callable_and_then/caller.rb +1 -1
- data/lib/bcdd/result/config.rb +6 -1
- data/lib/bcdd/result/context/expectations/mixin.rb +2 -2
- data/lib/bcdd/result/context/mixin.rb +2 -2
- data/lib/bcdd/result/context/success.rb +20 -2
- data/lib/bcdd/result/contract/for_types.rb +1 -1
- data/lib/bcdd/result/contract/for_types_and_values.rb +2 -0
- data/lib/bcdd/result/expectations/mixin.rb +2 -2
- data/lib/bcdd/result/ignored_types.rb +14 -0
- data/lib/bcdd/result/mixin.rb +2 -2
- data/lib/bcdd/result/transitions/config.rb +26 -0
- data/lib/bcdd/result/transitions/listener.rb +51 -0
- data/lib/bcdd/result/transitions/listeners.rb +87 -0
- data/lib/bcdd/result/transitions/tracking/disabled.rb +1 -13
- data/lib/bcdd/result/transitions/tracking/enabled.rb +76 -17
- data/lib/bcdd/result/transitions/tracking.rb +8 -3
- data/lib/bcdd/result/transitions/tree.rb +26 -0
- data/lib/bcdd/result/transitions.rb +3 -4
- data/lib/bcdd/result/version.rb +1 -1
- data/lib/bcdd/result.rb +7 -5
- data/sig/bcdd/result/config.rbs +1 -0
- data/sig/bcdd/result/context.rbs +9 -0
- data/sig/bcdd/result/ignored_types.rbs +9 -0
- data/sig/bcdd/result/transitions.rbs +96 -7
- data/sig/bcdd/result.rbs +2 -2
- metadata +42 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3375c9c36b12a792a50e285c32f1526f660360b95d2a3d85103b9147c7c61a68
|
4
|
+
data.tar.gz: c1f399841dad795a4fa10bc15a4c0dac774c104dc9b2237dc5b602e5956c54e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f00e7da2c78ae1c88998b05af02f4ebea701a22797a0a103072ce7bc2532331ecfa2202f677aa9f107e30b33b866421648a98179ddc5c4239b33ca926e584490
|
7
|
+
data.tar.gz: 715b1015481ed2bb317dcbbf6834832fe8df5e3542f0824606c4127c23811357459a995585c27cfd4366410b5d9ca79843cf1cee3ef04357e2a416d2e042379d
|
data/.rubocop.yml
CHANGED
@@ -8,10 +8,17 @@ require:
|
|
8
8
|
AllCops:
|
9
9
|
NewCops: enable
|
10
10
|
TargetRubyVersion: 2.7
|
11
|
+
Exclude:
|
12
|
+
- 'examples/**/*'
|
13
|
+
- 'vendor/**/*'
|
14
|
+
- 'spec/fixtures/**/*'
|
15
|
+
- 'tmp/**/*'
|
16
|
+
- '.git/**/*'
|
17
|
+
- 'bin/*'
|
11
18
|
|
12
19
|
Lint/RescueException:
|
13
20
|
Exclude:
|
14
|
-
- lib/bcdd/result/transitions.rb
|
21
|
+
- lib/bcdd/result/transitions/tracking/enabled.rb
|
15
22
|
|
16
23
|
Layout/LineLength:
|
17
24
|
Max: 120
|
@@ -25,6 +32,10 @@ Layout/MultilineMethodCallIndentation:
|
|
25
32
|
Lint/UnderscorePrefixedVariableName:
|
26
33
|
Enabled: false
|
27
34
|
|
35
|
+
Lint/UnusedMethodArgument:
|
36
|
+
Exclude:
|
37
|
+
- lib/bcdd/result/transitions/listener.rb
|
38
|
+
|
28
39
|
Style/AccessModifierDeclarations:
|
29
40
|
Enabled: false
|
30
41
|
|
@@ -65,6 +76,10 @@ Metrics/ClassLength:
|
|
65
76
|
- lib/bcdd/result.rb
|
66
77
|
- test/**/*.rb
|
67
78
|
|
79
|
+
Metrics/AbcSize:
|
80
|
+
Exclude:
|
81
|
+
- lib/bcdd/result/transitions/tracking/enabled.rb
|
82
|
+
|
68
83
|
Minitest/MultipleAssertions:
|
69
84
|
Enabled: false
|
70
85
|
|
data/CHANGELOG.md
CHANGED
@@ -1,44 +1,98 @@
|
|
1
1
|
- [\[Unreleased\]](#unreleased)
|
2
|
-
- [\[0.
|
2
|
+
- [\[0.13.0\] - 2024-02-01](#0130---2024-02-01)
|
3
3
|
- [Added](#added)
|
4
4
|
- [Changed](#changed)
|
5
|
-
- [\[0.
|
5
|
+
- [\[0.12.0\] - 2024-01-07](#0120---2024-01-07)
|
6
6
|
- [Added](#added-1)
|
7
7
|
- [Changed](#changed-1)
|
8
|
-
- [\[0.
|
8
|
+
- [\[0.11.0\] - 2024-01-02](#0110---2024-01-02)
|
9
9
|
- [Added](#added-2)
|
10
|
-
- [\[0.9.1\] - 2023-12-12](#091---2023-12-12)
|
11
10
|
- [Changed](#changed-2)
|
12
|
-
|
13
|
-
- [\[0.9.0\] - 2023-12-12](#090---2023-12-12)
|
11
|
+
- [\[0.10.0\] - 2023-12-31](#0100---2023-12-31)
|
14
12
|
- [Added](#added-3)
|
13
|
+
- [\[0.9.1\] - 2023-12-12](#091---2023-12-12)
|
15
14
|
- [Changed](#changed-3)
|
16
|
-
- [
|
15
|
+
- [Fixed](#fixed)
|
16
|
+
- [\[0.9.0\] - 2023-12-12](#090---2023-12-12)
|
17
17
|
- [Added](#added-4)
|
18
18
|
- [Changed](#changed-4)
|
19
|
-
|
20
|
-
- [\[0.7.0\] - 2023-10-27](#070---2023-10-27)
|
19
|
+
- [\[0.8.0\] - 2023-12-11](#080---2023-12-11)
|
21
20
|
- [Added](#added-5)
|
22
21
|
- [Changed](#changed-5)
|
23
|
-
- [
|
22
|
+
- [Removed](#removed)
|
23
|
+
- [\[0.7.0\] - 2023-10-27](#070---2023-10-27)
|
24
24
|
- [Added](#added-6)
|
25
25
|
- [Changed](#changed-6)
|
26
|
-
- [\[0.
|
26
|
+
- [\[0.6.0\] - 2023-10-11](#060---2023-10-11)
|
27
27
|
- [Added](#added-7)
|
28
|
-
- [\[0.4.0\] - 2023-09-28](#040---2023-09-28)
|
29
|
-
- [Added](#added-8)
|
30
28
|
- [Changed](#changed-7)
|
29
|
+
- [\[0.5.0\] - 2023-10-09](#050---2023-10-09)
|
30
|
+
- [Added](#added-8)
|
31
|
+
- [\[0.4.0\] - 2023-09-28](#040---2023-09-28)
|
32
|
+
- [Added](#added-9)
|
33
|
+
- [Changed](#changed-8)
|
31
34
|
- [Removed](#removed-1)
|
32
35
|
- [\[0.3.0\] - 2023-09-26](#030---2023-09-26)
|
33
|
-
- [Added](#added-9)
|
34
|
-
- [\[0.2.0\] - 2023-09-26](#020---2023-09-26)
|
35
36
|
- [Added](#added-10)
|
37
|
+
- [\[0.2.0\] - 2023-09-26](#020---2023-09-26)
|
38
|
+
- [Added](#added-11)
|
36
39
|
- [Removed](#removed-2)
|
37
40
|
- [\[0.1.0\] - 2023-09-25](#010---2023-09-25)
|
38
|
-
- [Added](#added-
|
41
|
+
- [Added](#added-12)
|
39
42
|
|
40
43
|
## [Unreleased]
|
41
44
|
|
45
|
+
## [0.13.0] - 2024-02-01
|
46
|
+
|
47
|
+
### Added
|
48
|
+
|
49
|
+
- `BCDD::Result::Context#and_expose` - Raise error when trying to expose an invalid key.
|
50
|
+
|
51
|
+
- `BCDD::Result.configuration` - Accept freeze option (default: `true`). When true, the configuration will be frozen after the block execution.
|
52
|
+
|
53
|
+
- `BCDD::Result.config.transitions` - Add transitions feature configuration.
|
54
|
+
- `config.transitions.listener =` - Set a listener to be called during the result transitions tracking. It must be a class that includes `BCDD::Result::Transitions::Listener`.
|
55
|
+
- `config.transitions.trace_id =` - Set a lambda (must have arity 0) to be called to get a trace id. Use to correlate different or the same operation (executed multiple times).
|
56
|
+
|
57
|
+
- Add transitions metadata property `:ids_matrix`. It is a simplification of the `:ids_tree` property. The matrix rows are the direct transitions from the root transition block, and the columns are the transitions nested from the direct transitions.
|
58
|
+
```ruby
|
59
|
+
# ids_matrix # {
|
60
|
+
0 | 1 | 2 | 3 | 4 # 0 => [0, 0],
|
61
|
+
- | - | - | - | - # 1 => [1, 1],
|
62
|
+
0 | | | | # 2 => [1, 2],
|
63
|
+
1 | 1 | 2 | | # 3 => [2, 1],
|
64
|
+
2 | 3 | | | # 4 => [3, 1],
|
65
|
+
3 | 4 | 5 | 6 | 7 # 5 => [3, 2],
|
66
|
+
4 | 8 | | | # 6 => [3, 3],
|
67
|
+
# 7 => [3, 4],
|
68
|
+
# 8 => [4, 1]
|
69
|
+
# }
|
70
|
+
```
|
71
|
+
|
72
|
+
- Add `BCDD::Result::Transitions::Listeners[]` - It creates a listener of listeners, which will be called in the order they were added.
|
73
|
+
|
74
|
+
### Changed
|
75
|
+
|
76
|
+
- **(BREAKING)** Rename `Given()` type from `:given` to `:_given_`.
|
77
|
+
|
78
|
+
- **(BREAKING)** Rename `Continue()` type from `:continued` to `:_continue_`.
|
79
|
+
|
80
|
+
- **(BREAKING)** Move transition `:source` from `:and_then` to `:result` property.
|
81
|
+
|
82
|
+
- **(BREAKING)** Rename transitions metadata property `:tree_map` to `:ids_tree`.
|
83
|
+
```ruby
|
84
|
+
# ids_tree #
|
85
|
+
0 # [0, [
|
86
|
+
|- 1 # [1, [[2, []]]],
|
87
|
+
| |- 2 # [3, []],
|
88
|
+
|- 3 # [4, [
|
89
|
+
|- 4 # [5, []],
|
90
|
+
| |- 5 # [6, [[7, []]]]
|
91
|
+
| |- 6 # ]],
|
92
|
+
| |- 7 # [8, []]
|
93
|
+
|- 8 # ]]
|
94
|
+
```
|
95
|
+
|
42
96
|
## [0.12.0] - 2024-01-07
|
43
97
|
|
44
98
|
### Added
|