action_logic 0.3.2 → 0.3.3

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: f77875aae39c5b0da5d1b63de5f80fca478b943fbd116fcf573ffe1f9935dbed
4
- data.tar.gz: badf7950851e4f165e91ebfcf97533c5045614fe58b8efa2f79a9b078c5ce675
3
+ metadata.gz: 332860b5c92213d9c2ed4b5e17b4016d002bd3d1a3aa36e5b7efe27c2bb4548e
4
+ data.tar.gz: 765f846bef16635c571b7d804c3674029adcb0d753c1a05284ac03a18af03459
5
5
  SHA512:
6
- metadata.gz: 6049a6c804818a8cc08c42ba4432e2597db902b6e850bed8fccb290756fbe408ba7587b276a88d265dc1bfa3efe2577190f66d6f721a6bf527a730e0dc0f3960
7
- data.tar.gz: f2a2e4f3ef957c801a3d57a4e1bed56f19d6edc81564a851fe0cd303cf431f563a18d77edf34164316adc23e995ced7dbb19fa6c5af11195bbea830c7ab65985
6
+ metadata.gz: d9e4e43e85c0e6f1c2e8abf0386df61316d7bc66cf8a27343ac5e422e1db7d00ecd6a6f65b9ea2918a17c11be98df6e60adb363a3742d334d29eb6109f149d8f
7
+ data.tar.gz: dfa4be20e08233fbf8862649d1ff8b574c0ba50c9e535bf57b08d9f25ef6efa3ab0b08757519ed246c12eb0757e00c9ecd194562a1c905fd7f2ff1b8090cbb3b
@@ -0,0 +1,18 @@
1
+ name: Test
2
+ on: [push, pull_request]
3
+ jobs:
4
+ test:
5
+ strategy:
6
+ fail-fast: false
7
+ matrix:
8
+ os: [ubuntu-latest, macos-latest]
9
+ # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
10
+ ruby: ['2.7', '3.0', '3.1']
11
+ runs-on: ${{ matrix.os }}
12
+ steps:
13
+ - uses: actions/checkout@v3
14
+ - uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: ${{ matrix.ruby }}
17
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
18
+ - run: bundle exec rspec spec
data/Gemfile.lock CHANGED
@@ -1,54 +1,51 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- action_logic (0.3.0)
4
+ action_logic (0.3.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- codecov (0.1.14)
10
- json
11
- simplecov
12
- url
13
- coderay (1.1.2)
14
- diff-lcs (1.3)
15
- docile (1.3.1)
16
- json (2.1.0)
17
- method_source (0.9.2)
18
- pry (0.12.2)
19
- coderay (~> 1.1.0)
20
- method_source (~> 0.9.0)
21
- rake (13.0.1)
22
- rspec (3.8.0)
23
- rspec-core (~> 3.8.0)
24
- rspec-expectations (~> 3.8.0)
25
- rspec-mocks (~> 3.8.0)
26
- rspec-core (3.8.0)
27
- rspec-support (~> 3.8.0)
28
- rspec-expectations (3.8.2)
9
+ codecov (0.6.0)
10
+ simplecov (>= 0.15, < 0.22)
11
+ coderay (1.1.3)
12
+ diff-lcs (1.5.0)
13
+ docile (1.4.0)
14
+ method_source (1.0.0)
15
+ pry (0.14.1)
16
+ coderay (~> 1.1)
17
+ method_source (~> 1.0)
18
+ rake (13.0.6)
19
+ rspec (3.11.0)
20
+ rspec-core (~> 3.11.0)
21
+ rspec-expectations (~> 3.11.0)
22
+ rspec-mocks (~> 3.11.0)
23
+ rspec-core (3.11.0)
24
+ rspec-support (~> 3.11.0)
25
+ rspec-expectations (3.11.0)
29
26
  diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.8.0)
31
- rspec-mocks (3.8.0)
27
+ rspec-support (~> 3.11.0)
28
+ rspec-mocks (3.11.1)
32
29
  diff-lcs (>= 1.2.0, < 2.0)
33
- rspec-support (~> 3.8.0)
34
- rspec-support (3.8.0)
35
- simplecov (0.16.1)
30
+ rspec-support (~> 3.11.0)
31
+ rspec-support (3.11.0)
32
+ simplecov (0.21.2)
36
33
  docile (~> 1.1)
37
- json (>= 1.8, < 3)
38
- simplecov-html (~> 0.10.0)
39
- simplecov-html (0.10.2)
40
- url (0.3.2)
34
+ simplecov-html (~> 0.11)
35
+ simplecov_json_formatter (~> 0.1)
36
+ simplecov-html (0.12.3)
37
+ simplecov_json_formatter (0.1.4)
41
38
 
42
39
  PLATFORMS
43
40
  ruby
44
41
 
45
42
  DEPENDENCIES
46
43
  action_logic!
47
- codecov (~> 0.1.14)
48
- pry (~> 0.12.2)
49
- rake (~> 13.0.1)
50
- rspec (~> 3.8)
51
- simplecov (~> 0.16.1)
44
+ codecov (~> 0.6.0)
45
+ pry (~> 0.14.1)
46
+ rake (~> 13.0.6)
47
+ rspec (~> 3.11)
48
+ simplecov (~> 0.21.2)
52
49
 
53
50
  BUNDLED WITH
54
51
  1.17.2
data/README.md CHANGED
@@ -58,12 +58,11 @@ includes an item that your e-commerce store no longer stocks? What happens if an
58
58
  you add more and more logic to that controller action.
59
59
 
60
60
  What once was a simple controller action designed with only the happy path of a successful checkout in mind has now become 100 lines long with 5 to 10 levels
61
- of nested if statements. The voice of Uncle Bob starts ringing in your ears and you know there must be a better way. You think on it for awhile and consider not only
62
- the technical challenges of refactoring this code, but you'd also like to make this code reusable and modular. You want this code to be easy to test and easy to maintain.
63
- You want to honor the SOLID principles by writing classes that are singularly focused and easy to extend. You reason these new classes should only have to change if the
64
- business logic they execute changes. You see that there are relationships between the entities and you see the possibility of abstractions that allow entities of similar types
65
- to interact nicely with each other. You begin thinking about interfaces and the Liskov Substitution Principle, and eventually your mind turns towards domains and data modeling.
66
- Where does it end you wonder?
61
+ of nested if statements. You think on it for awhile and consider not only the technical challenges of refactoring this code, but you'd also like to make this code
62
+ reusable and modular. You want this code to be easy to test and easy to maintain. You want to honor the SOLID principles by writing classes that are singularly focused
63
+ and easy to extend. You reason these new classes should only have to change if the business logic they execute changes. You see that there are relationships between the
64
+ entities and you see the possibility of abstractions that allow entities of similar types to interact nicely with each other. You begin thinking about interfaces and the
65
+ Liskov Substitution Principle, and eventually your mind turns towards domains and data modeling. Where does it end you wonder?
67
66
 
68
67
  But you remember your team. It's a team of people all wanting to do their best, and represent a variety of backgrounds and experiences. Each person has varying degress of familiarity
69
68
  with different types of abstractions and approaches, and you wonder what abstractions might be as easy to work with for a new developer as they are for an experienced developer?
data/action_logic.gemspec CHANGED
@@ -17,9 +17,9 @@ Gem::Specification.new do |s|
17
17
  s.date = '2018-12-17'
18
18
  s.description = 'Provides common interfaces for validating and abstracting business logic'
19
19
 
20
- s.add_development_dependency("rspec", "~> 3.8")
21
- s.add_development_dependency("pry", "~> 0.12.2")
22
- s.add_development_dependency("rake", "~> 13.0.1")
23
- s.add_development_dependency("simplecov", "~> 0.16.1")
24
- s.add_development_dependency("codecov", "~> 0.1.14")
20
+ s.add_development_dependency("rspec", "~> 3.11")
21
+ s.add_development_dependency("pry", "~> 0.14.1")
22
+ s.add_development_dependency("rake", "~> 13.0.6")
23
+ s.add_development_dependency("simplecov", "~> 0.21.2")
24
+ s.add_development_dependency("codecov", "~> 0.6.0")
25
25
  end
@@ -13,7 +13,7 @@ module ActionLogic
13
13
 
14
14
  def self.presence_errors(validation_rules, context)
15
15
  validation_rules.reduce([]) do |error_collection, (expected_attribute, expected_validation)|
16
- next unless expected_validation[:presence]
16
+ next error_collection unless expected_validation[:presence]
17
17
  error_collection << error_message(expected_attribute, expected_validation, context)
18
18
  error_collection
19
19
  end || []
@@ -1,3 +1,3 @@
1
1
  module ActionLogic
2
- VERSION = '0.3.2'
2
+ VERSION = '0.3.3'
3
3
  end
@@ -164,7 +164,7 @@ module ActionLogic
164
164
  end
165
165
 
166
166
  it "raises error if type validation is not satisfied" do
167
- expect { ValidateBeforeMixedTypeAndPresenceUseCase.execute(odd_integer_test: 1, string_test: 15) }.to \
167
+ expect { ValidateBeforeMixedTypeAndPresenceUseCase.execute(odd_integer_test: "String", string_test: 15) }.to \
168
168
  raise_error(ActionLogic::AttributeTypeError)
169
169
  end
170
170
 
@@ -63,7 +63,7 @@ describe ActionLogic do
63
63
  end
64
64
 
65
65
  it "uses a custom benchmark handler if one is provided" do
66
- custom_benchmark_handler = -> { yield }
66
+ custom_benchmark_handler = -> {}
67
67
 
68
68
  described_class.configure do |config|
69
69
  config.benchmark_handler = custom_benchmark_handler
@@ -284,4 +284,44 @@ class HaltTestTask
284
284
  context.halt!(Constants::HALT_MESSAGE)
285
285
  end
286
286
  end
287
+
288
+ class UseCaseTestTask1
289
+ include ActionLogic::ActionTask
290
+
291
+ def call
292
+ context.first = "first"
293
+ end
294
+ end
295
+
296
+ class UseCaseTestTask2
297
+ include ActionLogic::ActionTask
298
+
299
+ def call
300
+ context.second = "second"
301
+ end
302
+ end
303
+
304
+ class UseCaseTestTask3
305
+ include ActionLogic::ActionTask
306
+
307
+ def call
308
+ context.third = "third"
309
+ end
310
+ end
311
+
312
+ class UseCaseFailureTestTask
313
+ include ActionLogic::ActionTask
314
+
315
+ def call
316
+ context.fail!(Constants::FAILURE_MESSAGE)
317
+ end
318
+ end
319
+
320
+ class UseCaseHaltTestTask
321
+ include ActionLogic::ActionTask
322
+
323
+ def call
324
+ context.halt!(Constants::HALT_MESSAGE)
325
+ end
326
+ end
287
327
  # :nocov:
@@ -192,8 +192,8 @@ end
192
192
  class ValidateBeforeMixedTypeAndPresenceUseCase
193
193
  include ActionLogic::ActionUseCase
194
194
 
195
- validates_before odd_integer_test: { presence: ->(i) { i % 2 != 0 } },
196
- string_test: { type: String, presence: true }
195
+ validates_before odd_integer_test: { type: Integer, presence: ->(i) { i % 2 != 0 }, type: Integer },
196
+ string_test: { presence: false, type: String }
197
197
 
198
198
  def call
199
199
  end
@@ -392,44 +392,4 @@ class HaltTestUseCase
392
392
  UseCaseTestTask3]
393
393
  end
394
394
  end
395
-
396
- class UseCaseTestTask1
397
- include ActionLogic::ActionTask
398
-
399
- def call
400
- context.first = "first"
401
- end
402
- end
403
-
404
- class UseCaseTestTask2
405
- include ActionLogic::ActionTask
406
-
407
- def call
408
- context.second = "second"
409
- end
410
- end
411
-
412
- class UseCaseTestTask3
413
- include ActionLogic::ActionTask
414
-
415
- def call
416
- context.third = "third"
417
- end
418
- end
419
-
420
- class UseCaseFailureTestTask
421
- include ActionLogic::ActionTask
422
-
423
- def call
424
- context.fail!(Constants::FAILURE_MESSAGE)
425
- end
426
- end
427
-
428
- class UseCaseHaltTestTask
429
- include ActionLogic::ActionTask
430
-
431
- def call
432
- context.halt!(Constants::HALT_MESSAGE)
433
- end
434
- end
435
395
  # :nocov:
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_logic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Winfrey
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2018-12-17 00:00:00.000000000 Z
@@ -16,76 +16,77 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.8'
19
+ version: '3.11'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.8'
26
+ version: '3.11'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.12.2
33
+ version: 0.14.1
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.12.2
40
+ version: 0.14.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 13.0.1
47
+ version: 13.0.6
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 13.0.1
54
+ version: 13.0.6
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: simplecov
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.16.1
61
+ version: 0.21.2
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.16.1
68
+ version: 0.21.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: codecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.1.14
75
+ version: 0.6.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.1.14
82
+ version: 0.6.0
83
83
  description: Provides common interfaces for validating and abstracting business logic
84
84
  email: rick.winfrey@gmail.com
85
85
  executables: []
86
86
  extensions: []
87
87
  extra_rdoc_files: []
88
88
  files:
89
+ - ".github/workflows/test.yaml"
89
90
  - ".gitignore"
90
91
  - ".travis.yml"
91
92
  - CODE_OF_CONDUCT.md
@@ -121,7 +122,7 @@ files:
121
122
  - spec/action_logic/action_context_spec.rb
122
123
  - spec/action_logic/action_coordinator_spec.rb
123
124
  - spec/action_logic/action_task_spec.rb
124
- - spec/action_logic/active_use_case_spec.rb
125
+ - spec/action_logic/action_use_case_spec.rb
125
126
  - spec/action_logic/configuration_spec.rb
126
127
  - spec/fixtures/constants.rb
127
128
  - spec/fixtures/coordinators.rb
@@ -133,7 +134,7 @@ homepage: https://github.com/rewinfrey/action_logic
133
134
  licenses:
134
135
  - MIT
135
136
  metadata: {}
136
- post_install_message:
137
+ post_install_message:
137
138
  rdoc_options: []
138
139
  require_paths:
139
140
  - lib
@@ -148,8 +149,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
149
  - !ruby/object:Gem::Version
149
150
  version: '0'
150
151
  requirements: []
151
- rubygems_version: 3.1.2
152
- signing_key:
152
+ rubygems_version: 3.3.7
153
+ signing_key:
153
154
  specification_version: 4
154
155
  summary: Business logic abstraction
155
156
  test_files:
@@ -157,7 +158,7 @@ test_files:
157
158
  - spec/action_logic/action_context_spec.rb
158
159
  - spec/action_logic/action_coordinator_spec.rb
159
160
  - spec/action_logic/action_task_spec.rb
160
- - spec/action_logic/active_use_case_spec.rb
161
+ - spec/action_logic/action_use_case_spec.rb
161
162
  - spec/action_logic/configuration_spec.rb
162
163
  - spec/fixtures/constants.rb
163
164
  - spec/fixtures/coordinators.rb