eac_rails_utils 0.11.6 → 0.12.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/app/helpers/eac_rails_utils/common_form_helper/form_builder.rb +3 -3
- data/lib/eac_rails_utils/models/tableless.rb +10 -0
- data/lib/eac_rails_utils/models/validations.rb +71 -0
- data/lib/eac_rails_utils/version.rb +1 -1
- data/test/dummy/app/models/user.rb +0 -4
- metadata +5 -15
- data/lib/eac_rails_utils/models/attribute_required.rb +0 -43
- data/test/lib/eac_rails_utils/models/attribute_required_test.rb +0 -42
- data/test/lib/eac_rails_utils/models/tableless_test.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00fd5aed91f9c11d3b6ab34cd532aff0c5ed10da72ba420488a060f93bbd8540
|
4
|
+
data.tar.gz: f66267fb4600635f05bcb15475fe5186c31663e9db4a00494add6e59dc603578
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b6aa1e4febf6826c760daf62ad9c280b3b708beb00800644cffdd88021acdd69ef41262f5ff395616eefa63c240e214a0ef3eb1f4028a1fab5f5f5cfa382acd
|
7
|
+
data.tar.gz: 5f2a4f27e090663895222931a57bdb63eae96a4b679a95a544a47699e7c0a5e733c47968cf13fa3f628c3c90381d3796a8d54989b3f7f38a674cd94454f7936a
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'eac_ruby_utils/require_sub'
|
4
|
-
require 'eac_rails_utils/models/
|
4
|
+
require 'eac_rails_utils/models/validations'
|
5
5
|
|
6
6
|
module EacRailsUtils
|
7
7
|
module CommonFormHelper
|
@@ -93,8 +93,8 @@ module EacRailsUtils
|
|
93
93
|
|
94
94
|
def field_label(field_name, label, required)
|
95
95
|
if required.nil?
|
96
|
-
required = ::EacRailsUtils::Models::
|
97
|
-
.
|
96
|
+
required = ::EacRailsUtils::Models::Validations
|
97
|
+
.column_required?(model_instance, field_name)
|
98
98
|
end
|
99
99
|
@form.label(field_name, label, class: required ? 'required' : 'optional')
|
100
100
|
end
|
@@ -10,6 +10,16 @@ module EacRailsUtils
|
|
10
10
|
include Virtus.model
|
11
11
|
include ActiveModel::Associations
|
12
12
|
|
13
|
+
class << self
|
14
|
+
def columns
|
15
|
+
attribute_set.each.to_a
|
16
|
+
end
|
17
|
+
|
18
|
+
def columns_names
|
19
|
+
columns.map(&:name)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
13
23
|
def initialize(values = {})
|
14
24
|
super(build_attributes(values))
|
15
25
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EacRailsUtils
|
6
|
+
module Models
|
7
|
+
module Validations
|
8
|
+
common_concern
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def column_errors(model_or_record, column, value)
|
12
|
+
model = model_class_or_record_to_model(model_or_record)
|
13
|
+
record = model.new
|
14
|
+
model.validators_on(column).each do |validator|
|
15
|
+
next if validator.options[:allow_blank] && value.blank?
|
16
|
+
next if validator.options[:allow_nil] && value.nil?
|
17
|
+
|
18
|
+
validator.validate_each(record, column, value)
|
19
|
+
end
|
20
|
+
record.errors
|
21
|
+
end
|
22
|
+
|
23
|
+
def column_required?(model_or_record, column)
|
24
|
+
!column_valid?(model_or_record, column, nil)
|
25
|
+
end
|
26
|
+
|
27
|
+
def column_valid?(model_or_record, column, value)
|
28
|
+
column_errors(model_or_record, column, value).empty?
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def model_class_or_record_to_model(model_class_or_record)
|
34
|
+
model_class_or_record.is_a?(::Class) ? model_class_or_record : model_class_or_record.class
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
module ClassMethods
|
39
|
+
def column_errors(column, value)
|
40
|
+
::EacRailsUtils::Models::Validations.column_errors(self, column, value)
|
41
|
+
end
|
42
|
+
|
43
|
+
def column_required?(column)
|
44
|
+
::EacRailsUtils::Models::Validations.column_required?(self, column)
|
45
|
+
end
|
46
|
+
|
47
|
+
def column_valid?(attribute, value)
|
48
|
+
column_errors(attribute, value).empty?
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def model_class_or_record_to_model(model_class_or_record)
|
54
|
+
model_class_or_record.is_a?(::Class) ? model_class_or_record : model_class_or_record.class
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def attribute_errors(attribute)
|
59
|
+
self.class.column_errors(attribute, send(attribute))
|
60
|
+
end
|
61
|
+
|
62
|
+
def attribute_required?(attribute)
|
63
|
+
self.class.column_required?(attribute)
|
64
|
+
end
|
65
|
+
|
66
|
+
def attribute_valid?(attribute)
|
67
|
+
attribute_errors(attribute).empty?
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_rails_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- E.A.C.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel-associations
|
@@ -44,20 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: 0.33.1
|
47
|
+
version: '0.49'
|
51
48
|
type: :runtime
|
52
49
|
prerelease: false
|
53
50
|
version_requirements: !ruby/object:Gem::Requirement
|
54
51
|
requirements:
|
55
52
|
- - "~>"
|
56
53
|
- !ruby/object:Gem::Version
|
57
|
-
version: '0.
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 0.33.1
|
54
|
+
version: '0.49'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: htmlbeautifier
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,11 +200,11 @@ files:
|
|
206
200
|
- lib/eac_rails_utils/engine.rb
|
207
201
|
- lib/eac_rails_utils/htmlbeautifier.rb
|
208
202
|
- lib/eac_rails_utils/models.rb
|
209
|
-
- lib/eac_rails_utils/models/attribute_required.rb
|
210
203
|
- lib/eac_rails_utils/models/fetch_errors.rb
|
211
204
|
- lib/eac_rails_utils/models/inequality_queries.rb
|
212
205
|
- lib/eac_rails_utils/models/tableless.rb
|
213
206
|
- lib/eac_rails_utils/models/test_utils.rb
|
207
|
+
- lib/eac_rails_utils/models/validations.rb
|
214
208
|
- lib/eac_rails_utils/patches.rb
|
215
209
|
- lib/eac_rails_utils/patches/action_controller_base.rb
|
216
210
|
- lib/eac_rails_utils/patches/active_model_associations.rb
|
@@ -235,9 +229,7 @@ files:
|
|
235
229
|
- test/dummy/db/schema.rb
|
236
230
|
- test/helpers/eac_rails_utils/data_table_test_helper_test.rb
|
237
231
|
- test/helpers/eac_rails_utils/formatter_helper_test.rb
|
238
|
-
- test/lib/eac_rails_utils/models/attribute_required_test.rb
|
239
232
|
- test/lib/eac_rails_utils/models/fetch_errors_test.rb
|
240
|
-
- test/lib/eac_rails_utils/models/tableless_test.rb
|
241
233
|
- test/test_helper.rb
|
242
234
|
- test/validators/cpf_validator_test.rb
|
243
235
|
homepage:
|
@@ -285,6 +277,4 @@ test_files:
|
|
285
277
|
- test/validators/cpf_validator_test.rb
|
286
278
|
- test/helpers/eac_rails_utils/data_table_test_helper_test.rb
|
287
279
|
- test/helpers/eac_rails_utils/formatter_helper_test.rb
|
288
|
-
- test/lib/eac_rails_utils/models/attribute_required_test.rb
|
289
|
-
- test/lib/eac_rails_utils/models/tableless_test.rb
|
290
280
|
- test/lib/eac_rails_utils/models/fetch_errors_test.rb
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'active_support/concern'
|
4
|
-
|
5
|
-
module EacRailsUtils
|
6
|
-
module Models
|
7
|
-
module AttributeRequired
|
8
|
-
extend ::ActiveSupport::Concern
|
9
|
-
|
10
|
-
class << self
|
11
|
-
def required?(model_class_or_record, attribute)
|
12
|
-
model = model_class_or_record_to_model(model_class_or_record)
|
13
|
-
record = model.new
|
14
|
-
record.validate
|
15
|
-
record.errors.key?(attribute.to_sym)
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def model_class_or_record_to_model(model_class_or_record)
|
21
|
-
model_class_or_record.is_a?(::Class) ? model_class_or_record : model_class_or_record.class
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
included do
|
26
|
-
extend ClassMethods
|
27
|
-
include InstanceMethods
|
28
|
-
end
|
29
|
-
|
30
|
-
module ClassMethods
|
31
|
-
def column_required?(column)
|
32
|
-
::EacRailsUtils::Models::AttributeRequired.required?(self, column)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
module InstanceMethods
|
37
|
-
def attribute_required?(column)
|
38
|
-
self.class.column_required?(column)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'test_helper'
|
4
|
-
|
5
|
-
module EacRailsUtils
|
6
|
-
module Patches
|
7
|
-
class ModelAttributeRequiredTest < ActiveSupport::TestCase
|
8
|
-
setup do
|
9
|
-
reset_test_database
|
10
|
-
end
|
11
|
-
|
12
|
-
test 'column with presence validator should be required' do
|
13
|
-
assert User.column_required?(:password)
|
14
|
-
end
|
15
|
-
|
16
|
-
test 'column with format validator should be required' do
|
17
|
-
assert User.column_required?(:email)
|
18
|
-
end
|
19
|
-
|
20
|
-
test 'column without validators should be optional' do
|
21
|
-
assert_not User.column_required?(:name)
|
22
|
-
end
|
23
|
-
|
24
|
-
test 'association with presence validator should be required' do
|
25
|
-
assert User.column_required?(:job)
|
26
|
-
end
|
27
|
-
|
28
|
-
test 'required column in active model' do
|
29
|
-
assert ActiveModelStub.column_required?(:name), 'name is required'
|
30
|
-
assert_not ActiveModelStub.column_required?(:age), 'age is optional'
|
31
|
-
end
|
32
|
-
|
33
|
-
class ActiveModelStub
|
34
|
-
include ActiveModel::Model
|
35
|
-
include ::EacRailsUtils::Models::AttributeRequired
|
36
|
-
|
37
|
-
attr_accessor :name, :age
|
38
|
-
validates :name, presence: true
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'test_helper'
|
4
|
-
|
5
|
-
module EacRailsUtils
|
6
|
-
module Models
|
7
|
-
class TablelessTest < ActiveSupport::TestCase
|
8
|
-
class Stub < ::EacRailsUtils::Models::Tableless
|
9
|
-
attribute :tempo, DateTime
|
10
|
-
end
|
11
|
-
|
12
|
-
test 'date time array values' do
|
13
|
-
stub = Stub.new('tempo(1i)' => '9', 'tempo(2i)' => '10', 'tempo(3i)' => '11',
|
14
|
-
'tempo(4i)' => '12', 'tempo(5i)' => '13', 'tempo(6i)' => '14')
|
15
|
-
assert stub.tempo.is_a?(DateTime), "Class: |#{stub.tempo.class}|, Value: |#{stub.tempo}|"
|
16
|
-
assert_equal 9, stub.tempo.year, 'Year'
|
17
|
-
assert_equal 10, stub.tempo.month, 'Month'
|
18
|
-
assert_equal 11, stub.tempo.day, 'Day'
|
19
|
-
assert_equal 12, stub.tempo.hour, 'Hour'
|
20
|
-
assert_equal 13, stub.tempo.minute, 'Minute'
|
21
|
-
assert_equal 14, stub.tempo.second, 'Second'
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|