objective 0.2.1 → 0.2.2
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/lib/objective/allow.rb +1 -0
- data/lib/objective/deny.rb +1 -0
- data/lib/objective/discard.rb +1 -0
- data/lib/objective/errors/error_array.rb +6 -2
- data/lib/objective/errors/error_atom.rb +1 -0
- data/lib/objective/errors/error_hash.rb +1 -0
- data/lib/objective/errors/error_message_creator.rb +3 -1
- data/lib/objective/errors/validation_error.rb +1 -0
- data/lib/objective/filter.rb +4 -2
- data/lib/objective/filters/any_filter.rb +1 -0
- data/lib/objective/filters/array_filter.rb +1 -0
- data/lib/objective/filters/boolean_filter.rb +1 -0
- data/lib/objective/filters/date_filter.rb +1 -0
- data/lib/objective/filters/decimal_filter.rb +1 -0
- data/lib/objective/filters/duck_filter.rb +1 -0
- data/lib/objective/filters/file_filter.rb +3 -2
- data/lib/objective/filters/float_filter.rb +1 -0
- data/lib/objective/filters/hash_filter.rb +1 -0
- data/lib/objective/filters/integer_filter.rb +1 -0
- data/lib/objective/filters/model_filter.rb +1 -0
- data/lib/objective/filters/root_filter.rb +1 -0
- data/lib/objective/filters/string_filter.rb +1 -0
- data/lib/objective/filters/time_filter.rb +1 -0
- data/lib/objective/none.rb +1 -0
- data/lib/objective/outcome.rb +1 -0
- data/lib/objective/unit.rb +1 -0
- data/lib/objective.rb +1 -0
- data/{spec/default_spec.rb → test/default_test.rb} +2 -1
- data/{spec/inheritance_spec.rb → test/inheritance_test.rb} +2 -1
- data/{spec/errors_spec.rb → test/objective/errors/errors_test.rb} +3 -2
- data/{spec/filters/any_filter_spec.rb → test/objective/filters/any_filter_test.rb} +2 -1
- data/{spec/filters/array_filter_spec.rb → test/objective/filters/array_filter_test.rb} +13 -7
- data/{spec/filters/boolean_filter_spec.rb → test/objective/filters/boolean_filter_test.rb} +3 -2
- data/{spec/filters/date_filter_spec.rb → test/objective/filters/date_filter_test.rb} +2 -1
- data/{spec/filters/decimal_filter_spec.rb → test/objective/filters/decimal_filter_test.rb} +2 -1
- data/{spec/filters/duck_filter_spec.rb → test/objective/filters/duck_filter_test.rb} +2 -1
- data/{spec/filters/file_filter_spec.rb → test/objective/filters/file_filter_test.rb} +2 -1
- data/{spec/filters/float_filter_spec.rb → test/objective/filters/float_filter_test.rb} +2 -1
- data/{spec/filters/hash_filter_spec.rb → test/objective/filters/hash_filter_test.rb} +2 -1
- data/{spec/filters/integer_filter_spec.rb → test/objective/filters/integer_filter_test.rb} +2 -1
- data/{spec/filters/model_filter_spec.rb → test/objective/filters/model_filter_test.rb} +2 -1
- data/{spec/filters/root_filter_spec.rb → test/objective/filters/root_filter_test.rb} +2 -1
- data/{spec/filters/string_filter_spec.rb → test/objective/filters/string_filter_test.rb} +5 -4
- data/{spec/filters/time_filter_spec.rb → test/objective/filters/time_filter_test.rb} +2 -1
- data/{spec → test}/simple_unit.rb +2 -1
- data/{spec/spec_helper.rb → test/test_helper.rb} +1 -0
- data/{spec/unit_spec.rb → test/unit_test.rb} +2 -1
- metadata +52 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7705d3450e744e1f7e7a887a4d834c0be973c61
|
4
|
+
data.tar.gz: 46ecee8f11eb7783768e9e396d968e67172ea6d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1756e5db7deb2324ee0d175379c3346f2b32fcf166330e3972d3f06d1a746ea3ec12596948d440e3ee9a0bca3acb9285c56ac8b07bf1952d5d2ec42b9123e31
|
7
|
+
data.tar.gz: 0c9a485bfdb080d4117b53dcc26799f728d9a869cca0c675844f612e712285028d1cf480f48cbae1de137867d08f54d67a1ab2cd037098787174eb7fec8eea01
|
data/lib/objective/allow.rb
CHANGED
data/lib/objective/deny.rb
CHANGED
data/lib/objective/discard.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Objective
|
3
4
|
module Errors
|
4
5
|
class ErrorArray < Array
|
5
6
|
def codes
|
6
|
-
map { |e| e
|
7
|
+
map { |e| e.try(:codes) }
|
7
8
|
end
|
8
9
|
|
9
10
|
def message(parent_key = nil, _index = nil)
|
10
|
-
each_with_index.map
|
11
|
+
each_with_index.map do |e, i|
|
12
|
+
next if e.nil?
|
13
|
+
e.message(parent_key, i)
|
14
|
+
end
|
11
15
|
end
|
12
16
|
|
13
17
|
def message_list(parent_key = nil, _index = nil)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Objective
|
3
4
|
module Errors
|
4
5
|
class ErrorMessageCreator
|
@@ -36,7 +37,8 @@ module Objective
|
|
36
37
|
end
|
37
38
|
|
38
39
|
def index_ordinal(index)
|
39
|
-
index
|
40
|
+
return if index.nil?
|
41
|
+
(index + 1).ordinalize
|
40
42
|
end
|
41
43
|
end
|
42
44
|
end
|
data/lib/objective/filter.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Objective
|
3
4
|
class Filter
|
4
5
|
def self.inherited(child_class)
|
@@ -12,7 +13,8 @@ module Objective
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def self.filter_name(klass = self)
|
15
|
-
|
16
|
+
filter_match = klass.name.match(/\AObjective::Filters::(.*)Filter\z/)
|
17
|
+
filter_name = filter_match ? filter_match[1].try(:underscore) : nil
|
16
18
|
raise 'filename error in filters folder' unless filter_name
|
17
19
|
filter_name
|
18
20
|
end
|
@@ -100,7 +102,7 @@ module Objective
|
|
100
102
|
def feed_invalid(errors, raw, coerced)
|
101
103
|
case options.invalid
|
102
104
|
when Objective::DENY
|
103
|
-
|
105
|
+
nil
|
104
106
|
when Objective::DISCARD
|
105
107
|
return Objective::DISCARD
|
106
108
|
else
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Objective
|
3
4
|
module Filters
|
4
5
|
class FileFilter < Objective::Filter
|
@@ -18,8 +19,8 @@ module Objective
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def respond_to_all?(coerced)
|
21
|
-
methods = %i
|
22
|
-
methods.concat(%i
|
22
|
+
methods = %i[read size]
|
23
|
+
methods.concat(%i[original_filename content_type]) if options.upload
|
23
24
|
methods.map { |method| coerced.respond_to?(method) }.all?
|
24
25
|
end
|
25
26
|
|
data/lib/objective/none.rb
CHANGED
data/lib/objective/outcome.rb
CHANGED
data/lib/objective/unit.rb
CHANGED
data/lib/objective.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require 'test_helper'
|
3
4
|
|
4
5
|
describe 'Objective - errors' do
|
5
6
|
class GivesErrors
|
6
7
|
include Objective::Unit
|
7
8
|
filter do
|
8
9
|
string :str1
|
9
|
-
string :str2, in: %w
|
10
|
+
string :str2, in: %w[opt1 opt2 opt3]
|
10
11
|
integer :int1, none: ALLOW
|
11
12
|
|
12
13
|
hash :hash1, none: ALLOW do
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require 'test_helper'
|
3
4
|
require 'stringio'
|
4
5
|
|
5
6
|
describe 'Objective::Filters::ArrayFilter' do
|
@@ -132,7 +133,9 @@ describe 'Objective::Filters::ArrayFilter' do
|
|
132
133
|
end
|
133
134
|
|
134
135
|
result = f.feed([{ foo: 'f', bar: 3, baz: true }, { foo: 'f', bar: 3 }, { foo: 'f' }])
|
135
|
-
|
136
|
+
expected_result = [{ 'foo' => 'f', 'bar' => 3, 'baz' => true }, { 'foo' => 'f', 'bar' => 3 }, { 'foo' => 'f' }]
|
137
|
+
|
138
|
+
assert_equal expected_result, result.inputs
|
136
139
|
assert_nil result.errors[0]
|
137
140
|
assert_nil result.errors[1]
|
138
141
|
assert_equal ({ 'bar' => :required }), result.errors[2].codes
|
@@ -145,8 +148,8 @@ describe 'Objective::Filters::ArrayFilter' do
|
|
145
148
|
end
|
146
149
|
end
|
147
150
|
|
148
|
-
result = f.feed([%w
|
149
|
-
assert_equal [%w
|
151
|
+
result = f.feed([%w[h e], ['l'], [], ['lo']])
|
152
|
+
assert_equal [%w[h e], ['l'], [], ['lo']], result.inputs
|
150
153
|
assert_nil result.errors
|
151
154
|
end
|
152
155
|
|
@@ -158,9 +161,12 @@ describe 'Objective::Filters::ArrayFilter' do
|
|
158
161
|
end
|
159
162
|
|
160
163
|
result = f.feed([['h', 'e', {}], ['l'], [], ['']])
|
164
|
+
err_message_empty = '1st Item cannot be empty'
|
165
|
+
err_message_string = '3rd Item must be a string'
|
166
|
+
|
161
167
|
assert_equal [[nil, nil, :string], nil, nil, [:empty]], result.errors.codes
|
162
|
-
assert_equal [[nil, nil,
|
163
|
-
assert_equal [
|
168
|
+
assert_equal [[nil, nil, err_message_string], nil, nil, [err_message_empty]], result.errors.message
|
169
|
+
assert_equal [err_message_string, err_message_empty], result.errors.message_list
|
164
170
|
end
|
165
171
|
|
166
172
|
it 'can discard invalid elements' do
|
@@ -190,6 +196,6 @@ describe 'Objective::Filters::ArrayFilter' do
|
|
190
196
|
|
191
197
|
result = f.feed(['', 1, '2', '', '', '4', 5, ''])
|
192
198
|
assert_nil result.errors
|
193
|
-
assert_equal %w
|
199
|
+
assert_equal %w[1 2 4 5], result.inputs
|
194
200
|
end
|
195
201
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require 'test_helper'
|
3
4
|
|
4
5
|
describe 'Objective::Filters::BooleanFilter' do
|
5
6
|
it 'allows booleans' do
|
@@ -57,7 +58,7 @@ describe 'Objective::Filters::BooleanFilter' do
|
|
57
58
|
|
58
59
|
it 'considers other string to be invalid' do
|
59
60
|
f = Objective::Filters::BooleanFilter.new
|
60
|
-
%w
|
61
|
+
%w[truely 2].each do |str|
|
61
62
|
result = f.feed(str)
|
62
63
|
assert_equal str, result.inputs
|
63
64
|
assert_equal :boolean, result.errors
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require 'test_helper'
|
3
4
|
|
4
5
|
describe 'Objective::Filters::StringFilter' do
|
5
6
|
it 'allows valid strings' do
|
@@ -137,14 +138,14 @@ describe 'Objective::Filters::StringFilter' do
|
|
137
138
|
end
|
138
139
|
|
139
140
|
it 'considers non-inclusion to be invalid' do
|
140
|
-
sf = Objective::Filters::StringFilter.new(:s, in: %w
|
141
|
+
sf = Objective::Filters::StringFilter.new(:s, in: %w[red blue green])
|
141
142
|
result = sf.feed('orange')
|
142
143
|
assert_equal 'orange', result.inputs
|
143
144
|
assert_equal :in, result.errors
|
144
145
|
end
|
145
146
|
|
146
147
|
it 'considers inclusion to be valid' do
|
147
|
-
sf = Objective::Filters::StringFilter.new(:s, in: %w
|
148
|
+
sf = Objective::Filters::StringFilter.new(:s, in: %w[red blue green])
|
148
149
|
result = sf.feed('red')
|
149
150
|
assert_equal 'red', result.inputs
|
150
151
|
assert_nil result.errors
|
@@ -174,7 +175,7 @@ describe 'Objective::Filters::StringFilter' do
|
|
174
175
|
it 'converts bigdecimals to scientific notation strings' do
|
175
176
|
sf = Objective::Filters::StringFilter.new(:s, decimal_format: 'E')
|
176
177
|
result = sf.feed(BigDecimal.new('0.00000123'))
|
177
|
-
|
178
|
+
assert_match(/\A0\.123(e|E)-5\z/, result.inputs)
|
178
179
|
assert_nil result.errors
|
179
180
|
end
|
180
181
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class SimpleUnit
|
3
4
|
include Objective::Unit
|
4
5
|
|
@@ -9,7 +10,7 @@ class SimpleUnit
|
|
9
10
|
end
|
10
11
|
|
11
12
|
def validate
|
12
|
-
return if email
|
13
|
+
return if email.include?('@')
|
13
14
|
add_error(:email, :invalid, 'Email must contain @')
|
14
15
|
end
|
15
16
|
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: objective
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dallin Crane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.1.0
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
22
|
+
version: '6.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 4.1.0
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
32
|
+
version: '6.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: byebug
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,26 +105,26 @@ files:
|
|
99
105
|
- lib/objective/none.rb
|
100
106
|
- lib/objective/outcome.rb
|
101
107
|
- lib/objective/unit.rb
|
102
|
-
-
|
103
|
-
-
|
104
|
-
-
|
105
|
-
-
|
106
|
-
-
|
107
|
-
-
|
108
|
-
-
|
109
|
-
-
|
110
|
-
-
|
111
|
-
-
|
112
|
-
-
|
113
|
-
-
|
114
|
-
-
|
115
|
-
-
|
116
|
-
-
|
117
|
-
-
|
118
|
-
-
|
119
|
-
-
|
120
|
-
-
|
121
|
-
-
|
108
|
+
- test/default_test.rb
|
109
|
+
- test/inheritance_test.rb
|
110
|
+
- test/objective/errors/errors_test.rb
|
111
|
+
- test/objective/filters/any_filter_test.rb
|
112
|
+
- test/objective/filters/array_filter_test.rb
|
113
|
+
- test/objective/filters/boolean_filter_test.rb
|
114
|
+
- test/objective/filters/date_filter_test.rb
|
115
|
+
- test/objective/filters/decimal_filter_test.rb
|
116
|
+
- test/objective/filters/duck_filter_test.rb
|
117
|
+
- test/objective/filters/file_filter_test.rb
|
118
|
+
- test/objective/filters/float_filter_test.rb
|
119
|
+
- test/objective/filters/hash_filter_test.rb
|
120
|
+
- test/objective/filters/integer_filter_test.rb
|
121
|
+
- test/objective/filters/model_filter_test.rb
|
122
|
+
- test/objective/filters/root_filter_test.rb
|
123
|
+
- test/objective/filters/string_filter_test.rb
|
124
|
+
- test/objective/filters/time_filter_test.rb
|
125
|
+
- test/simple_unit.rb
|
126
|
+
- test/test_helper.rb
|
127
|
+
- test/unit_test.rb
|
122
128
|
homepage: https://github.com/dallincrane/objective
|
123
129
|
licenses:
|
124
130
|
- MIT
|
@@ -144,23 +150,23 @@ signing_key:
|
|
144
150
|
specification_version: 4
|
145
151
|
summary: Business Logic Units
|
146
152
|
test_files:
|
147
|
-
-
|
148
|
-
-
|
149
|
-
-
|
150
|
-
-
|
151
|
-
-
|
152
|
-
-
|
153
|
-
-
|
154
|
-
-
|
155
|
-
-
|
156
|
-
-
|
157
|
-
-
|
158
|
-
-
|
159
|
-
-
|
160
|
-
-
|
161
|
-
-
|
162
|
-
-
|
163
|
-
-
|
164
|
-
-
|
165
|
-
-
|
166
|
-
-
|
153
|
+
- test/default_test.rb
|
154
|
+
- test/inheritance_test.rb
|
155
|
+
- test/objective/errors/errors_test.rb
|
156
|
+
- test/objective/filters/any_filter_test.rb
|
157
|
+
- test/objective/filters/array_filter_test.rb
|
158
|
+
- test/objective/filters/boolean_filter_test.rb
|
159
|
+
- test/objective/filters/date_filter_test.rb
|
160
|
+
- test/objective/filters/decimal_filter_test.rb
|
161
|
+
- test/objective/filters/duck_filter_test.rb
|
162
|
+
- test/objective/filters/file_filter_test.rb
|
163
|
+
- test/objective/filters/float_filter_test.rb
|
164
|
+
- test/objective/filters/hash_filter_test.rb
|
165
|
+
- test/objective/filters/integer_filter_test.rb
|
166
|
+
- test/objective/filters/model_filter_test.rb
|
167
|
+
- test/objective/filters/root_filter_test.rb
|
168
|
+
- test/objective/filters/string_filter_test.rb
|
169
|
+
- test/objective/filters/time_filter_test.rb
|
170
|
+
- test/simple_unit.rb
|
171
|
+
- test/test_helper.rb
|
172
|
+
- test/unit_test.rb
|