bcdd-result 0.12.0 → 0.13.0
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 +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
|