u-case 4.5.2 → 5.1.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/.github/workflows/ci.yml +57 -17
- data/.gitignore +7 -0
- data/.tool-versions +1 -1
- data/Appraisals +92 -0
- data/Gemfile +6 -57
- data/README.md +33 -34
- data/README.pt-BR.md +36 -37
- data/Rakefile +29 -1
- data/bin/matrix +16 -0
- data/bin/setup +4 -0
- data/gemfiles/rails_8_1.gemfile +19 -0
- data/gemfiles/rails_edge.gemfile +19 -0
- data/lib/micro/case/result.rb +12 -0
- data/lib/micro/case/utils.rb +8 -0
- data/lib/micro/case/version.rb +1 -1
- data/u-case.gemspec +4 -3
- metadata +26 -13
- data/bin/prepare_coverage +0 -27
- data/bin/test +0 -53
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a1270d6bb85374361d86582de966908d7e876a108ebb91bad69bd27f451c6885
|
|
4
|
+
data.tar.gz: b947c931285820d04082e97a41936d65a8f3c4a50da49d54afc304b23dae67ba
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bc81c0fb34d2f300768b010aeb0357e8007ced4aac12a4443878179c4f68d333cb8d0c0ccbcac04e9f1101d318569c913880f5f11fb2e3ff48f9b9362d73aebf
|
|
7
|
+
data.tar.gz: 9fa4f08d80d2f89f0622ef76553d148a6ea5a2aebdf29019db4e92932ad986d17a6098533c30e5089cd8b3dc6b703118a9a08e507a15b8a24e67cc06c699e524
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -1,27 +1,67 @@
|
|
|
1
|
+
name: Ruby
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
pull_request:
|
|
1
9
|
|
|
2
|
-
name: build
|
|
3
|
-
on: [push, pull_request]
|
|
4
10
|
jobs:
|
|
5
11
|
test:
|
|
6
12
|
runs-on: ubuntu-latest
|
|
13
|
+
name: Ruby ${{ matrix.ruby }} (transitions=${{ matrix.transitions }})
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
7
16
|
strategy:
|
|
17
|
+
fail-fast: false
|
|
8
18
|
matrix:
|
|
9
|
-
ruby: [2.
|
|
19
|
+
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4", "4.0", head]
|
|
20
|
+
transitions: ["true", "false"]
|
|
21
|
+
env:
|
|
22
|
+
ENABLE_TRANSITIONS: ${{ matrix.transitions }}
|
|
10
23
|
steps:
|
|
11
|
-
- uses: actions/checkout@
|
|
12
|
-
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
with:
|
|
26
|
+
persist-credentials: false
|
|
27
|
+
- name: Set up Ruby
|
|
28
|
+
uses: ruby/setup-ruby@v1
|
|
13
29
|
with:
|
|
14
30
|
ruby-version: ${{ matrix.ruby }}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- name:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
- name: Install bundler
|
|
32
|
+
run: gem install bundler -v 2.4.22
|
|
33
|
+
if: ${{ matrix.ruby == '2.7' || matrix.ruby == '3.0' }}
|
|
34
|
+
- name: Bundle install
|
|
35
|
+
run: bundle install
|
|
36
|
+
- name: Setup project
|
|
37
|
+
run: bundle exec appraisal install
|
|
38
|
+
- name: Run tests for Rails 6.0
|
|
39
|
+
run: bundle exec appraisal rails-6-0 rake test
|
|
40
|
+
if: ${{ matrix.ruby == '2.7' || matrix.ruby == '3.0' }}
|
|
41
|
+
- name: Run tests for Rails 6.1
|
|
42
|
+
run: bundle exec appraisal rails-6-1 rake test
|
|
43
|
+
if: ${{ matrix.ruby == '2.7' || matrix.ruby == '3.0' }}
|
|
44
|
+
- name: Run tests for Rails 7.0
|
|
45
|
+
run: bundle exec appraisal rails-7-0 rake test
|
|
46
|
+
if: ${{ matrix.ruby == '2.7' || matrix.ruby == '3.0' || matrix.ruby == '3.1' || matrix.ruby == '3.2' || matrix.ruby == '3.3' }}
|
|
47
|
+
- name: Run tests for Rails 7.1
|
|
48
|
+
run: bundle exec appraisal rails-7-1 rake test
|
|
49
|
+
if: ${{ matrix.ruby == '2.7' || matrix.ruby == '3.0' || matrix.ruby == '3.1' || matrix.ruby == '3.2' || matrix.ruby == '3.3' }}
|
|
50
|
+
- name: Run tests for Rails 7.2
|
|
51
|
+
run: bundle exec appraisal rails-7-2 rake test
|
|
52
|
+
if: ${{ matrix.ruby == '3.1' || matrix.ruby == '3.2' || matrix.ruby == '3.3' || matrix.ruby == '3.4' }}
|
|
53
|
+
- name: Run tests for Rails 8.0
|
|
54
|
+
run: bundle exec appraisal rails-8-0 rake test
|
|
55
|
+
if: ${{ matrix.ruby == '3.2' || matrix.ruby == '3.3' || matrix.ruby == '3.4' }}
|
|
56
|
+
- name: Run tests for Rails 8.1
|
|
57
|
+
run: bundle exec appraisal rails-8-1 rake test
|
|
58
|
+
if: ${{ matrix.ruby == '3.3' || matrix.ruby == '3.4' || matrix.ruby == '4.0' }}
|
|
59
|
+
- name: Run tests for Rails edge
|
|
60
|
+
run: bundle exec appraisal rails-edge rake test
|
|
61
|
+
if: ${{ matrix.ruby == '4.0' || matrix.ruby == 'head' }}
|
|
62
|
+
- name: Upload coverage to Qlty
|
|
63
|
+
uses: qltysh/qlty-action/coverage@v2
|
|
64
|
+
if: ${{ matrix.ruby == '3.4' && matrix.transitions == 'true' && !github.base_ref }}
|
|
25
65
|
with:
|
|
26
|
-
|
|
27
|
-
|
|
66
|
+
token: ${{ secrets.QLTY_COVERAGE_TOKEN }}
|
|
67
|
+
files: coverage/.resultset.json
|
data/.gitignore
CHANGED
data/.tool-versions
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
ruby
|
|
1
|
+
ruby 4.0.1
|
data/Appraisals
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
if RUBY_VERSION < "3.1"
|
|
2
|
+
appraise "rails-6-0" do
|
|
3
|
+
group :test do
|
|
4
|
+
gem "logger", "~> 1.6", ">= 1.6.6"
|
|
5
|
+
gem "stringio", "~> 3.2"
|
|
6
|
+
|
|
7
|
+
gem "sqlite3", "~> 1.7"
|
|
8
|
+
gem "minitest", "5.26.1"
|
|
9
|
+
gem "activerecord", "~> 6.0.0", require: "active_record"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
appraise "rails-6-1" do
|
|
14
|
+
group :test do
|
|
15
|
+
gem "logger", "~> 1.6", ">= 1.6.6"
|
|
16
|
+
gem "stringio", "~> 3.2"
|
|
17
|
+
|
|
18
|
+
gem "sqlite3", "~> 1.7"
|
|
19
|
+
gem "minitest", "5.26.1"
|
|
20
|
+
gem "activerecord", "~> 6.1.0", require: "active_record"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if RUBY_VERSION >= "2.7" && RUBY_VERSION < "3.4"
|
|
26
|
+
appraise "rails-7-0" do
|
|
27
|
+
group :test do
|
|
28
|
+
gem "logger", "~> 1.6", ">= 1.6.6"
|
|
29
|
+
gem "stringio", "~> 3.2"
|
|
30
|
+
gem "securerandom", "~> 0.3.2"
|
|
31
|
+
|
|
32
|
+
gem "sqlite3", "~> 1.7"
|
|
33
|
+
gem "minitest", "5.26.1"
|
|
34
|
+
gem "activerecord", "~> 7.0.0", require: "active_record"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
appraise "rails-7-1" do
|
|
39
|
+
group :test do
|
|
40
|
+
gem "logger", "~> 1.6", ">= 1.6.6"
|
|
41
|
+
gem "stringio", "~> 3.2"
|
|
42
|
+
gem "securerandom", "~> 0.3.2"
|
|
43
|
+
|
|
44
|
+
gem "sqlite3", "~> 1.7"
|
|
45
|
+
gem "minitest", "5.26.1"
|
|
46
|
+
gem "activerecord", "~> 7.1.0", require: "active_record"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
if RUBY_VERSION >= "3.1" && RUBY_VERSION < "4.0"
|
|
52
|
+
appraise "rails-7-2" do
|
|
53
|
+
group :test do
|
|
54
|
+
gem "sqlite3", "~> 2.8", ">= 2.8.1"
|
|
55
|
+
gem "minitest", "~> 5.27"
|
|
56
|
+
gem "activerecord", "~> 7.2.0", require: "active_record"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
if RUBY_VERSION >= "3.2" && RUBY_VERSION < "4.0"
|
|
62
|
+
appraise "rails-8-0" do
|
|
63
|
+
group :test do
|
|
64
|
+
gem "sqlite3", "~> 2.9"
|
|
65
|
+
gem "ostruct", "~> 0.6.3"
|
|
66
|
+
gem "minitest", "~> 5.27"
|
|
67
|
+
gem "activerecord", "~> 8.0.0", require: "active_record"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
if RUBY_VERSION >= "3.3.0"
|
|
73
|
+
minitest_version = (RUBY_VERSION >= "4.0.0") ? "~> 6.0" : "~> 5.27"
|
|
74
|
+
|
|
75
|
+
appraise "rails-8-1" do
|
|
76
|
+
group :test do
|
|
77
|
+
gem "sqlite3", "~> 2.9"
|
|
78
|
+
gem "ostruct", "~> 0.6.3"
|
|
79
|
+
gem "minitest", minitest_version
|
|
80
|
+
gem "activerecord", "~> 8.1.0", require: "active_record"
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
appraise "rails-edge" do
|
|
85
|
+
group :test do
|
|
86
|
+
gem "sqlite3", "~> 2.9"
|
|
87
|
+
gem "ostruct", "~> 0.6.3"
|
|
88
|
+
gem "minitest", minitest_version
|
|
89
|
+
gem "activerecord", github: "rails/rails", branch: "main", require: "active_record"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
data/Gemfile
CHANGED
|
@@ -1,67 +1,16 @@
|
|
|
1
1
|
source "https://rubygems.org"
|
|
2
2
|
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
3
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
activerecord =
|
|
8
|
-
case activerecord_version
|
|
9
|
-
when '3.2' then '3.2.22'
|
|
10
|
-
when '4.0' then '4.0.13'
|
|
11
|
-
when '4.1' then '4.1.16'
|
|
12
|
-
when '4.2' then '4.2.11'
|
|
13
|
-
when '5.0' then '5.0.7'
|
|
14
|
-
when '5.1' then '5.1.7'
|
|
15
|
-
when '5.2' then '5.2.4'
|
|
16
|
-
when '6.0' then '6.0.3.4'
|
|
17
|
-
when '6.1' then '6.1.2'
|
|
18
|
-
end
|
|
5
|
+
# Specify your gem's dependencies in u-case.gemspec
|
|
6
|
+
gemspec
|
|
19
7
|
|
|
20
|
-
|
|
21
|
-
case RUBY_VERSION
|
|
22
|
-
when /\A2.[23]/ then '~> 0.17.1'
|
|
23
|
-
when /\A2.4/ then '~> 0.18.5'
|
|
24
|
-
else '~> 0.21.2'
|
|
25
|
-
end
|
|
8
|
+
gem "rake", "~> 13.0"
|
|
26
9
|
|
|
27
10
|
group :test do
|
|
28
|
-
gem
|
|
29
|
-
|
|
30
|
-
gem 'simplecov', simplecov_version, require: false
|
|
31
|
-
|
|
32
|
-
if activerecord
|
|
33
|
-
sqlite3 =
|
|
34
|
-
case activerecord
|
|
35
|
-
when /\A6\.(0|1)/, nil then '~> 1.4.0'
|
|
36
|
-
else '~> 1.3.0'
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
gem 'sqlite3', sqlite3
|
|
40
|
-
gem 'activerecord', activerecord, require: 'active_record'
|
|
41
|
-
end
|
|
11
|
+
gem "simplecov", "~> 0.22.0", require: false
|
|
42
12
|
end
|
|
43
13
|
|
|
44
|
-
pry_byebug_version =
|
|
45
|
-
case RUBY_VERSION
|
|
46
|
-
when /\A2.[23]/ then '3.6'
|
|
47
|
-
else '3.9'
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
pry_version =
|
|
51
|
-
case RUBY_VERSION
|
|
52
|
-
when /\A2.2/ then '0.12.2'
|
|
53
|
-
when /\A2.3/ then '0.12.2'
|
|
54
|
-
else '0.13.1'
|
|
55
|
-
end
|
|
56
|
-
|
|
57
14
|
group :development, :test do
|
|
58
|
-
gem
|
|
59
|
-
|
|
60
|
-
gem 'byebug', '~> 10.0', '>= 10.0.2' if RUBY_VERSION =~ /\A2.[23]/
|
|
61
|
-
|
|
62
|
-
gem 'pry', "~> #{pry_version}"
|
|
63
|
-
gem 'pry-byebug', "~> #{pry_byebug_version}"
|
|
15
|
+
gem "awesome_print"
|
|
64
16
|
end
|
|
65
|
-
|
|
66
|
-
# Specify your gem's dependencies in u-case.gemspec
|
|
67
|
-
gemspec
|
data/README.md
CHANGED
|
@@ -1,28 +1,16 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="./assets/ucase_logo_v1.png" alt="
|
|
3
|
-
|
|
2
|
+
<h1 align="center" id="-case"><img src="./assets/ucase_logo_v1.png" alt="μ-case" height="150"></h1>
|
|
4
3
|
<p align="center"><i>Represent use cases in a simple and powerful way while writing modular, expressive and sequentially logical code.</i></p>
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<img
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<a href="https://github.com/serradura/u-case/actions/workflows/ci.yml">
|
|
16
|
-
<img alt="Build Status" src="https://github.com/serradura/u-case/actions/workflows/ci.yml/badge.svg">
|
|
17
|
-
</a>
|
|
18
|
-
|
|
19
|
-
<a href="https://codeclimate.com/github/serradura/u-case/maintainability">
|
|
20
|
-
<img alt="Maintainability" src="https://api.codeclimate.com/v1/badges/5c3c8ad1b0b943f88efd/maintainability">
|
|
21
|
-
</a>
|
|
22
|
-
|
|
23
|
-
<a href="https://codeclimate.com/github/serradura/u-case/test_coverage">
|
|
24
|
-
<img alt="Test Coverage" src="https://api.codeclimate.com/v1/badges/5c3c8ad1b0b943f88efd/test_coverage">
|
|
25
|
-
</a>
|
|
4
|
+
<p align="center">
|
|
5
|
+
<a href="https://badge.fury.io/rb/u-case"><img src="https://badge.fury.io/rb/u-case.svg" alt="Gem Version" height="18"></a>
|
|
6
|
+
<a href="https://github.com/serradura/u-case/actions/workflows/ci.yml"><img alt="Build Status" src="https://github.com/serradura/u-case/actions/workflows/ci.yml/badge.svg"></a>
|
|
7
|
+
<br/>
|
|
8
|
+
<a href="https://qlty.sh/gh/serradura/projects/u-case"><img src="https://qlty.sh/gh/serradura/projects/u-case/maintainability.svg" alt="Maintainability" /></a>
|
|
9
|
+
<a href="https://qlty.sh/gh/serradura/projects/u-case"><img src="https://qlty.sh/gh/serradura/projects/u-case/coverage.svg" alt="Code Coverage" /></a>
|
|
10
|
+
<br/>
|
|
11
|
+
<img src="https://img.shields.io/badge/Ruby%20%3E%3D%202.7%2C%20%3C%3D%20Head-ruby.svg?colorA=444&colorB=333" alt="Ruby">
|
|
12
|
+
<img src="https://img.shields.io/badge/Rails%20%3E%3D%206.0%2C%20%3C%3D%20Edge-rails.svg?colorA=444&colorB=333" alt="Rails">
|
|
13
|
+
</p>
|
|
26
14
|
</p>
|
|
27
15
|
|
|
28
16
|
The main project goals are:
|
|
@@ -39,10 +27,8 @@ The main project goals are:
|
|
|
39
27
|
Version | Documentation
|
|
40
28
|
--------- | -------------
|
|
41
29
|
unreleased| https://github.com/serradura/u-case/blob/main/README.md
|
|
30
|
+
5.1.0 | https://github.com/serradura/u-case/blob/v5.x/README.md
|
|
42
31
|
4.5.1 | https://github.com/serradura/u-case/blob/v4.x/README.md
|
|
43
|
-
3.1.0 | https://github.com/serradura/u-case/blob/v3.x/README.md
|
|
44
|
-
2.6.0 | https://github.com/serradura/u-case/blob/v2.x/README.md
|
|
45
|
-
1.1.0 | https://github.com/serradura/u-case/blob/v1.x/README.md
|
|
46
32
|
|
|
47
33
|
> **Note:** Você entende português? 🇧🇷 🇵🇹 Verifique o [README traduzido em pt-BR](https://github.com/serradura/u-case/blob/main/README.pt-BR.md).
|
|
48
34
|
|
|
@@ -99,13 +85,24 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
|
|
|
99
85
|
|
|
100
86
|
## Compatibility
|
|
101
87
|
|
|
102
|
-
| u-case
|
|
103
|
-
|
|
|
104
|
-
| unreleased
|
|
105
|
-
|
|
|
106
|
-
|
|
|
107
|
-
|
|
108
|
-
|
|
88
|
+
| u-case | branch | ruby | activemodel | u-attributes |
|
|
89
|
+
| ---------------- | ------ | -------- | -------------- | -------------- |
|
|
90
|
+
| unreleased | main | >= 2.7 | >= 6.0 | >= 2.7, < 4.0 |
|
|
91
|
+
| 5.1.0 | v5.x | >= 2.7 | >= 6.0 | >= 2.7, < 4.0 |
|
|
92
|
+
| 4.5.1 | v4.x | >= 2.2.0 | >= 3.2, <= 8.1 | >= 2.7, < 3.0 |
|
|
93
|
+
|
|
94
|
+
This library is tested (CI matrix) against:
|
|
95
|
+
|
|
96
|
+
| Ruby / Rails | 6.0 | 6.1 | 7.0 | 7.1 | 7.2 | 8.0 | 8.1 | Edge |
|
|
97
|
+
|--------------|-----|-----|-----|-----|-----|-----|-----|------|
|
|
98
|
+
| 2.7 | ✅ | ✅ | ✅ | ✅ | | | | |
|
|
99
|
+
| 3.0 | ✅ | ✅ | ✅ | ✅ | | | | |
|
|
100
|
+
| 3.1 | | | ✅ | ✅ | ✅ | | | |
|
|
101
|
+
| 3.2 | | | ✅ | ✅ | ✅ | ✅ | | |
|
|
102
|
+
| 3.3 | | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
103
|
+
| 3.4 | | | | | ✅ | ✅ | ✅ | ✅ |
|
|
104
|
+
| 4.x | | | | | | | ✅ | ✅ |
|
|
105
|
+
| Head | | | | | | | ✅ | ✅ |
|
|
109
106
|
|
|
110
107
|
> Note: The activemodel is an optional dependency, this module [can be enabled](#u-casewith_activemodel_validation---how-to-validate-use-case-attributes) to validate the use cases' attributes.
|
|
111
108
|
|
|
@@ -126,7 +123,7 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
|
|
|
126
123
|
Add this line to your application's Gemfile:
|
|
127
124
|
|
|
128
125
|
```ruby
|
|
129
|
-
gem 'u-case', '~>
|
|
126
|
+
gem 'u-case', '~> 5.0'
|
|
130
127
|
```
|
|
131
128
|
|
|
132
129
|
And then execute:
|
|
@@ -192,6 +189,8 @@ A `Micro::Case::Result` stores the use cases output data. These are their main m
|
|
|
192
189
|
- `#type` a Symbol which gives meaning for the result, this is useful to declare different types of failures or success.
|
|
193
190
|
- `#data` the result data itself.
|
|
194
191
|
- `#[]` and `#values_at` are shortcuts to access the `#data` values.
|
|
192
|
+
- `#fetch` and `#fetch_values` are another way of accessing values of the result data, but raises a `KeyError` if the one of the keys are not present in the result.
|
|
193
|
+
- `#keys` returns an array of keys present in the result data.
|
|
195
194
|
- `#key?` returns `true` if the key is present in `#data`.
|
|
196
195
|
- `#value?` returns `true` if the given value is present in `#data`.
|
|
197
196
|
- `#slice` returns a new hash that includes only the given keys. If the given keys don't exist, an empty hash is returned.
|
data/README.pt-BR.md
CHANGED
|
@@ -1,28 +1,16 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="./assets/ucase_logo_v1.png" alt="
|
|
3
|
-
|
|
4
|
-
<p align="center"
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<img
|
|
13
|
-
</
|
|
14
|
-
|
|
15
|
-
<a href="https://github.com/serradura/u-case/actions/workflows/ci.yml">
|
|
16
|
-
<img alt="Build Status" src="https://github.com/serradura/u-case/actions/workflows/ci.yml/badge.svg">
|
|
17
|
-
</a>
|
|
18
|
-
|
|
19
|
-
<a href="https://codeclimate.com/github/serradura/u-case/maintainability">
|
|
20
|
-
<img alt="Maintainability" src="https://api.codeclimate.com/v1/badges/5c3c8ad1b0b943f88efd/maintainability">
|
|
21
|
-
</a>
|
|
22
|
-
|
|
23
|
-
<a href="https://codeclimate.com/github/serradura/u-case/test_coverage">
|
|
24
|
-
<img alt="Test Coverage" src="https://api.codeclimate.com/v1/badges/5c3c8ad1b0b943f88efd/test_coverage">
|
|
25
|
-
</a>
|
|
2
|
+
<h1 align="center" id="-case"><img src="./assets/ucase_logo_v1.png" alt="μ-case" height="150"></h1>
|
|
3
|
+
<p align="center"><i>Represente casos de uso de forma simples e poderosa ao escrever código modular, expressivo e sequencialmente lógico.</i></p>
|
|
4
|
+
<p align="center">
|
|
5
|
+
<a href="https://badge.fury.io/rb/u-case"><img src="https://badge.fury.io/rb/u-case.svg" alt="Gem Version" height="18"></a>
|
|
6
|
+
<a href="https://github.com/serradura/u-case/actions/workflows/ci.yml"><img alt="Build Status" src="https://github.com/serradura/u-case/actions/workflows/ci.yml/badge.svg"></a>
|
|
7
|
+
<br/>
|
|
8
|
+
<a href="https://qlty.sh/gh/serradura/projects/u-case"><img src="https://qlty.sh/gh/serradura/projects/u-case/maintainability.svg" alt="Maintainability" /></a>
|
|
9
|
+
<a href="https://qlty.sh/gh/serradura/projects/u-case"><img src="https://qlty.sh/gh/serradura/projects/u-case/coverage.svg" alt="Code Coverage" /></a>
|
|
10
|
+
<br/>
|
|
11
|
+
<img src="https://img.shields.io/badge/Ruby%20%3E%3D%202.7%2C%20%3C%3D%20Head-ruby.svg?colorA=444&colorB=333" alt="Ruby">
|
|
12
|
+
<img src="https://img.shields.io/badge/Rails%20%3E%3D%206.0%2C%20%3C%3D%20Edge-rails.svg?colorA=444&colorB=333" alt="Rails">
|
|
13
|
+
</p>
|
|
26
14
|
</p>
|
|
27
15
|
|
|
28
16
|
Principais objetivos deste projeto:
|
|
@@ -39,10 +27,8 @@ Principais objetivos deste projeto:
|
|
|
39
27
|
Versão | Documentação
|
|
40
28
|
--------- | -------------
|
|
41
29
|
unreleased| https://github.com/serradura/u-case/blob/main/README.md
|
|
30
|
+
5.1.0 | https://github.com/serradura/u-case/blob/v5.x/README.md
|
|
42
31
|
4.5.1 | https://github.com/serradura/u-case/blob/v4.x/README.md
|
|
43
|
-
3.1.0 | https://github.com/serradura/u-case/blob/v3.x/README.md
|
|
44
|
-
2.6.0 | https://github.com/serradura/u-case/blob/v2.x/README.md
|
|
45
|
-
1.1.0 | https://github.com/serradura/u-case/blob/v1.x/README.md
|
|
46
32
|
|
|
47
33
|
## Índice <!-- omit in toc -->
|
|
48
34
|
- [Compatibilidade](#compatibilidade)
|
|
@@ -97,13 +83,24 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
|
|
|
97
83
|
|
|
98
84
|
## Compatibilidade
|
|
99
85
|
|
|
100
|
-
| u-case
|
|
101
|
-
|
|
|
102
|
-
| unreleased
|
|
103
|
-
|
|
|
104
|
-
|
|
|
105
|
-
|
|
106
|
-
|
|
86
|
+
| u-case | branch | ruby | activemodel | u-attributes |
|
|
87
|
+
| ---------------- | ------ | -------- | -------------- | -------------- |
|
|
88
|
+
| unreleased | main | >= 2.7 | >= 6.0 | >= 2.7, < 4.0 |
|
|
89
|
+
| 5.1.0 | v5.x | >= 2.7 | >= 6.0 | >= 2.7, < 4.0 |
|
|
90
|
+
| 4.5.1 | v4.x | >= 2.2.0 | >= 3.2, <= 8.1 | >= 2.7, < 3.0 |
|
|
91
|
+
|
|
92
|
+
Esta biblioteca é testada (matriz de CI) contra:
|
|
93
|
+
|
|
94
|
+
| Ruby / Rails | 6.0 | 6.1 | 7.0 | 7.1 | 7.2 | 8.0 | 8.1 | Edge |
|
|
95
|
+
|--------------|-----|-----|-----|-----|-----|-----|-----|------|
|
|
96
|
+
| 2.7 | ✅ | ✅ | ✅ | ✅ | | | | |
|
|
97
|
+
| 3.0 | ✅ | ✅ | ✅ | ✅ | | | | |
|
|
98
|
+
| 3.1 | | | ✅ | ✅ | ✅ | | | |
|
|
99
|
+
| 3.2 | | | ✅ | ✅ | ✅ | ✅ | | |
|
|
100
|
+
| 3.3 | | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
101
|
+
| 3.4 | | | | | ✅ | ✅ | ✅ | ✅ |
|
|
102
|
+
| 4.x | | | | | | | ✅ | ✅ |
|
|
103
|
+
| Head | | | | | | | ✅ | ✅ |
|
|
107
104
|
|
|
108
105
|
> Nota: O activemodel é uma dependência opcional, esse módulo que [pode ser habilitado](#u-casewith_activemodel_validation---como-validar-os-atributos-do-caso-de-uso) para validar os atributos dos casos de uso.
|
|
109
106
|
|
|
@@ -124,7 +121,7 @@ unreleased| https://github.com/serradura/u-case/blob/main/README.md
|
|
|
124
121
|
Adicione essa linha ao Gemfile da sua aplicação:
|
|
125
122
|
|
|
126
123
|
```ruby
|
|
127
|
-
gem 'u-case', '~>
|
|
124
|
+
gem 'u-case', '~> 5.0'
|
|
128
125
|
```
|
|
129
126
|
|
|
130
127
|
E então execute:
|
|
@@ -190,8 +187,10 @@ Um `Micro::Case::Result` armazena os dados de output de um caso de uso. Esses s
|
|
|
190
187
|
- `#type` retorna um Symbol que dá significado ao resultado, isso é útil para declarar diferentes tipos de falha e sucesso.
|
|
191
188
|
- `#data` os dados do resultado (um `Hash`).
|
|
192
189
|
- `#[]` e `#values_at` são atalhos para acessar as propriedades do `#data`.
|
|
193
|
-
- `#
|
|
194
|
-
- `#
|
|
190
|
+
- `#fetch` e `#fetch_values` são outras maneiras de acessar os valores contidos em `#data`, porém se alguma chave não existir, é levantado um `KeyError`.
|
|
191
|
+
- `#keys` retorna uma array com as chaves presentes no resultado.
|
|
192
|
+
- `#key?` retorna `true` se a chave estiver presente no `#data`.
|
|
193
|
+
- `#value?` retorna `true` se o valor estiver presente no `#data`.
|
|
195
194
|
- `#slice` retorna um novo `Hash` que inclui apenas as chaves fornecidas. Se as chaves fornecidas não existirem, um `Hash` vazio será retornado.
|
|
196
195
|
- `#on_success` or `#on_failure` são métodos de hooks que te auxiliam a definir o fluxo da aplicação.
|
|
197
196
|
- `#then` este método permite aplicar novos casos de uso ao resultado atual se ele for sucesso. A ideia dessa feature é a criação de fluxos dinâmicos.
|
data/Rakefile
CHANGED
|
@@ -7,4 +7,32 @@ Rake::TestTask.new(:test) do |t|
|
|
|
7
7
|
t.test_files = FileList["test/**/*_test.rb"]
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
task
|
|
10
|
+
require "appraisal/task"
|
|
11
|
+
|
|
12
|
+
Appraisal::Task.new
|
|
13
|
+
|
|
14
|
+
desc "Run the full test suite in all supported Rails versions (both transitions modes)"
|
|
15
|
+
task :matrix do
|
|
16
|
+
appraisals =
|
|
17
|
+
if RUBY_VERSION < "3.1"
|
|
18
|
+
["rails-6-0", "rails-6-1"]
|
|
19
|
+
elsif RUBY_VERSION < "3.2"
|
|
20
|
+
["rails-7-0", "rails-7-1", "rails-7-2"]
|
|
21
|
+
elsif RUBY_VERSION < "3.3"
|
|
22
|
+
["rails-7-0", "rails-7-1", "rails-7-2", "rails-8-0"]
|
|
23
|
+
elsif RUBY_VERSION < "3.4"
|
|
24
|
+
["rails-7-0", "rails-7-1", "rails-7-2", "rails-8-0", "rails-8-1", "rails-edge"]
|
|
25
|
+
elsif RUBY_VERSION < "4.0"
|
|
26
|
+
["rails-7-2", "rails-8-0", "rails-8-1", "rails-edge"]
|
|
27
|
+
else
|
|
28
|
+
["rails-8-1", "rails-edge"]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
appraisals.each do |appraisal|
|
|
32
|
+
["true", "false"].each do |transitions|
|
|
33
|
+
sh({"ENABLE_TRANSITIONS" => transitions}, "bundle exec appraisal #{appraisal} rake test")
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
task default: :test
|
data/bin/matrix
ADDED
data/bin/setup
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "rake", "~> 13.0"
|
|
6
|
+
|
|
7
|
+
group :test do
|
|
8
|
+
gem "simplecov", "~> 0.22.0", require: false
|
|
9
|
+
gem "sqlite3", "~> 2.9"
|
|
10
|
+
gem "ostruct", "~> 0.6.3"
|
|
11
|
+
gem "minitest", "~> 6.0"
|
|
12
|
+
gem "activerecord", "~> 8.1.0", require: "active_record"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
group :development, :test do
|
|
16
|
+
gem "awesome_print"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
gemspec path: "../"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "rake", "~> 13.0"
|
|
6
|
+
|
|
7
|
+
group :test do
|
|
8
|
+
gem "simplecov", "~> 0.22.0", require: false
|
|
9
|
+
gem "sqlite3", "~> 2.9"
|
|
10
|
+
gem "ostruct", "~> 0.6.3"
|
|
11
|
+
gem "minitest", "~> 6.0"
|
|
12
|
+
gem "activerecord", branch: "main", require: "active_record", git: "https://github.com/rails/rails"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
group :development, :test do
|
|
16
|
+
gem "awesome_print"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
gemspec path: "../"
|
data/lib/micro/case/result.rb
CHANGED
|
@@ -62,6 +62,18 @@ module Micro
|
|
|
62
62
|
data.key?(key)
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
+
def keys
|
|
66
|
+
data.keys
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def fetch(*args, &block)
|
|
70
|
+
data.fetch(*args, &block)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def fetch_values(*keys, &block)
|
|
74
|
+
Utils::Hashes.fetch_values(data, keys, &block)
|
|
75
|
+
end
|
|
76
|
+
|
|
65
77
|
def value?(value)
|
|
66
78
|
data.value?(value)
|
|
67
79
|
end
|
data/lib/micro/case/utils.rb
CHANGED
|
@@ -27,6 +27,14 @@ module Micro::Case::Utils
|
|
|
27
27
|
|
|
28
28
|
hash.select { |key, _value| keys.include?(key) }
|
|
29
29
|
end
|
|
30
|
+
|
|
31
|
+
def self.fetch_values(hash, keys, &block)
|
|
32
|
+
return hash.fetch_values(*keys, &block) if hash_respond_to?(hash, :fetch_values)
|
|
33
|
+
|
|
34
|
+
keys.each_with_object([]) do |key, values|
|
|
35
|
+
values << hash.fetch(key, &block)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
30
38
|
end
|
|
31
39
|
|
|
32
40
|
end
|
data/lib/micro/case/version.rb
CHANGED
data/u-case.gemspec
CHANGED
|
@@ -23,11 +23,12 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
24
24
|
spec.require_paths = ['lib']
|
|
25
25
|
|
|
26
|
-
spec.required_ruby_version = '>= 2.
|
|
26
|
+
spec.required_ruby_version = '>= 2.7.0'
|
|
27
27
|
|
|
28
|
-
spec.add_runtime_dependency 'kind', '>= 5.6', '<
|
|
29
|
-
spec.add_runtime_dependency 'u-attributes', '>= 2.7', '<
|
|
28
|
+
spec.add_runtime_dependency 'kind', '>= 5.6', '< 7.0'
|
|
29
|
+
spec.add_runtime_dependency 'u-attributes', '>= 2.7', '< 4.0'
|
|
30
30
|
|
|
31
|
+
spec.add_development_dependency 'appraisal', '~> 2.5'
|
|
31
32
|
spec.add_development_dependency 'bundler'
|
|
32
33
|
spec.add_development_dependency 'rake', '~> 13.0'
|
|
33
34
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: u-case
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 5.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rodrigo Serradura
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: kind
|
|
@@ -19,7 +18,7 @@ dependencies:
|
|
|
19
18
|
version: '5.6'
|
|
20
19
|
- - "<"
|
|
21
20
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
21
|
+
version: '7.0'
|
|
23
22
|
type: :runtime
|
|
24
23
|
prerelease: false
|
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,7 +28,7 @@ dependencies:
|
|
|
29
28
|
version: '5.6'
|
|
30
29
|
- - "<"
|
|
31
30
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
31
|
+
version: '7.0'
|
|
33
32
|
- !ruby/object:Gem::Dependency
|
|
34
33
|
name: u-attributes
|
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -39,7 +38,7 @@ dependencies:
|
|
|
39
38
|
version: '2.7'
|
|
40
39
|
- - "<"
|
|
41
40
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: '
|
|
41
|
+
version: '4.0'
|
|
43
42
|
type: :runtime
|
|
44
43
|
prerelease: false
|
|
45
44
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -49,7 +48,21 @@ dependencies:
|
|
|
49
48
|
version: '2.7'
|
|
50
49
|
- - "<"
|
|
51
50
|
- !ruby/object:Gem::Version
|
|
52
|
-
version: '
|
|
51
|
+
version: '4.0'
|
|
52
|
+
- !ruby/object:Gem::Dependency
|
|
53
|
+
name: appraisal
|
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
|
55
|
+
requirements:
|
|
56
|
+
- - "~>"
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
version: '2.5'
|
|
59
|
+
type: :development
|
|
60
|
+
prerelease: false
|
|
61
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
62
|
+
requirements:
|
|
63
|
+
- - "~>"
|
|
64
|
+
- !ruby/object:Gem::Version
|
|
65
|
+
version: '2.5'
|
|
53
66
|
- !ruby/object:Gem::Dependency
|
|
54
67
|
name: bundler
|
|
55
68
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -90,6 +103,7 @@ files:
|
|
|
90
103
|
- ".gitignore"
|
|
91
104
|
- ".tool-versions"
|
|
92
105
|
- ".vscode/settings.json"
|
|
106
|
+
- Appraisals
|
|
93
107
|
- CODE_OF_CONDUCT.md
|
|
94
108
|
- Gemfile
|
|
95
109
|
- LICENSE.txt
|
|
@@ -97,9 +111,10 @@ files:
|
|
|
97
111
|
- README.pt-BR.md
|
|
98
112
|
- Rakefile
|
|
99
113
|
- bin/console
|
|
100
|
-
- bin/
|
|
114
|
+
- bin/matrix
|
|
101
115
|
- bin/setup
|
|
102
|
-
-
|
|
116
|
+
- gemfiles/rails_8_1.gemfile
|
|
117
|
+
- gemfiles/rails_edge.gemfile
|
|
103
118
|
- lib/micro/case.rb
|
|
104
119
|
- lib/micro/case/config.rb
|
|
105
120
|
- lib/micro/case/error.rb
|
|
@@ -124,7 +139,6 @@ homepage: https://github.com/serradura/u-case
|
|
|
124
139
|
licenses:
|
|
125
140
|
- MIT
|
|
126
141
|
metadata: {}
|
|
127
|
-
post_install_message:
|
|
128
142
|
rdoc_options: []
|
|
129
143
|
require_paths:
|
|
130
144
|
- lib
|
|
@@ -132,15 +146,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
132
146
|
requirements:
|
|
133
147
|
- - ">="
|
|
134
148
|
- !ruby/object:Gem::Version
|
|
135
|
-
version: 2.
|
|
149
|
+
version: 2.7.0
|
|
136
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
151
|
requirements:
|
|
138
152
|
- - ">="
|
|
139
153
|
- !ruby/object:Gem::Version
|
|
140
154
|
version: '0'
|
|
141
155
|
requirements: []
|
|
142
|
-
rubygems_version:
|
|
143
|
-
signing_key:
|
|
156
|
+
rubygems_version: 4.0.7
|
|
144
157
|
specification_version: 4
|
|
145
158
|
summary: Represent use cases in a simple and powerful way while writing modular, expressive
|
|
146
159
|
and sequentially logical code.
|
data/bin/prepare_coverage
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
# Borrowed from https://gist.github.com/qortex/7e7c49f3731391a91ee898336183acef
|
|
4
|
-
|
|
5
|
-
# Temporary hack to get CodeClimate to work with SimpleCov 0.18 JSON format until issue is fixed
|
|
6
|
-
# upstream: https://github.com/codeclimate/test-reporter/issues/413
|
|
7
|
-
|
|
8
|
-
require "json"
|
|
9
|
-
|
|
10
|
-
filename = "coverage/.resultset.json"
|
|
11
|
-
contents = JSON.parse(File.read(filename))
|
|
12
|
-
|
|
13
|
-
def remove_lines_key(obj)
|
|
14
|
-
case obj
|
|
15
|
-
when Hash
|
|
16
|
-
obj.transform_values do |val|
|
|
17
|
-
val.is_a?(Hash) && val.key?("lines") ? val["lines"] : remove_lines_key(val)
|
|
18
|
-
end
|
|
19
|
-
else
|
|
20
|
-
obj
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# overwrite
|
|
25
|
-
File.write(filename, JSON.generate(remove_lines_key(contents)))
|
|
26
|
-
|
|
27
|
-
puts Dir['coverage/.*.json']
|
data/bin/test
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
set -e
|
|
4
|
-
|
|
5
|
-
RUBY_V=$(ruby -v)
|
|
6
|
-
|
|
7
|
-
function reset_gemfile_and_test {
|
|
8
|
-
rm Gemfile.lock
|
|
9
|
-
|
|
10
|
-
eval "$1 bundle update"
|
|
11
|
-
eval "$1 ENABLE_TRANSITIONS=true bundle exec rake test"
|
|
12
|
-
eval "$1 ENABLE_TRANSITIONS=false bundle exec rake test"
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function test_with_activerecord {
|
|
16
|
-
reset_gemfile_and_test "ACTIVERECORD_VERSION=$1"
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
RUBY_2_2345="ruby 2.[2345]."
|
|
20
|
-
RUBY_2_234="ruby 2.[234]."
|
|
21
|
-
RUBY_2_567="ruby 2.[567]."
|
|
22
|
-
RUBY_2_23="ruby 2.[23]."
|
|
23
|
-
RUBY_2_2="ruby 2.2."
|
|
24
|
-
RUBY_3_01="ruby 3.[01]."
|
|
25
|
-
|
|
26
|
-
if [[ $RUBY_V =~ $RUBY_2_2345 ]]; then
|
|
27
|
-
if [[ $RUBY_V =~ $RUBY_2_234 ]]; then
|
|
28
|
-
reset_gemfile_and_test
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
if [[ $RUBY_V =~ $RUBY_2_2 ]]; then
|
|
32
|
-
test_with_activerecord "3.2"
|
|
33
|
-
fi
|
|
34
|
-
|
|
35
|
-
if [[ $RUBY_V =~ $RUBY_2_23 ]]; then
|
|
36
|
-
test_with_activerecord "4.0"
|
|
37
|
-
test_with_activerecord "4.1"
|
|
38
|
-
test_with_activerecord "4.2"
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
test_with_activerecord "5.0"
|
|
42
|
-
test_with_activerecord "5.1"
|
|
43
|
-
test_with_activerecord "5.2"
|
|
44
|
-
fi
|
|
45
|
-
|
|
46
|
-
if [[ $RUBY_V =~ $RUBY_2_567 ]] || [[ $RUBY_V =~ $RUBY_3_01 ]]; then
|
|
47
|
-
gem install bundler -v ">= 2" --no-doc
|
|
48
|
-
|
|
49
|
-
reset_gemfile_and_test
|
|
50
|
-
|
|
51
|
-
test_with_activerecord "6.0"
|
|
52
|
-
test_with_activerecord "6.1"
|
|
53
|
-
fi
|