f_service 0.3.0 → 0.3.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: 6cb29d87cf5c970b2b185ed2c3da41020f40122e2d0857af068302fb32e55400
4
- data.tar.gz: 27a89660bb6d1e65d537f5d6617cc8175f600ab71efca79f65875a1b6adf0c97
3
+ metadata.gz: 4997e65a2e3054de3de7a252a3e85143d41701f44046982ffc583c486755aa1d
4
+ data.tar.gz: ea5212762e5529ec315dac3437d29ac75a5c20058d30fdc382fe31b6f18288a6
5
5
  SHA512:
6
- metadata.gz: 2b444953aee676163a2b076d814b3cc801b0808a30660c4edd2f19172754d58c41a7fcb3129a52cf95c1a0fdb8546419a55a8101b6882459673cd647d520f660
7
- data.tar.gz: 0e2f10e1ad6cf4ba7ba2375b2302661429721b7bf4023afcb1559909205eb7e8f013efbb3da07c4b7926b2e967592c31a6c930ca6d6e69b195bba97342407b69
6
+ metadata.gz: f3c51bf4006bb0b037361690fabb7e0af7895b393394561ed9a784d89ffe063bd48e573406fbee6675e5d3ef5f9ca3f9085240c6855ece5a7a50259dd6264e98
7
+ data.tar.gz: 7af0dfcf8f92fb8ac39b43efc044c5f623c9c52084b0b1a9542a9d6f1902dbe7444eb5b3b00ec043302dfe9b6e78eb879bc1cb335c2e078930bb15c49a9fe176
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- ruby: [2.6, 2.7, 3.0, 3.1]
14
+ ruby: [3.0, 3.1, 3.2, 3.3]
15
15
 
16
16
  steps:
17
17
  - uses: actions/checkout@v2
data/.rubocop.yml CHANGED
@@ -2,6 +2,7 @@ require:
2
2
  - rubocop-rspec
3
3
 
4
4
  AllCops:
5
+ TargetRubyVersion: 3.0.0
5
6
  NewCops: enable
6
7
 
7
8
  Layout/LineLength:
@@ -31,3 +32,7 @@ RSpec/ExampleLength:
31
32
 
32
33
  RSpec/NestedGroups:
33
34
  Enabled: false
35
+
36
+ ##### RUBYGEMS #####
37
+ Gemspec/RequireMFA:
38
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -10,6 +10,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
10
10
  <!-- ### Removed -->
11
11
  ---
12
12
 
13
+ ## 0.3.0
14
+ ### Added
15
+ - Drop Support to Ruby 2.6 and 2.7
16
+ - Add Support to Ruby 3.2 and 3.3
17
+ - Changed and_error to use a matcher instead of equality comparation #51
18
+
13
19
  ## 0.3.0
14
20
  ### Added
15
21
  - Added Rspec Helper `#mock_service` #41;
data/Gemfile CHANGED
@@ -9,7 +9,7 @@ group :development, :test do
9
9
  gem 'pry'
10
10
  gem 'pry-nav'
11
11
  gem 'rake', '~> 13.0.0'
12
- gem 'rubocop', '~> 0.82.0', require: false
12
+ gem 'rubocop', '~> 1.60.2', require: false
13
13
  gem 'rubocop-rspec', require: false
14
14
  end
15
15
 
data/Gemfile.lock CHANGED
@@ -1,39 +1,47 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- f_service (0.3.0)
4
+ f_service (0.3.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- ast (2.4.0)
10
- backport (1.1.2)
11
- benchmark (0.1.0)
9
+ ast (2.4.2)
10
+ backport (1.2.0)
11
+ benchmark (0.3.0)
12
12
  coderay (1.1.3)
13
13
  diff-lcs (1.3)
14
14
  docile (1.3.5)
15
15
  e2mmap (0.1.0)
16
- jaro_winkler (1.5.4)
17
- maruku (0.7.3)
16
+ jaro_winkler (1.5.6)
17
+ json (2.7.1)
18
+ kramdown (2.4.0)
19
+ rexml
20
+ kramdown-parser-gfm (1.1.0)
21
+ kramdown (~> 2.0)
22
+ language_server-protocol (3.17.0.3)
18
23
  method_source (1.0.0)
19
- mini_portile2 (2.8.1)
20
- nokogiri (1.14.3)
21
- mini_portile2 (~> 2.8.0)
24
+ mini_portile2 (2.8.6)
25
+ nokogiri (1.16.5)
26
+ mini_portile2 (~> 2.8.2)
22
27
  racc (~> 1.4)
23
- parallel (1.19.1)
24
- parser (2.7.1.1)
25
- ast (~> 2.4.0)
28
+ parallel (1.24.0)
29
+ parser (3.3.0.5)
30
+ ast (~> 2.4.1)
31
+ racc
26
32
  pry (0.14.1)
27
33
  coderay (~> 1.1)
28
34
  method_source (~> 1.0)
29
35
  pry-nav (1.0.0)
30
36
  pry (>= 0.9.10, < 0.15)
31
- racc (1.6.2)
32
- rainbow (3.0.0)
37
+ racc (1.7.3)
38
+ rainbow (3.1.1)
33
39
  rake (13.0.1)
34
- reverse_markdown (1.4.0)
40
+ regexp_parser (2.9.0)
41
+ reverse_markdown (2.1.1)
35
42
  nokogiri
36
- rexml (3.2.5)
43
+ rexml (3.2.8)
44
+ strscan (>= 3.0.9)
37
45
  rspec (3.9.0)
38
46
  rspec-core (~> 3.9.0)
39
47
  rspec-expectations (~> 3.9.0)
@@ -47,53 +55,64 @@ GEM
47
55
  diff-lcs (>= 1.2.0, < 2.0)
48
56
  rspec-support (~> 3.9.0)
49
57
  rspec-support (3.9.2)
50
- rubocop (0.82.0)
51
- jaro_winkler (~> 1.5.1)
58
+ rubocop (1.60.2)
59
+ json (~> 2.3)
60
+ language_server-protocol (>= 3.17.0)
52
61
  parallel (~> 1.10)
53
- parser (>= 2.7.0.1)
62
+ parser (>= 3.3.0.2)
54
63
  rainbow (>= 2.2.2, < 4.0)
55
- rexml
64
+ regexp_parser (>= 1.8, < 3.0)
65
+ rexml (>= 3.2.5, < 4.0)
66
+ rubocop-ast (>= 1.30.0, < 2.0)
56
67
  ruby-progressbar (~> 1.7)
57
- unicode-display_width (>= 1.4.0, < 2.0)
58
- rubocop-rspec (1.38.1)
59
- rubocop (>= 0.68.1)
60
- ruby-progressbar (1.10.1)
68
+ unicode-display_width (>= 2.4.0, < 3.0)
69
+ rubocop-ast (1.30.0)
70
+ parser (>= 3.2.1.0)
71
+ rubocop-capybara (2.20.0)
72
+ rubocop (~> 1.41)
73
+ rubocop-factory_bot (2.25.1)
74
+ rubocop (~> 1.41)
75
+ rubocop-rspec (2.26.1)
76
+ rubocop (~> 1.40)
77
+ rubocop-capybara (~> 2.17)
78
+ rubocop-factory_bot (~> 2.22)
79
+ ruby-progressbar (1.13.0)
61
80
  simplecov (0.21.2)
62
81
  docile (~> 1.1)
63
82
  simplecov-html (~> 0.11)
64
83
  simplecov_json_formatter (~> 0.1)
65
84
  simplecov-html (0.12.3)
66
85
  simplecov_json_formatter (0.1.2)
67
- solargraph (0.38.6)
86
+ solargraph (0.41.2)
68
87
  backport (~> 1.1)
69
88
  benchmark
70
89
  bundler (>= 1.17.2)
71
90
  e2mmap
72
91
  jaro_winkler (~> 1.5)
73
- maruku (~> 0.7, >= 0.7.3)
74
- nokogiri (~> 1.9, >= 1.9.1)
75
- parser (~> 2.3)
76
- reverse_markdown (~> 1.0, >= 1.0.5)
77
- rubocop (~> 0.52)
92
+ kramdown (~> 2.3)
93
+ kramdown-parser-gfm (~> 1.1)
94
+ parser (~> 3.0)
95
+ reverse_markdown (>= 1.0.5, < 3)
96
+ rubocop (>= 0.52)
78
97
  thor (~> 1.0)
79
98
  tilt (~> 2.0)
80
- yard (~> 0.9)
81
- thor (1.0.1)
82
- tilt (2.0.10)
83
- unicode-display_width (1.7.0)
84
- yard (0.9.24)
99
+ yard (~> 0.9, >= 0.9.24)
100
+ strscan (3.1.0)
101
+ thor (1.3.0)
102
+ tilt (2.3.0)
103
+ unicode-display_width (2.5.0)
104
+ yard (0.9.36)
85
105
 
86
106
  PLATFORMS
87
107
  ruby
88
108
 
89
109
  DEPENDENCIES
90
- bundler (~> 2.0)
91
110
  f_service!
92
111
  pry
93
112
  pry-nav
94
113
  rake (~> 13.0.0)
95
114
  rspec (~> 3.0)
96
- rubocop (~> 0.82.0)
115
+ rubocop (~> 1.60.2)
97
116
  rubocop-rspec
98
117
  simplecov
99
118
  solargraph
data/README.md CHANGED
@@ -189,11 +189,14 @@ class UsersController < BaseController
189
189
  end
190
190
  ```
191
191
 
192
- ### Types precedence
192
+ ### Type precedence
193
193
 
194
- FService matches types from left to right, from more specific to more generic.
195
- Example (:unprocessable_entity, :client_error, :http_response)
196
- Then, result will match first :unprocessable_entity, after :client_error, after :http_response, then not matched.
194
+ FService matches the service's types from left to right, from more specific to more generic.
195
+ For example, the following result `Failure(:unprocessable_entity, :client_error, :http_response)` will match in the following order:
196
+ 1. `:unprocessable_entity`;
197
+ 2. `:client_error`;
198
+ 3. `:http_response`;
199
+ 4. unmatched block;
197
200
 
198
201
  ### Chaining services
199
202
 
@@ -277,7 +280,7 @@ require 'f_service/rspec'
277
280
 
278
281
  ### Mocking a result
279
282
 
280
- ```
283
+ ```rb
281
284
  mock_service(Uer::Create)
282
285
  # => Mocks a successful result with all values nil
283
286
 
@@ -310,6 +313,8 @@ expect(User::Create.(name: 'Joe')).to have_succeed_with(:created).and_value(an_i
310
313
  expect(User::Create.(name: nil)).to have_failed_with(:invalid_attributes)
311
314
 
312
315
  expect(User::Create.(name: nil)).to have_failed_with(:invalid_attributes).and_error({ name: ["can't be blank"] })
316
+
317
+ expect(User::Create.(name: nil)).to have_failed_with(:invalid_attributes).and_error(a_hash_including(name: ["can't be blank"]))
313
318
  ```
314
319
 
315
320
  ## API Docs
data/f_service.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.homepage = 'https://github.com/Fretadao/f_service'
21
21
  spec.license = 'MIT'
22
+ spec.required_ruby_version = '>= 3.0.0'
22
23
 
23
24
  spec.metadata['homepage_uri'] = spec.homepage
24
25
  spec.metadata['source_code_uri'] = 'https://github.com/Fretadao/f_service'
@@ -33,6 +34,4 @@ Gem::Specification.new do |spec|
33
34
  spec.bindir = 'exe'
34
35
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
35
36
  spec.require_paths = ['lib']
36
-
37
- spec.add_development_dependency 'bundler', '~> 2.0'
38
37
  end
@@ -6,7 +6,7 @@ RSpec::Matchers.define :have_failed_with do |*expected_types|
6
6
  match do |actual|
7
7
  matched = actual.is_a?(FService::Result::Failure) && actual.types == expected_types
8
8
 
9
- matched &&= actual.error == @expected_error if defined?(@expected_error)
9
+ matched &&= values_match?(@expected_error, actual.error) if defined?(@expected_error)
10
10
 
11
11
  matched
12
12
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module FService
4
4
  # Current version of the gem
5
- VERSION = '0.3.0'
5
+ VERSION = '0.3.1'
6
6
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: f_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fretadao Tech Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-22 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.0'
11
+ date: 2024-07-18 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description: |2
28
14
  FService is a small gem that provides a base class for your services (aka operations).
29
15
  The goal is to make services simpler, safer and more composable.
@@ -77,14 +63,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
63
  requirements:
78
64
  - - ">="
79
65
  - !ruby/object:Gem::Version
80
- version: '0'
66
+ version: 3.0.0
81
67
  required_rubygems_version: !ruby/object:Gem::Requirement
82
68
  requirements:
83
69
  - - ">="
84
70
  - !ruby/object:Gem::Version
85
71
  version: '0'
86
72
  requirements: []
87
- rubygems_version: 3.3.5
73
+ rubygems_version: 3.5.11
88
74
  signing_key:
89
75
  specification_version: 4
90
76
  summary: A small, monad-based service class