action_logic 0.2.8 → 0.3.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/Gemfile.lock +31 -33
- data/README.md +0 -1
- data/action_logic.gemspec +6 -6
- data/lib/action_logic/action_validation/type_validation.rb +1 -1
- data/lib/action_logic/version.rb +1 -1
- data/spec/action_logic/active_use_case_spec.rb +21 -0
- data/spec/fixtures/use_cases.rb +15 -0
- metadata +13 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f2a836061c6a36975110217dd7b4ae21bd482b9
|
4
|
+
data.tar.gz: ca43f16e23c1ae5e8a0af96b43d788ddf5457bf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ced0fc7c9682743598574384d7b7923e40aef67805be0836f2ed903dc022701f7497024a1e7baf2be3be7c6a56254a90db8ef2b0639dc9e731039abe31097ff1
|
7
|
+
data.tar.gz: 7c7760cfe6e28013f5caf7abf1c9040747130127731c93e3250fd025f122f335e38ee7c984d5023417e1a3dbcd82f5797540784e2bebf1924107759e4d786db2
|
data/Gemfile.lock
CHANGED
@@ -1,44 +1,42 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
action_logic (0.
|
4
|
+
action_logic (0.3.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
codecov (0.1.
|
9
|
+
codecov (0.1.14)
|
10
10
|
json
|
11
11
|
simplecov
|
12
12
|
url
|
13
|
-
coderay (1.1.
|
14
|
-
diff-lcs (1.
|
15
|
-
docile (1.1
|
16
|
-
json (1.
|
17
|
-
method_source (0.
|
18
|
-
pry (0.
|
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
19
|
coderay (~> 1.1.0)
|
20
|
-
method_source (~> 0.
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
rspec-
|
25
|
-
rspec-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
rspec-expectations (3.3.1)
|
20
|
+
method_source (~> 0.9.0)
|
21
|
+
rake (12.3.2)
|
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)
|
30
29
|
diff-lcs (>= 1.2.0, < 2.0)
|
31
|
-
rspec-support (~> 3.
|
32
|
-
rspec-mocks (3.
|
30
|
+
rspec-support (~> 3.8.0)
|
31
|
+
rspec-mocks (3.8.0)
|
33
32
|
diff-lcs (>= 1.2.0, < 2.0)
|
34
|
-
rspec-support (~> 3.
|
35
|
-
rspec-support (3.
|
36
|
-
simplecov (0.
|
37
|
-
docile (~> 1.1
|
38
|
-
json (
|
33
|
+
rspec-support (~> 3.8.0)
|
34
|
+
rspec-support (3.8.0)
|
35
|
+
simplecov (0.16.1)
|
36
|
+
docile (~> 1.1)
|
37
|
+
json (>= 1.8, < 3)
|
39
38
|
simplecov-html (~> 0.10.0)
|
40
|
-
simplecov-html (0.10.
|
41
|
-
slop (3.6.0)
|
39
|
+
simplecov-html (0.10.2)
|
42
40
|
url (0.3.2)
|
43
41
|
|
44
42
|
PLATFORMS
|
@@ -46,11 +44,11 @@ PLATFORMS
|
|
46
44
|
|
47
45
|
DEPENDENCIES
|
48
46
|
action_logic!
|
49
|
-
codecov (~> 0.1)
|
50
|
-
pry (~> 0.
|
51
|
-
rake (~>
|
52
|
-
rspec (~> 3.
|
53
|
-
simplecov (~> 0.
|
47
|
+
codecov (~> 0.1.14)
|
48
|
+
pry (~> 0.12.2)
|
49
|
+
rake (~> 12.3.2)
|
50
|
+
rspec (~> 3.8.0)
|
51
|
+
simplecov (~> 0.16.1)
|
54
52
|
|
55
53
|
BUNDLED WITH
|
56
|
-
1.
|
54
|
+
1.17.2
|
data/README.md
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
[](https://badge.fury.io/rb/action_logic)
|
5
5
|
[](https://codeclimate.com/github/rewinfrey/action_logic)
|
6
6
|
[](https://codecov.io/github/rewinfrey/ActionLogic?branch=master)
|
7
|
-
[](https://gemnasium.com/rewinfrey/action_logic)
|
8
7
|
[](http://opensource.org/licenses/MIT)
|
9
8
|
|
10
9
|
### Introduction
|
data/action_logic.gemspec
CHANGED
@@ -14,12 +14,12 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.authors = ["Rick Winfrey"]
|
16
16
|
s.email = 'rick.winfrey@gmail.com'
|
17
|
-
s.date = '
|
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.
|
21
|
-
s.add_development_dependency("pry", "~> 0.
|
22
|
-
s.add_development_dependency("rake", "~>
|
23
|
-
s.add_development_dependency("simplecov", "~> 0.
|
24
|
-
s.add_development_dependency("codecov", "~> 0.1")
|
20
|
+
s.add_development_dependency("rspec", "~> 3.8")
|
21
|
+
s.add_development_dependency("pry", "~> 0.12.2")
|
22
|
+
s.add_development_dependency("rake", "~> 12.3")
|
23
|
+
s.add_development_dependency("simplecov", "~> 0.16.1")
|
24
|
+
s.add_development_dependency("codecov", "~> 0.1.14")
|
25
25
|
end
|
@@ -9,7 +9,7 @@ module ActionLogic
|
|
9
9
|
return unless validation_rules.values.find { |expected_validation| expected_validation[:type] }
|
10
10
|
|
11
11
|
type_errors = validation_rules.reduce([]) do |collection, (expected_attribute, expected_validation)|
|
12
|
-
next unless expected_validation[:type]
|
12
|
+
next collection unless expected_validation[:type]
|
13
13
|
|
14
14
|
if context.to_h[expected_attribute].class != expected_validation[:type]
|
15
15
|
collection << "Attribute: #{expected_attribute} with value: #{context.to_h[expected_attribute]} was expected to be of type #{expected_validation[:type]} but is #{context.to_h[expected_attribute].class}"
|
data/lib/action_logic/version.rb
CHANGED
@@ -152,6 +152,27 @@ module ActionLogic
|
|
152
152
|
raise_error(ActionLogic::UnrecognizablePresenceValidatorError)
|
153
153
|
end
|
154
154
|
end
|
155
|
+
|
156
|
+
describe "mixed custom presence and type" do
|
157
|
+
it "allows custom presence validation to be defined without type if a type validation is defined" do
|
158
|
+
expect { ValidateBeforeMixedTypeAndPresenceUseCase.execute(odd_integer_test: 1, string_test: "Test") }.to_not raise_error
|
159
|
+
end
|
160
|
+
|
161
|
+
it "raises error if custom presence validation is not satisfied" do
|
162
|
+
expect { ValidateBeforeMixedTypeAndPresenceUseCase.execute(odd_integer_test: 2, string_test: "Test") }.to \
|
163
|
+
raise_error(ActionLogic::PresenceError)
|
164
|
+
end
|
165
|
+
|
166
|
+
it "raises error if type validation is not satisfied" do
|
167
|
+
expect { ValidateBeforeMixedTypeAndPresenceUseCase.execute(odd_integer_test: 1, string_test: 15) }.to \
|
168
|
+
raise_error(ActionLogic::AttributeTypeError)
|
169
|
+
end
|
170
|
+
|
171
|
+
it "raises error if type presence validation is not satisfied" do
|
172
|
+
expect { ValidateBeforeMixedTypeAndPresenceUseCase.execute(odd_integer_test: 1) }.to \
|
173
|
+
raise_error(ActionLogic::MissingAttributeError)
|
174
|
+
end
|
175
|
+
end
|
155
176
|
end
|
156
177
|
|
157
178
|
describe "after validations" do
|
data/spec/fixtures/use_cases.rb
CHANGED
@@ -189,6 +189,21 @@ class ValidateBeforeUnrecognizablePresenceTestUseCase
|
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
192
|
+
class ValidateBeforeMixedTypeAndPresenceUseCase
|
193
|
+
include ActionLogic::ActionUseCase
|
194
|
+
|
195
|
+
validates_before odd_integer_test: { presence: ->(i) { i % 2 != 0 } },
|
196
|
+
string_test: { type: String, presence: true }
|
197
|
+
|
198
|
+
def call
|
199
|
+
end
|
200
|
+
|
201
|
+
def tasks
|
202
|
+
[UseCaseTestTask1,
|
203
|
+
UseCaseTestTask2]
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
192
207
|
class ValidateAfterTestUseCase
|
193
208
|
include ActionLogic::ActionUseCase
|
194
209
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: action_logic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rick Winfrey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,70 +16,70 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3.
|
19
|
+
version: '3.8'
|
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.
|
26
|
+
version: '3.8'
|
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:
|
33
|
+
version: 0.12.2
|
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:
|
40
|
+
version: 0.12.2
|
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: '
|
47
|
+
version: '12.3'
|
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: '
|
54
|
+
version: '12.3'
|
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.
|
61
|
+
version: 0.16.1
|
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.
|
68
|
+
version: 0.16.1
|
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:
|
75
|
+
version: 0.1.14
|
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:
|
82
|
+
version: 0.1.14
|
83
83
|
description: Provides common interfaces for validating and abstracting business logic
|
84
84
|
email: rick.winfrey@gmail.com
|
85
85
|
executables: []
|
@@ -149,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
149
|
version: '0'
|
150
150
|
requirements: []
|
151
151
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.
|
152
|
+
rubygems_version: 2.5.2
|
153
153
|
signing_key:
|
154
154
|
specification_version: 4
|
155
155
|
summary: Business logic abstraction
|
@@ -166,4 +166,3 @@ test_files:
|
|
166
166
|
- spec/fixtures/tasks.rb
|
167
167
|
- spec/fixtures/use_cases.rb
|
168
168
|
- spec/spec_helper.rb
|
169
|
-
has_rdoc:
|