normalizy 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/README.md +25 -55
- data/lib/normalizy/config.rb +3 -7
- data/lib/normalizy/extensions.rb +45 -49
- data/lib/normalizy/rspec/matcher.rb +14 -2
- data/lib/normalizy/version.rb +1 -1
- data/lib/normalizy.rb +1 -1
- data/spec/normalizy/config/alias_spec.rb +14 -42
- data/spec/normalizy/extensions/filters/date_spec.rb +4 -14
- data/spec/normalizy/extensions/filters/money_spec.rb +9 -19
- data/spec/normalizy/extensions/filters/number_spec.rb +2 -6
- data/spec/normalizy/extensions/filters/percent_spec.rb +9 -19
- data/spec/normalizy/extensions/filters/strip_spec.rb +8 -8
- data/spec/normalizy/extensions/model_spec.rb +107 -0
- data/spec/normalizy/extensions/normalizy_rules_spec.rb +132 -180
- data/spec/normalizy/filters/date_spec.rb +9 -9
- data/spec/normalizy/filters/money_spec.rb +42 -37
- data/spec/normalizy/rspec/matcher/description_spec.rb +8 -7
- data/spec/normalizy/rspec/matcher/failure_message_spec.rb +25 -47
- data/spec/normalizy/rspec/matcher/failure_message_when_negated_spec.rb +13 -15
- data/spec/normalizy/rspec/matcher/from_spec.rb +4 -3
- data/spec/normalizy/rspec/matcher/matches_spec.rb +117 -0
- data/spec/normalizy/rspec/matcher/to_spec.rb +4 -3
- data/spec/support/db/schema.rb +67 -9
- data/spec/support/filters/{blacklist_1.rb → blacklist.rb} +1 -1
- data/spec/support/filters/{blacklist_block.rb → block.rb} +1 -1
- data/spec/support/filters/info.rb +11 -0
- data/spec/support/models/alias.rb +7 -0
- data/spec/support/models/match.rb +9 -0
- data/spec/support/models/model.rb +28 -0
- data/spec/support/models/model_date.rb +7 -0
- data/spec/support/models/model_money.rb +10 -0
- data/spec/support/models/model_number.rb +5 -0
- data/spec/support/models/model_percent.rb +10 -0
- data/spec/support/models/model_strip.rb +8 -0
- data/spec/support/models/{clean.rb → rule.rb} +1 -1
- metadata +30 -20
- data/spec/normalizy/config/normalizy_raws_spec.rb +0 -9
- data/spec/normalizy/extensions/apply_normalizy_spec.rb +0 -171
- data/spec/normalizy/rspec/matcher/matchers_spec.rb +0 -97
- data/spec/normalizy/rspec/normalizy_spec.rb +0 -8
- data/spec/support/filters/blacklist_2.rb +0 -13
- data/spec/support/models/user.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d91babea23ed3c9c18a9aa9629da1139d1f12c55
|
4
|
+
data.tar.gz: 7ab05fe0149743bf72ea4c50b8095e029a11158d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb83724af9af4b195de644457cf7928ea71b218a77ed15d2ae5f822fffa5065531f8cb5a6d65b28a38048d1d238a43bd89894639634729c2dbff19d01f9c93a7
|
7
|
+
data.tar.gz: 5852ecb8103d2fa5849a61919216c297a493d500d7f41d00059c20abb62996c8c398788ccf1ce637af299b0878775846a970e346471a4c04adcf6b215ed104c4
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## v1.0.0
|
2
|
+
|
3
|
+
- Changes:
|
4
|
+
- `raw` options was dropped since `prepend` already works before type cast;
|
5
|
+
- Multiple lines of `normalizy` will be evaluated from the bottom to top.
|
6
|
+
|
7
|
+
- Features:
|
8
|
+
- `alias` configuration now accepts options;
|
9
|
+
|
10
|
+
- Fixes:
|
11
|
+
- Multiple filters were not running together.
|
12
|
+
|
1
13
|
## v0.2.0
|
2
14
|
|
3
15
|
- Changes:
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/wbotelhos/normalizy.svg)](https://travis-ci.org/wbotelhos/normalizy)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/normalizy.svg)](https://badge.fury.io/rb/normalizy)
|
5
|
+
[![Gratipay](https://img.shields.io/gratipay/user/wbotelhos.svg)](https://gratipay.com/normalizy)
|
5
6
|
|
6
7
|
Attribute normalizer for ActiveRecord.
|
7
8
|
|
@@ -112,8 +113,6 @@ Tue, 23 Oct 1984 00:00:00 EDT -04:00
|
|
112
113
|
# Tue, 23 Oct 1984 11:59:59 EDT -04:00
|
113
114
|
```
|
114
115
|
|
115
|
-
By default, `number` works with value before [Type Cast](#type-cast).
|
116
|
-
|
117
116
|
### Money
|
118
117
|
|
119
118
|
Transform a value to money format.
|
@@ -219,8 +218,6 @@ normalizy :amount, with: money: { cast: :to_f, type: :cents }
|
|
219
218
|
# 4200.0
|
220
219
|
```
|
221
220
|
|
222
|
-
By default, `money` works with value before [Type Cast](#type-cast).
|
223
|
-
|
224
221
|
### Number
|
225
222
|
|
226
223
|
```ruby
|
@@ -239,8 +236,6 @@ normalizy :age, with: number: { cast: :to_i }
|
|
239
236
|
# 32
|
240
237
|
```
|
241
238
|
|
242
|
-
By default, `number` works with value before [Type Cast](#type-cast).
|
243
|
-
|
244
239
|
### Percent
|
245
240
|
|
246
241
|
Transform a value to percent format.
|
@@ -346,8 +341,6 @@ normalizy :amount, with: percent: { cast: :to_f, type: :integer }
|
|
346
341
|
# 4200.0
|
347
342
|
```
|
348
343
|
|
349
|
-
By default, `percent` works with value before [Type Cast](#type-cast).
|
350
|
-
|
351
344
|
### Strip
|
352
345
|
|
353
346
|
Options:
|
@@ -392,25 +385,32 @@ normalizy :name, with: %i[squish titleize]
|
|
392
385
|
|
393
386
|
## Multiple Attributes
|
394
387
|
|
395
|
-
You can normalize more than one attribute at once too, with one or
|
388
|
+
You can normalize more than one attribute at once too, with one or multiple filters:
|
396
389
|
|
397
390
|
```ruby
|
398
391
|
normalizy :email, :username, with: :downcase
|
399
392
|
```
|
400
393
|
|
401
|
-
Of course you can declare
|
402
|
-
It is possible to make sequential normalizy calls
|
394
|
+
Of course you can declare multiple attribute and multiple filters, either.
|
395
|
+
It is possible to make sequential normalizy calls, but *take care*!
|
396
|
+
Since we use `prepend` module the last line will run first then others:
|
403
397
|
|
404
398
|
```ruby
|
405
|
-
normalizy :
|
406
|
-
normalizy :
|
399
|
+
normalizy :username, with: :downcase
|
400
|
+
normalizy :username, with: :titleize
|
401
|
+
|
402
|
+
'BoteLho'
|
403
|
+
# 'bote lho'
|
407
404
|
```
|
408
405
|
|
409
|
-
|
406
|
+
As you can see, `titleize` runs first then `downcase`.
|
407
|
+
Each line will be evaluated from the *bottom* to the *top*.
|
408
|
+
If it is hard to you accept, use [Muiltiple Filters](#multiple-filters)
|
410
409
|
|
411
410
|
## Default Filters
|
412
411
|
|
413
|
-
You can configure some default filters to be runned.
|
412
|
+
You can configure some default filters to be runned.
|
413
|
+
Edit initializer at `config/initializers/normalizy.rb`:
|
414
414
|
|
415
415
|
```ruby
|
416
416
|
Normalizy.configure do |config|
|
@@ -418,7 +418,7 @@ Normalizy.configure do |config|
|
|
418
418
|
end
|
419
419
|
```
|
420
420
|
|
421
|
-
Now, all normalization will include squish
|
421
|
+
Now, all normalization will include `squish`, even when no rule is declared.
|
422
422
|
|
423
423
|
```ruby
|
424
424
|
normalizy :name
|
@@ -580,37 +580,6 @@ Normalizy.configure do |config|
|
|
580
580
|
end
|
581
581
|
```
|
582
582
|
|
583
|
-
## Type Cast
|
584
|
-
|
585
|
-
An input field with `= 42` value when sent to model with a field as `integer` type,
|
586
|
-
will be converted to `0`, since the type does not match. But you want to use the value before Rails cast the type.
|
587
|
-
|
588
|
-
To receive the value before type cast, just pass a `raw` options as `true`:
|
589
|
-
|
590
|
-
```ruby
|
591
|
-
normalizy :amount, with: :number, raw: true
|
592
|
-
|
593
|
-
'= 42'
|
594
|
-
# 42
|
595
|
-
```
|
596
|
-
|
597
|
-
To avoid repeat the `raw: true` when you have multiple uses, you can register a filter:
|
598
|
-
|
599
|
-
```ruby
|
600
|
-
Normalizy.configure do |config|
|
601
|
-
config.add :raw_number, ->(input) { input.gsub(/\D/, '') }, raw: true
|
602
|
-
end
|
603
|
-
```
|
604
|
-
|
605
|
-
And use it in short version:
|
606
|
-
|
607
|
-
```ruby
|
608
|
-
normalizy :amount, with: :raw_number
|
609
|
-
|
610
|
-
'= 42'
|
611
|
-
# 42
|
612
|
-
```
|
613
|
-
|
614
583
|
## Alias
|
615
584
|
|
616
585
|
Sometimes you want to give a better name to your filter, just to keep the things semantic.
|
@@ -623,13 +592,6 @@ end
|
|
623
592
|
```
|
624
593
|
|
625
594
|
Now, `age` will delegate to `number` filter.
|
626
|
-
Since we already know the need of `raw` options, we can declare it here:
|
627
|
-
|
628
|
-
```ruby
|
629
|
-
Normalizy.configure do |config|
|
630
|
-
config.alias :age, :number, raw: true
|
631
|
-
end
|
632
|
-
```
|
633
595
|
|
634
596
|
And now, the aliased filter will work fine:
|
635
597
|
|
@@ -648,6 +610,14 @@ Normalizy.configure do |config|
|
|
648
610
|
end
|
649
611
|
```
|
650
612
|
|
613
|
+
Alias accepts options parameters too:
|
614
|
+
|
615
|
+
```ruby
|
616
|
+
Normalizy.configure do |config|
|
617
|
+
config.alias :left_trim, trim: { side: :left }
|
618
|
+
end
|
619
|
+
```
|
620
|
+
|
651
621
|
## RSpec
|
652
622
|
|
653
623
|
If you use [RSpec](http://rspec.info), we did built-in matchers for you.
|
@@ -685,4 +655,4 @@ it { is_expected.to normalizy(:email).with(trim: { side: :left }) }
|
|
685
655
|
|
686
656
|
## Love it!
|
687
657
|
|
688
|
-
Via [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X8HEP2878NDEG&item_name=normalizy) or [Gratipay](https://gratipay.com
|
658
|
+
Via [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X8HEP2878NDEG&item_name=normalizy) or [Gratipay](https://gratipay.com/normalizy). Thanks! (:
|
data/lib/normalizy/config.rb
CHANGED
@@ -5,19 +5,16 @@ require 'normalizy/filters'
|
|
5
5
|
module Normalizy
|
6
6
|
class Config
|
7
7
|
attr_accessor :default_filters
|
8
|
-
attr_reader :filters, :normalizy_aliases
|
8
|
+
attr_reader :filters, :normalizy_aliases
|
9
9
|
|
10
|
-
def add(name, value
|
10
|
+
def add(name, value)
|
11
11
|
@filters[name] = value
|
12
12
|
|
13
|
-
@normalizy_raws << name if raw
|
14
|
-
|
15
13
|
self
|
16
14
|
end
|
17
15
|
|
18
|
-
def alias(name, to
|
16
|
+
def alias(name, to)
|
19
17
|
@normalizy_aliases[name] = to
|
20
|
-
@normalizy_raws << name if raw
|
21
18
|
|
22
19
|
self
|
23
20
|
end
|
@@ -25,7 +22,6 @@ module Normalizy
|
|
25
22
|
def initialize
|
26
23
|
@default_filters = {}
|
27
24
|
@normalizy_aliases = {}
|
28
|
-
@normalizy_raws = %i[date money number percent]
|
29
25
|
|
30
26
|
@filters = {
|
31
27
|
date: Normalizy::Filters::Date,
|
data/lib/normalizy/extensions.rb
CHANGED
@@ -5,27 +5,25 @@ module Normalizy
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
before_validation :apply_normalizy, if: -> {
|
9
|
-
self.class.respond_to? :normalizy
|
10
|
-
}
|
11
|
-
|
12
8
|
private
|
13
9
|
|
14
|
-
def
|
15
|
-
|
16
|
-
|
17
|
-
|
10
|
+
def extract_filter(rule, rule_options, attribute, filters: Normalizy.config.filters)
|
11
|
+
options = rule_options.merge(attribute: attribute, object: self)
|
12
|
+
|
13
|
+
return [filters[rule] || rule, options] unless rule.is_a?(Hash)
|
14
|
+
|
15
|
+
filter = filters[rule.keys.first] || rule
|
16
|
+
options = (rule.values.first || {}).merge(options)
|
17
|
+
|
18
|
+
[filter, options]
|
18
19
|
end
|
19
20
|
|
20
|
-
def
|
21
|
+
def extract_rule(rule)
|
21
22
|
if rule.is_a?(Hash)
|
22
|
-
|
23
|
-
options = rule.values.first
|
23
|
+
[rule.keys.first, rule.values.first]
|
24
24
|
else
|
25
|
-
|
25
|
+
[rule, {}]
|
26
26
|
end
|
27
|
-
|
28
|
-
[result || rule, options || {}]
|
29
27
|
end
|
30
28
|
|
31
29
|
def extract_value(value, filter, options, block)
|
@@ -36,7 +34,11 @@ module Normalizy
|
|
36
34
|
filter.call value, &block
|
37
35
|
end
|
38
36
|
elsif respond_to?(filter)
|
39
|
-
|
37
|
+
if method(filter).arity == -2
|
38
|
+
send filter, value, options, &block
|
39
|
+
else
|
40
|
+
send filter, value, &block
|
41
|
+
end
|
40
42
|
elsif value.respond_to?(filter)
|
41
43
|
value.send filter, &block
|
42
44
|
else
|
@@ -44,49 +46,27 @@ module Normalizy
|
|
44
46
|
end
|
45
47
|
end
|
46
48
|
|
47
|
-
def normalizy!(attribute:,
|
49
|
+
def normalizy!(attribute:, block:, options:, rules:, value:)
|
50
|
+
rules ||= Normalizy.config.default_filters
|
51
|
+
|
48
52
|
return if rules.blank? && block.blank?
|
49
53
|
|
50
|
-
|
51
|
-
value = nil
|
54
|
+
result = value
|
52
55
|
|
53
56
|
[rules].flatten.compact.each do |rule|
|
54
|
-
|
55
|
-
|
56
|
-
result_rules.flatten.compact.each do |result_rule|
|
57
|
-
filter, filter_options = extract_filter(result_rule)
|
58
|
-
|
59
|
-
if filter.respond_to?(:name)
|
60
|
-
rule_name = filter.name.tableize.split('/').last.singularize.to_sym
|
61
|
-
end
|
57
|
+
rule_name, rule_options = extract_rule(rule)
|
62
58
|
|
63
|
-
|
64
|
-
|
65
|
-
|
59
|
+
unalias_for(rule_name).each do |rule|
|
60
|
+
filter, filter_options = extract_filter(rule, rule_options, attribute)
|
61
|
+
result = extract_value(result, filter, filter_options, block)
|
66
62
|
end
|
67
63
|
end
|
68
64
|
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
def original_value(attribute, rule, options)
|
73
|
-
if raw? attribute, rule, options
|
74
|
-
send "#{attribute}_before_type_cast"
|
75
|
-
else
|
76
|
-
send attribute
|
77
|
-
end
|
65
|
+
result
|
78
66
|
end
|
79
67
|
|
80
|
-
def
|
81
|
-
|
82
|
-
|
83
|
-
options[:raw] || Normalizy.config.normalizy_raws.include?(rule)
|
84
|
-
end
|
85
|
-
|
86
|
-
def write(attribute, value)
|
87
|
-
write_attribute attribute, value
|
88
|
-
rescue ActiveModel::MissingAttributeError
|
89
|
-
send "#{attribute}=", value
|
68
|
+
def unalias_for(rule, aliases: Normalizy.config.normalizy_aliases)
|
69
|
+
[aliases.key?(rule) ? aliases[rule] : rule].flatten.compact
|
90
70
|
end
|
91
71
|
end
|
92
72
|
|
@@ -95,7 +75,7 @@ module Normalizy
|
|
95
75
|
|
96
76
|
def normalizy(*args, &block)
|
97
77
|
options = args.extract_options!
|
98
|
-
rules = options[:with]
|
78
|
+
rules = options[:with]
|
99
79
|
|
100
80
|
self.normalizy_rules ||= {}
|
101
81
|
|
@@ -103,6 +83,22 @@ module Normalizy
|
|
103
83
|
normalizy_rules[field] ||= []
|
104
84
|
normalizy_rules[field] << { block: block, options: options.except(:with), rules: rules }
|
105
85
|
end
|
86
|
+
|
87
|
+
prepend Module.new {
|
88
|
+
args.each do |attribute|
|
89
|
+
define_method :"#{attribute}=" do |value|
|
90
|
+
result = normalizy!(
|
91
|
+
attribute: attribute,
|
92
|
+
block: block,
|
93
|
+
options: options.except(:with),
|
94
|
+
rules: rules,
|
95
|
+
value: value
|
96
|
+
)
|
97
|
+
|
98
|
+
super result
|
99
|
+
end
|
100
|
+
end
|
101
|
+
}
|
106
102
|
end
|
107
103
|
end
|
108
104
|
end
|
@@ -43,6 +43,12 @@ module Normalizy
|
|
43
43
|
|
44
44
|
return false if options.blank?
|
45
45
|
|
46
|
+
if options.map { |option| option[:rules] }.compact.blank?
|
47
|
+
options = default_rules
|
48
|
+
end
|
49
|
+
|
50
|
+
return false if options.blank?
|
51
|
+
|
46
52
|
options.each do |option|
|
47
53
|
rules = option[:rules]
|
48
54
|
|
@@ -52,9 +58,9 @@ module Normalizy
|
|
52
58
|
|
53
59
|
false
|
54
60
|
else
|
55
|
-
@subject.send "#{@attribute}=", @from
|
61
|
+
@subject.send :"#{@attribute}=", @from
|
56
62
|
|
57
|
-
@subject
|
63
|
+
@subject[@attribute] == @to
|
58
64
|
end
|
59
65
|
end
|
60
66
|
|
@@ -80,6 +86,12 @@ module Normalizy
|
|
80
86
|
value.is_a?(String) ? %("#{value}") : value
|
81
87
|
end
|
82
88
|
|
89
|
+
def default_rules
|
90
|
+
[Normalizy.config.default_filters].flatten.compact.map do |rule|
|
91
|
+
{ rules: rule }
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
83
95
|
def from_value
|
84
96
|
@from.nil? ? :nil : %("#{@from}")
|
85
97
|
end
|
data/lib/normalizy/version.rb
CHANGED
data/lib/normalizy.rb
CHANGED
@@ -3,55 +3,27 @@
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
5
|
RSpec.describe Normalizy::Config, '#alias' do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
before do
|
10
|
-
object.class.normalizy_rules = {}
|
11
|
-
|
12
|
-
Normalizy.configure do |config|
|
13
|
-
config.alias :email, :downcase
|
14
|
-
end
|
6
|
+
it 'accepts alias' do
|
7
|
+
Normalizy.configure do |config|
|
8
|
+
config.alias :email, :downcase
|
15
9
|
end
|
16
10
|
|
17
|
-
|
18
|
-
object.class.normalizy :name, with: :email
|
19
|
-
|
20
|
-
object.save
|
21
|
-
|
22
|
-
expect(object.name).to eq 'washington botelho'
|
23
|
-
end
|
11
|
+
expect(Alias.create(email: 'Botelho').email).to eq 'botelho'
|
24
12
|
end
|
25
13
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
context 'configured on setup' do
|
30
|
-
before do
|
31
|
-
Normalizy.configure do |config|
|
32
|
-
config.alias :age, :number, raw: true
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'alias one filter to others' do
|
37
|
-
User.normalizy :age, with: :age
|
38
|
-
|
39
|
-
expect(User.create(age: '= 42').age).to eq 42
|
40
|
-
end
|
14
|
+
it 'accepts alias with options' do
|
15
|
+
Normalizy.configure do |config|
|
16
|
+
config.alias :with_arg, strip: { side: :left }
|
41
17
|
end
|
42
18
|
|
43
|
-
|
44
|
-
|
45
|
-
Normalizy.configure do |config|
|
46
|
-
config.alias :age, :number
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'alias one filter to others' do
|
51
|
-
User.normalizy :age, with: :age, raw: true
|
19
|
+
expect(Alias.create(with_arg_field: ' trim').with_arg_field).to eq 'trim'
|
20
|
+
end
|
52
21
|
|
53
|
-
|
54
|
-
|
22
|
+
it 'accepts late options' do
|
23
|
+
Normalizy.configure do |config|
|
24
|
+
config.alias :with_inline_arg, :strip
|
55
25
|
end
|
26
|
+
|
27
|
+
expect(Alias.create(with_inline_arg_field: ' trim').with_inline_arg_field).to eq 'trim'
|
56
28
|
end
|
57
29
|
end
|
@@ -2,33 +2,23 @@
|
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
|
-
RSpec.describe
|
6
|
-
before do
|
7
|
-
described_class.normalizy_rules = {}
|
8
|
-
end
|
9
|
-
|
5
|
+
RSpec.describe ModelDate, 'filters:date' do
|
10
6
|
specify do
|
11
|
-
described_class.normalizy :birthday, with: :date
|
12
|
-
|
13
7
|
expected = Time.new(1984, 10, 23, 0, 0, 0, 0)
|
14
8
|
|
15
|
-
expect(described_class.create(
|
9
|
+
expect(described_class.create(date: '1984-10-23').date).to eq expected
|
16
10
|
end
|
17
11
|
|
18
12
|
specify do
|
19
|
-
described_class.normalizy :birthday, with: { date: { format: '%y/%m/%d' } }
|
20
|
-
|
21
13
|
expected = Time.new(1984, 10, 23, 0, 0, 0, 0)
|
22
14
|
|
23
|
-
expect(described_class.create(
|
15
|
+
expect(described_class.create(date_format: '84/10/23').date_format).to eq expected
|
24
16
|
end
|
25
17
|
|
26
18
|
specify do
|
27
|
-
described_class.normalizy :birthday, with: { date: { time_zone: 'Brasilia' } }
|
28
|
-
|
29
19
|
hours = offset_in_hours('America/Sao_Paulo')
|
30
20
|
expected = Time.new(1984, 10, 23, 0, 0, 0, 0) + (hours.hours * -1)
|
31
21
|
|
32
|
-
expect(described_class.create(
|
22
|
+
expect(described_class.create(date_time_zone: '1984-10-23').date_time_zone).to eq expected
|
33
23
|
end
|
34
24
|
end
|
@@ -2,39 +2,29 @@
|
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
|
-
RSpec.describe
|
6
|
-
|
7
|
-
described_class.
|
5
|
+
RSpec.describe ModelMoney, 'filters:money' do
|
6
|
+
specify do
|
7
|
+
expect(described_class.create(text: '$ 42.00').text).to eq '42.00'
|
8
|
+
expect(described_class.create(text: '$ 42.10').text).to eq '42.10'
|
8
9
|
end
|
9
10
|
|
10
11
|
specify do
|
11
|
-
described_class.
|
12
|
-
|
13
|
-
expect(described_class.create(amount_text: '$ 42.00').amount_text).to eq '42.00'
|
14
|
-
expect(described_class.create(amount_text: '$ 42.10').amount_text).to eq '42.10'
|
12
|
+
expect(described_class.create(cents_type: '$ 42.33').cents_type).to eq '4233'
|
15
13
|
end
|
16
14
|
|
17
15
|
specify do
|
18
|
-
described_class.
|
19
|
-
|
20
|
-
expect(described_class.create(amount_cents: '$ 42.33').amount_cents).to be 4233
|
16
|
+
expect(described_class.create(cast_to_i: '$ 42.00').cast_to_i).to be 42
|
21
17
|
end
|
22
18
|
|
23
19
|
specify do
|
24
|
-
described_class.
|
25
|
-
|
26
|
-
expect(described_class.create(amount_cents: '$ 42.00').amount_cents).to be 42
|
20
|
+
expect(described_class.create(cast_to_d: '$ 1.23').cast_to_d).to eq 1.23
|
27
21
|
end
|
28
22
|
|
29
23
|
specify do
|
30
|
-
described_class.
|
31
|
-
|
32
|
-
expect(described_class.create(amount: '$ 1.23').amount).to eq 1.23.to_d
|
24
|
+
expect(described_class.create(cents_type_and_cast_to_f: '$ 42.00').cents_type_and_cast_to_f).to eq 4200.0
|
33
25
|
end
|
34
26
|
|
35
27
|
specify do
|
36
|
-
described_class.
|
37
|
-
|
38
|
-
expect(described_class.create(amount: '$ 42.00').amount).to eq 4200.0.to_f
|
28
|
+
expect(described_class.create(cents_type_and_cast_to_i: '$ 42.00').cents_type_and_cast_to_i).to eq 4200
|
39
29
|
end
|
40
30
|
end
|
@@ -2,12 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
|
-
RSpec.describe
|
6
|
-
before { described_class.normalizy_rules = {} }
|
7
|
-
|
5
|
+
RSpec.describe ModelNumber, 'filters:number' do
|
8
6
|
specify do
|
9
|
-
described_class.
|
10
|
-
|
11
|
-
expect(described_class.create(name: 'Washington 32').name).to eq '32'
|
7
|
+
expect(described_class.create(number: 'Botelho 32').number).to eq '32'
|
12
8
|
end
|
13
9
|
end
|
@@ -2,39 +2,29 @@
|
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
|
-
RSpec.describe
|
6
|
-
|
7
|
-
described_class.
|
5
|
+
RSpec.describe ModelPercent, 'filters:percent' do
|
6
|
+
specify do
|
7
|
+
expect(described_class.create(text: '42.00 %').text).to eq '42.00'
|
8
|
+
expect(described_class.create(text: '42.10 %').text).to eq '42.10'
|
8
9
|
end
|
9
10
|
|
10
11
|
specify do
|
11
|
-
described_class.
|
12
|
-
|
13
|
-
expect(described_class.create(amount_text: '42.00 %').amount_text).to eq '42.00'
|
14
|
-
expect(described_class.create(amount_text: '42.10 %').amount_text).to eq '42.10'
|
12
|
+
expect(described_class.create(cents_type: '42.33 %').cents_type).to eq '4233'
|
15
13
|
end
|
16
14
|
|
17
15
|
specify do
|
18
|
-
described_class.
|
19
|
-
|
20
|
-
expect(described_class.create(amount_cents: '42.33 %').amount_cents).to be 4233
|
16
|
+
expect(described_class.create(cast_to_i: '42.00 %').cast_to_i).to be 42
|
21
17
|
end
|
22
18
|
|
23
19
|
specify do
|
24
|
-
described_class.
|
25
|
-
|
26
|
-
expect(described_class.create(amount_cents: '42.00 %').amount_cents).to be 42
|
20
|
+
expect(described_class.create(cast_to_d: '1.23 %').cast_to_d).to eq 1.23
|
27
21
|
end
|
28
22
|
|
29
23
|
specify do
|
30
|
-
described_class.
|
31
|
-
|
32
|
-
expect(described_class.create(amount: '1.23 %').amount).to eq 1.23.to_d
|
24
|
+
expect(described_class.create(cents_type_and_cast_to_f: '42.00 %').cents_type_and_cast_to_f).to eq 4200.0
|
33
25
|
end
|
34
26
|
|
35
27
|
specify do
|
36
|
-
described_class.
|
37
|
-
|
38
|
-
expect(described_class.create(amount: '42.00 %').amount).to eq 4200.0.to_f
|
28
|
+
expect(described_class.create(cents_type_and_cast_to_i: '42.00 %').cents_type_and_cast_to_i).to eq 4200
|
39
29
|
end
|
40
30
|
end
|
@@ -2,20 +2,20 @@
|
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
|
-
RSpec.describe
|
6
|
-
|
7
|
-
described_class.
|
5
|
+
RSpec.describe ModelStrip, 'filters:strip' do
|
6
|
+
specify do
|
7
|
+
expect(described_class.create(strip: ' Botelho ').strip).to eq 'Botelho'
|
8
8
|
end
|
9
9
|
|
10
10
|
specify do
|
11
|
-
described_class.
|
12
|
-
|
13
|
-
expect(described_class.create(name: ' Washington ').name).to eq 'Washington'
|
11
|
+
expect(described_class.create(strip_side_left: ' Botelho ').strip_side_left).to eq 'Botelho '
|
14
12
|
end
|
15
13
|
|
16
14
|
specify do
|
17
|
-
described_class.
|
15
|
+
expect(described_class.create(strip_side_right: ' Botelho ').strip_side_right).to eq ' Botelho'
|
16
|
+
end
|
18
17
|
|
19
|
-
|
18
|
+
specify do
|
19
|
+
expect(described_class.create(strip_side_both: ' Botelho ').strip_side_both).to eq 'Botelho'
|
20
20
|
end
|
21
21
|
end
|