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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 19b4824f31ca1ffe3d22502fce6ce674f5fffc37
4
- data.tar.gz: 16d5f9e7a00b95f6e2678c5fd2a0d68821161374
3
+ metadata.gz: 0f2a836061c6a36975110217dd7b4ae21bd482b9
4
+ data.tar.gz: ca43f16e23c1ae5e8a0af96b43d788ddf5457bf2
5
5
  SHA512:
6
- metadata.gz: 23f4be5534c06e0864af1a61c08595b2410ddcbc19f3d877691b9183e1675a290402daa18f7e9635e72464ab84fab81c77ae43f43e69f7fb908a64b1e7590c2e
7
- data.tar.gz: 14b9bcd6c0e2a089f944d78e469db97c2d3034d76a63b4e2d4aa1ca24dba006014c41fadc300c542119d5b35162f887097ff7943a862a70e5ae73397ff1d0909
6
+ metadata.gz: ced0fc7c9682743598574384d7b7923e40aef67805be0836f2ed903dc022701f7497024a1e7baf2be3be7c6a56254a90db8ef2b0639dc9e731039abe31097ff1
7
+ data.tar.gz: 7c7760cfe6e28013f5caf7abf1c9040747130127731c93e3250fd025f122f335e38ee7c984d5023417e1a3dbcd82f5797540784e2bebf1924107759e4d786db2
@@ -1,44 +1,42 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- action_logic (0.2.7)
4
+ action_logic (0.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- codecov (0.1.4)
9
+ codecov (0.1.14)
10
10
  json
11
11
  simplecov
12
12
  url
13
- coderay (1.1.0)
14
- diff-lcs (1.2.5)
15
- docile (1.1.5)
16
- json (1.8.3)
17
- method_source (0.8.2)
18
- pry (0.10.3)
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.8.1)
21
- slop (~> 3.4)
22
- rake (10.4.2)
23
- rspec (3.3.0)
24
- rspec-core (~> 3.3.0)
25
- rspec-expectations (~> 3.3.0)
26
- rspec-mocks (~> 3.3.0)
27
- rspec-core (3.3.2)
28
- rspec-support (~> 3.3.0)
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.3.0)
32
- rspec-mocks (3.3.2)
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.3.0)
35
- rspec-support (3.3.0)
36
- simplecov (0.10.0)
37
- docile (~> 1.1.0)
38
- json (~> 1.8)
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.0)
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.10)
51
- rake (~> 10)
52
- rspec (~> 3.3)
53
- simplecov (~> 0.10.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.10.6
54
+ 1.17.2
data/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  [![Gem Version](https://badge.fury.io/rb/action_logic.svg)](https://badge.fury.io/rb/action_logic)
5
5
  [![Code Climate](https://codeclimate.com/github/rewinfrey/action_logic/badges/gpa.svg)](https://codeclimate.com/github/rewinfrey/action_logic)
6
6
  [![coverage](https://codecov.io/github/rewinfrey/ActionLogic/coverage.svg?branch=master)](https://codecov.io/github/rewinfrey/ActionLogic?branch=master)
7
- [![Dependency Status](https://gemnasium.com/rewinfrey/action_logic.svg)](https://gemnasium.com/rewinfrey/action_logic)
8
7
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)
9
8
 
10
9
  ### Introduction
@@ -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 = '2016-01-18'
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.3")
21
- s.add_development_dependency("pry", "~> 0.10")
22
- s.add_development_dependency("rake", "~> 10")
23
- s.add_development_dependency("simplecov", "~> 0.10.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}"
@@ -1,3 +1,3 @@
1
1
  module ActionLogic
2
- VERSION = '0.2.8'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -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
@@ -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.2.8
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: 2016-01-18 00:00:00.000000000 Z
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.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.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: '0.10'
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: '0.10'
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: '10'
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: '10'
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.10.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.10.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: '0.1'
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: '0.1'
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.4.5.1
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: