normalizy 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1378c83e240d8d342b407be53fbd84c058496fa5e6280edd3f18833139e87b67
4
- data.tar.gz: eedf9b146a116d6800ba05b085d985389fc258b41ec675d004a106bc6c9a4414
3
+ metadata.gz: 5bc428c7ca5535d3d9cf75e77752380d999747578e4dac3cdef425106a2d7287
4
+ data.tar.gz: 66a390c2bc1e7c9fed41a8587615773b70e7523dea9938f96059cf23a825d053
5
5
  SHA512:
6
- metadata.gz: c2671c5624fa972a812d9bddcf4f9a47e9f7fc46650024790c0eed169b826c998da4cca03d015bfaa60e8fe5adc3c1e3131789369e0a89019fc1fbd9f2cf9533
7
- data.tar.gz: 0e99e2b50a2fa3bb2ff41101735c29be539d3ba7ea7df674ca9894f1baf848892aa448a7e4d8830010e224c97fe4290758af3541f08a9a64197907758f361da9
6
+ metadata.gz: adfd4a6e1615e61738845fc2b7861bf5d59fb0228586f176132513c1741c61479892d865b6e5081f681771d0e8faaad64fd9ffeae20191b8266c4629decdf577
7
+ data.tar.gz: d7e5d1e5beb1940b8c28a1bc1af1e6d9f95c574e0ad906feecb3e995dea7ca835865febd50f5c0e383124fbc9f3bdaaf476d657a4948e8938d3a9398aff825b3
@@ -1,3 +1,8 @@
1
+ ## v1.2.0
2
+
3
+ - Features:
4
+ - `money` filter now allows negative numbers.
5
+
1
6
  ## v1.1.1
2
7
 
3
8
  - Fixes:
data/README.md CHANGED
@@ -2,7 +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
+ [![Patreon](https://img.shields.io/badge/donate-%3C3-brightgreen.svg)](https://www.patreon.com/wbotelhos)
6
6
 
7
7
  Attribute normalizer for ActiveRecord.
8
8
 
@@ -679,7 +679,3 @@ it { is_expected.to normalizy(:email).with %i[downcase squish] }
679
679
  ```ruby
680
680
  it { is_expected.to normalizy(:email).with(trim: { side: :left }) }
681
681
  ```
682
-
683
- ## Love it!
684
-
685
- Via [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X8HEP2878NDEG&item_name=normalizy) or [Gratipay](https://gratipay.com/normalizy). Thanks! (:
@@ -7,7 +7,7 @@ module Normalizy
7
7
  def call(input, options = {})
8
8
  return input unless input.is_a?(String)
9
9
 
10
- value = input.gsub(/[^[0-9]#{separator(options)}]/, '')
10
+ value = input.gsub(/[^[0-9-]#{separator(options)}]/, '')
11
11
 
12
12
  return nil if value.blank?
13
13
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Normalizy
4
- VERSION = '1.1.1'
4
+ VERSION = '1.2.0'
5
5
  end
@@ -3,19 +3,19 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  RSpec.describe ModelDate, 'filters:date' do
6
- specify do
6
+ it do
7
7
  expected = Time.new(1984, 10, 23, 0, 0, 0, 0)
8
8
 
9
9
  expect(described_class.create(date: '1984-10-23').date).to eq expected
10
10
  end
11
11
 
12
- specify do
12
+ it do
13
13
  expected = Time.new(1984, 10, 23, 0, 0, 0, 0)
14
14
 
15
15
  expect(described_class.create(date_format: '84/10/23').date_format).to eq expected
16
16
  end
17
17
 
18
- specify do
18
+ it do
19
19
  hours = ActiveSupport::TimeZone['Brasilia'].utc_offset / 3600.0
20
20
  expected = Time.new(1984, 10, 23, 0, 0, 0, 0) + (hours.hours * -1)
21
21
 
@@ -3,28 +3,36 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  RSpec.describe ModelMoney, 'filters:money' do
6
- specify do
6
+ it do
7
7
  expect(described_class.create(text: '$ 42.00').text).to eq '42.00'
8
8
  expect(described_class.create(text: '$ 42.10').text).to eq '42.10'
9
+
10
+ expect(described_class.create(text: '$ -42.00').text).to eq '-42.00'
11
+ expect(described_class.create(text: '$ -42.10').text).to eq '-42.10'
9
12
  end
10
13
 
11
- specify do
12
- expect(described_class.create(cents_type: '$ 42.33').cents_type).to eq '4233'
14
+ it do
15
+ expect(described_class.create(cents_type: '$ 42.33').cents_type).to eq '4233'
16
+ expect(described_class.create(cents_type: '$ -42.33').cents_type).to eq '-4233'
13
17
  end
14
18
 
15
- specify do
16
- expect(described_class.create(cast_to_i: '$ 42.00').cast_to_i).to be 42
19
+ it do
20
+ expect(described_class.create(cast_to_i: '$ 42.00').cast_to_i).to be 42
21
+ expect(described_class.create(cast_to_i: '$ -42.00').cast_to_i).to be -42
17
22
  end
18
23
 
19
- specify do
20
- expect(described_class.create(cast_to_d: '$ 1.23').cast_to_d).to eq 1.23
24
+ it do
25
+ expect(described_class.create(cast_to_d: '$ 1.23').cast_to_d).to eq 1.23
26
+ expect(described_class.create(cast_to_d: '$ -1.23').cast_to_d).to eq -1.23
21
27
  end
22
28
 
23
- specify do
24
- expect(described_class.create(cents_type_and_cast_to_f: '$ 42.00').cents_type_and_cast_to_f).to eq 4200.0
29
+ it do
30
+ expect(described_class.create(cents_type_and_cast_to_f: '$ 42.00').cents_type_and_cast_to_f).to eq 4200.0
31
+ expect(described_class.create(cents_type_and_cast_to_f: '$ -42.00').cents_type_and_cast_to_f).to eq -4200.0
25
32
  end
26
33
 
27
- specify do
28
- expect(described_class.create(cents_type_and_cast_to_i: '$ 42.00').cents_type_and_cast_to_i).to eq 4200
34
+ it do
35
+ expect(described_class.create(cents_type_and_cast_to_i: '$ 42.00').cents_type_and_cast_to_i).to eq 4200
36
+ expect(described_class.create(cents_type_and_cast_to_i: '$ -42.00').cents_type_and_cast_to_i).to eq -4200
29
37
  end
30
38
  end
@@ -3,7 +3,7 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  RSpec.describe ModelNumber, 'filters:number' do
6
- specify do
6
+ it do
7
7
  expect(described_class.create(number: 'Botelho 32').number).to eq '32'
8
8
  end
9
9
  end
@@ -3,28 +3,28 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  RSpec.describe ModelPercent, 'filters:percent' do
6
- specify do
6
+ it do
7
7
  expect(described_class.create(text: '42.00 %').text).to eq '42.00'
8
8
  expect(described_class.create(text: '42.10 %').text).to eq '42.10'
9
9
  end
10
10
 
11
- specify do
11
+ it do
12
12
  expect(described_class.create(cents_type: '42.33 %').cents_type).to eq '4233'
13
13
  end
14
14
 
15
- specify do
15
+ it do
16
16
  expect(described_class.create(cast_to_i: '42.00 %').cast_to_i).to be 42
17
17
  end
18
18
 
19
- specify do
19
+ it do
20
20
  expect(described_class.create(cast_to_d: '1.23 %').cast_to_d).to eq 1.23
21
21
  end
22
22
 
23
- specify do
23
+ it do
24
24
  expect(described_class.create(cents_type_and_cast_to_f: '42.00 %').cents_type_and_cast_to_f).to eq 4200.0
25
25
  end
26
26
 
27
- specify do
27
+ it do
28
28
  expect(described_class.create(cents_type_and_cast_to_i: '42.00 %').cents_type_and_cast_to_i).to eq 4200
29
29
  end
30
30
  end
@@ -6,9 +6,9 @@ RSpec.describe ModelSlug, 'filters:slug' do
6
6
  from = 'The Títle'
7
7
  to = 'the-title'
8
8
 
9
- specify { expect(described_class.create(permalink: from).permalink).to eq to }
9
+ it { expect(described_class.create(permalink: from).permalink).to eq to }
10
10
 
11
- specify { expect(described_class.create(title: from).slug).to eq to }
11
+ it { expect(described_class.create(title: from).slug).to eq to }
12
12
 
13
- specify { expect(described_class.create(title: from).title).to eq from }
13
+ it { expect(described_class.create(title: from).title).to eq from }
14
14
  end
@@ -3,19 +3,19 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  RSpec.describe ModelStrip, 'filters:strip' do
6
- specify do
6
+ it do
7
7
  expect(described_class.create(strip: ' Botelho ').strip).to eq 'Botelho'
8
8
  end
9
9
 
10
- specify do
10
+ it do
11
11
  expect(described_class.create(strip_side_left: ' Botelho ').strip_side_left).to eq 'Botelho '
12
12
  end
13
13
 
14
- specify do
14
+ it do
15
15
  expect(described_class.create(strip_side_right: ' Botelho ').strip_side_right).to eq ' Botelho'
16
16
  end
17
17
 
18
- specify do
18
+ it do
19
19
  expect(described_class.create(strip_side_both: ' Botelho ').strip_side_both).to eq 'Botelho'
20
20
  end
21
21
  end
@@ -4,13 +4,13 @@ require 'rails_helper'
4
4
 
5
5
  RSpec.describe '#apply_normalizy' do
6
6
  context 'when object has no normalizy' do
7
- specify do
7
+ it do
8
8
  expect(Model.create(none: ' Botelho ').none).to eq ' Botelho '
9
9
  end
10
10
  end
11
11
 
12
12
  context 'when object has normalizy' do
13
- specify do
13
+ it do
14
14
  Normalizy.configure do |config|
15
15
  config.default_filters = [:squish]
16
16
  end
@@ -18,41 +18,41 @@ RSpec.describe '#apply_normalizy' do
18
18
  expect(Model.create(default: ' Botelho ').default).to eq 'Botelho'
19
19
  end
20
20
 
21
- specify do
21
+ it do
22
22
  expect(Model.create(block: 'Botelho').block).to eq 'BOTELHO'
23
23
  end
24
24
  end
25
25
 
26
26
  context 'when a filter is given' do
27
- specify do
27
+ it do
28
28
  expect(Model.create(symbol: ' Bote lho ').symbol).to eq 'Bote lho'
29
29
  end
30
30
 
31
- specify do
31
+ it do
32
32
  expect(Model.create(array_symbol: ' Bote lho ').array_symbol).to eq 'Bote lho'
33
33
  end
34
34
 
35
- specify do
35
+ it do
36
36
  expect(Model.create(array_symbols: ' Bote lho ').array_symbols).to eq 'bote lho'
37
37
  end
38
38
 
39
- specify do
39
+ it do
40
40
  expect(Model.create(hash_no_args: ' Bote lho ').hash_no_args).to eq 'Bote lho'
41
41
  end
42
42
 
43
- specify do
43
+ it do
44
44
  expect(Model.create(hash_with_args: ' Botelho ').hash_with_args).to eq 'Botelho '
45
45
  end
46
46
 
47
- specify do
47
+ it do
48
48
  expect(Model.create(module_one_arg: 'Fuck').module_one_arg).to eq 'filtered'
49
49
  end
50
50
 
51
- specify do
51
+ it do
52
52
  expect(Model.create(module_two_args: 'Botelho').module_two_args).to eq 'module_two_args, Botelho, Model'
53
53
  end
54
54
 
55
- specify do
55
+ it do
56
56
  Normalizy.configure do |config|
57
57
  config.add :blacklist, Normalizy::Filters::Block
58
58
  end
@@ -60,11 +60,11 @@ RSpec.describe '#apply_normalizy' do
60
60
  expect(Model.create(module_and_block: 'Botelho').module_and_block).to eq 'BOTELHO'
61
61
  end
62
62
 
63
- specify do
63
+ it do
64
64
  expect(Model.create(method_with_no_options_field: 'Botelho').method_with_no_options_field).to eq 'Botelho'
65
65
  end
66
66
 
67
- specify do
67
+ it do
68
68
  expect(Model.create(method_with_options_field: 'Botelho').method_with_options_field).to eq [
69
69
  'Botelho',
70
70
  {
@@ -75,18 +75,18 @@ RSpec.describe '#apply_normalizy' do
75
75
  ].join ', '
76
76
  end
77
77
 
78
- specify do
78
+ it do
79
79
  expect(Model.create(native: 'Botelho').native).to eq '["Botelho"]'
80
80
  end
81
81
 
82
- specify do
82
+ it do
83
83
  expect(Model.create(multiple: 'BoteLho').multiple).to eq 'bote lho'
84
84
  end
85
85
  end
86
86
 
87
87
  context 'when assign is made via set' do
88
88
  context 'with no save' do
89
- specify do
89
+ it do
90
90
  object = Model.new
91
91
  object.symbol = ' Bote lho '
92
92
 
@@ -95,7 +95,7 @@ RSpec.describe '#apply_normalizy' do
95
95
  end
96
96
 
97
97
  context 'with save' do
98
- specify do
98
+ it do
99
99
  object = Model.new
100
100
  object.symbol = ' Bote lho '
101
101
  object.save
@@ -14,19 +14,19 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
14
14
  end
15
15
  end
16
16
 
17
- specify do
17
+ it do
18
18
  model.normalizy :name
19
19
 
20
20
  expect(model.normalizy_rules).to eq(name: [{ block: nil, options: {}, rules: nil }])
21
21
  end
22
22
 
23
- specify do
23
+ it do
24
24
  model.normalizy :name, with: :upcase
25
25
 
26
26
  expect(model.normalizy_rules).to eq(name: [{ block: nil, options: {}, rules: :upcase }])
27
27
  end
28
28
 
29
- specify do
29
+ it do
30
30
  expected = { name: [{ block: nil, options: {}, rules: [:upcase, 'blank', { trim: { side: :left } }] }] }
31
31
 
32
32
  model.normalizy :name, with: [:upcase, 'blank', { trim: { side: :left } }]
@@ -34,7 +34,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
34
34
  expect(model.normalizy_rules).to eq expected
35
35
  end
36
36
 
37
- specify do
37
+ it do
38
38
  model.normalizy :name, with: [:upcase, { trim: { side: :left } }]
39
39
  model.normalizy :name, with: :squish
40
40
  model.normalizy :name, with: [:upcase, { trim: { side: :right } }]
@@ -50,7 +50,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
50
50
  )
51
51
  end
52
52
 
53
- specify do
53
+ it do
54
54
  model.normalizy :email, :name
55
55
 
56
56
  expect(model.normalizy_rules).to eq(
@@ -59,7 +59,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
59
59
  )
60
60
  end
61
61
 
62
- specify do
62
+ it do
63
63
  model.normalizy :email, :name, with: :upcase
64
64
 
65
65
  expect(model.normalizy_rules).to eq(
@@ -68,7 +68,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
68
68
  )
69
69
  end
70
70
 
71
- specify do
71
+ it do
72
72
  model.normalizy :email, :name, with: [:upcase, :blank, { trim: { side: :left } }]
73
73
 
74
74
  expect(model.normalizy_rules).to eq(
@@ -77,7 +77,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
77
77
  )
78
78
  end
79
79
 
80
- specify do
80
+ it do
81
81
  model.normalizy :email, :name, with: [:upcase, { trim: { side: :left } }]
82
82
  model.normalizy :email, :name, with: :squish
83
83
  model.normalizy :email, :name, with: [:upcase, { trim: { side: :right } }]
@@ -107,25 +107,25 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
107
107
  end
108
108
  end
109
109
 
110
- specify do
110
+ it do
111
111
  model.normalizy :name
112
112
 
113
113
  expect(model.normalizy_rules).to eq(name: [{ block: nil, options: {}, rules: nil }])
114
114
  end
115
115
 
116
- specify do
116
+ it do
117
117
  model.normalizy :name, with: :upcase
118
118
 
119
119
  expect(model.normalizy_rules).to eq(name: [{ block: nil, options: {}, rules: :upcase }])
120
120
  end
121
121
 
122
- specify do
122
+ it do
123
123
  model.normalizy :name, with: %i[upcase blank]
124
124
 
125
125
  expect(model.normalizy_rules).to eq(name: [{ block: nil, options: {}, rules: %i[upcase blank] }])
126
126
  end
127
127
 
128
- specify do
128
+ it do
129
129
  model.normalizy :name, with: :upcase
130
130
  model.normalizy :name, with: :squish
131
131
  model.normalizy :name, with: :upcase
@@ -139,7 +139,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
139
139
  )
140
140
  end
141
141
 
142
- specify do
142
+ it do
143
143
  model.normalizy :email, :name
144
144
 
145
145
  expect(model.normalizy_rules).to eq(
@@ -148,7 +148,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
148
148
  )
149
149
  end
150
150
 
151
- specify do
151
+ it do
152
152
  model.normalizy :email, :name, with: :upcase
153
153
 
154
154
  expect(model.normalizy_rules).to eq(
@@ -157,7 +157,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
157
157
  )
158
158
  end
159
159
 
160
- specify do
160
+ it do
161
161
  model.normalizy :email, :name, with: %i[upcase blank]
162
162
 
163
163
  expect(model.normalizy_rules).to eq(
@@ -166,7 +166,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
166
166
  )
167
167
  end
168
168
 
169
- specify do
169
+ it do
170
170
  model.normalizy :email, :name, with: :upcase
171
171
  model.normalizy :email, :name, with: :squish
172
172
  model.normalizy :email, :name, with: :upcase
@@ -189,7 +189,7 @@ RSpec.describe Normalizy::Extension, ':normalizy_rules' do
189
189
  context 'when block is given' do
190
190
  let!(:block) { ->(value) { value.downcase } }
191
191
 
192
- specify do
192
+ it do
193
193
  model.normalizy :name, &block
194
194
 
195
195
  expect(model.normalizy_rules[:name][0][:block]).to eq block
@@ -6,12 +6,18 @@ RSpec.describe Normalizy::Filters::Money do
6
6
  describe 'default options' do
7
7
  it { expect(subject.call('')).to eq nil }
8
8
 
9
- it { expect(subject.call(1)).to be 1 }
10
- it { expect(subject.call(1.70)).to be 1.70 }
11
- it { expect(subject.call(103.70)).to be 103.70 }
12
- it { expect(subject.call(1030.70)).to be 1030.70 }
9
+ it { expect(subject.call(1)).to be 1 }
10
+ it { expect(subject.call(1.70)).to be 1.70 }
11
+ it { expect(subject.call(103.70)).to be 103.70 }
12
+ it { expect(subject.call(1030.70)).to be 1030.70 }
13
13
  it { expect(subject.call(10_300.70)).to be 10_300.70 }
14
14
 
15
+ it { expect(subject.call(-1)).to be -1 }
16
+ it { expect(subject.call(-1.70)).to be -1.70 }
17
+ it { expect(subject.call(-103.70)).to be -103.70 }
18
+ it { expect(subject.call(-1030.70)).to be -1030.70 }
19
+ it { expect(subject.call(-10_300.70)).to be -10_300.70 }
20
+
15
21
  it { expect(subject.call('0')).to eq '0.00' }
16
22
  it { expect(subject.call('100')).to eq '100.00' }
17
23
  it { expect(subject.call('100.0')).to eq '100.00' }
@@ -20,12 +26,27 @@ RSpec.describe Normalizy::Filters::Money do
20
26
  it { expect(subject.call('1030.70')).to eq '1030.70' }
21
27
  it { expect(subject.call('10300.70')).to eq '10300.70' }
22
28
 
29
+ it { expect(subject.call('-0')).to eq '-0.00' }
30
+ it { expect(subject.call('-100')).to eq '-100.00' }
31
+ it { expect(subject.call('-100.0')).to eq '-100.00' }
32
+ it { expect(subject.call('-1.70')).to eq '-1.70' }
33
+ it { expect(subject.call('-103.70')).to eq '-103.70' }
34
+ it { expect(subject.call('-1030.70')).to eq '-1030.70' }
35
+ it { expect(subject.call('-10300.70')).to eq '-10300.70' }
36
+
23
37
  it { expect(subject.call('$ 0.01')).to eq '0.01' }
24
38
  it { expect(subject.call('$ 1')).to eq '1.00' }
25
39
  it { expect(subject.call('$ 1.70')).to eq '1.70' }
26
40
  it { expect(subject.call('$ 103.70')).to eq '103.70' }
27
41
  it { expect(subject.call('$ 1030.70')).to eq '1030.70' }
28
42
  it { expect(subject.call('$ 10300.70')).to eq '10300.70' }
43
+
44
+ it { expect(subject.call('$ -0.01')).to eq '-0.01' }
45
+ it { expect(subject.call('$ -1')).to eq '-1.00' }
46
+ it { expect(subject.call('$ -1.70')).to eq '-1.70' }
47
+ it { expect(subject.call('$ -103.70')).to eq '-103.70' }
48
+ it { expect(subject.call('$ -1030.70')).to eq '-1030.70' }
49
+ it { expect(subject.call('$ -10300.70')).to eq '-10300.70' }
29
50
  end
30
51
 
31
52
  describe 'type' do
@@ -37,8 +58,15 @@ RSpec.describe Normalizy::Filters::Money do
37
58
  it { expect(subject.call(1030.70 , type: :cents)).to be 1030.70 }
38
59
  it { expect(subject.call(10_300.70, type: :cents)).to be 10_300.70 }
39
60
 
61
+ it { expect(subject.call(-1 , type: :cents)).to be -1 }
62
+ it { expect(subject.call(-1.70 , type: :cents)).to be -1.70 }
63
+ it { expect(subject.call(-103.70 , type: :cents)).to be -103.70 }
64
+ it { expect(subject.call(-1030.70 , type: :cents)).to be -1030.70 }
65
+ it { expect(subject.call(-10_300.70, type: :cents)).to be -10_300.70 }
66
+
40
67
  context 'with different separator' do
41
- it { expect(subject.call('1,7', separator: ',', type: :cents)).to eq '170' }
68
+ it { expect(subject.call('1,7', separator: ',', type: :cents)).to eq '170' }
69
+ it { expect(subject.call('-1,7', separator: ',', type: :cents)).to eq '-170' }
42
70
  end
43
71
 
44
72
  context 'with no decimal precision' do
@@ -46,10 +74,18 @@ RSpec.describe Normalizy::Filters::Money do
46
74
  it { expect(subject.call('10' , type: :cents)).to eq '10' }
47
75
  it { expect(subject.call('100', type: :cents)).to eq '100' }
48
76
 
77
+ it { expect(subject.call('-1' , type: :cents)).to eq '-1' }
78
+ it { expect(subject.call('-10' , type: :cents)).to eq '-10' }
79
+ it { expect(subject.call('-100', type: :cents)).to eq '-100' }
80
+
49
81
  context 'with float :cast' do
50
82
  it { expect(subject.call('1' , cast: :to_f, type: :cents)).to eq 1.0 }
51
83
  it { expect(subject.call('10' , cast: :to_f, type: :cents)).to eq 10.0 }
52
84
  it { expect(subject.call('100', cast: :to_f, type: :cents)).to eq 100.0 }
85
+
86
+ it { expect(subject.call('-1' , cast: :to_f, type: :cents)).to eq -1.0 }
87
+ it { expect(subject.call('-10' , cast: :to_f, type: :cents)).to eq -10.0 }
88
+ it { expect(subject.call('-100', cast: :to_f, type: :cents)).to eq -100.0 }
53
89
  end
54
90
  end
55
91
 
@@ -59,21 +95,41 @@ RSpec.describe Normalizy::Filters::Money do
59
95
  it { expect(subject.call('1030.7' , type: :cents)).to eq '103070' }
60
96
  it { expect(subject.call('10300.7', type: :cents)).to eq '1030070' }
61
97
 
98
+ it { expect(subject.call('-1.7' , type: :cents)).to eq '-170' }
99
+ it { expect(subject.call('-103.7' , type: :cents)).to eq '-10370' }
100
+ it { expect(subject.call('-1030.7' , type: :cents)).to eq '-103070' }
101
+ it { expect(subject.call('-10300.7', type: :cents)).to eq '-1030070' }
102
+
62
103
  it { expect(subject.call('$ 1.7' , type: :cents)).to eq '170' }
63
104
  it { expect(subject.call('$ 103.7' , type: :cents)).to eq '10370' }
64
105
  it { expect(subject.call('$ 1030.7' , type: :cents)).to eq '103070' }
65
106
  it { expect(subject.call('$ 10300.7', type: :cents)).to eq '1030070' }
66
107
 
108
+ it { expect(subject.call('$ -1.7' , type: :cents)).to eq '-170' }
109
+ it { expect(subject.call('$ -103.7' , type: :cents)).to eq '-10370' }
110
+ it { expect(subject.call('$ -1030.7' , type: :cents)).to eq '-103070' }
111
+ it { expect(subject.call('$ -10300.7', type: :cents)).to eq '-1030070' }
112
+
67
113
  context 'with float :cast' do
68
114
  it { expect(subject.call('1.7' , cast: :to_f, type: :cents)).to be 170.0 }
69
115
  it { expect(subject.call('103.7' , cast: :to_f, type: :cents)).to be 10_370.0 }
70
116
  it { expect(subject.call('1030.7' , cast: :to_f, type: :cents)).to be 103_070.0 }
71
117
  it { expect(subject.call('10300.7', cast: :to_f, type: :cents)).to be 1_030_070.0 }
72
118
 
119
+ it { expect(subject.call('-1.7' , cast: :to_f, type: :cents)).to be -170.0 }
120
+ it { expect(subject.call('-103.7' , cast: :to_f, type: :cents)).to be -10_370.0 }
121
+ it { expect(subject.call('-1030.7' , cast: :to_f, type: :cents)).to be -103_070.0 }
122
+ it { expect(subject.call('-10300.7', cast: :to_f, type: :cents)).to be -1_030_070.0 }
123
+
73
124
  it { expect(subject.call('$ 1.7' , cast: :to_f, type: :cents)).to be 170.0 }
74
125
  it { expect(subject.call('$ 103.7' , cast: :to_f, type: :cents)).to be 10_370.0 }
75
126
  it { expect(subject.call('$ 1030.7' , cast: :to_f, type: :cents)).to be 103_070.0 }
76
127
  it { expect(subject.call('$ 10300.7', cast: :to_f, type: :cents)).to be 1_030_070.0 }
128
+
129
+ it { expect(subject.call('$ -1.7' , cast: :to_f, type: :cents)).to be -170.0 }
130
+ it { expect(subject.call('$ -103.7' , cast: :to_f, type: :cents)).to be -10_370.0 }
131
+ it { expect(subject.call('$ -1030.7' , cast: :to_f, type: :cents)).to be -103_070.0 }
132
+ it { expect(subject.call('$ -10300.7', cast: :to_f, type: :cents)).to be -1_030_070.0 }
77
133
  end
78
134
  end
79
135
 
@@ -83,28 +139,49 @@ RSpec.describe Normalizy::Filters::Money do
83
139
  it { expect(subject.call('1030.70' , type: :cents)).to eq '103070' }
84
140
  it { expect(subject.call('10300.70', type: :cents)).to eq '1030070' }
85
141
 
142
+ it { expect(subject.call('-1.70' , type: :cents)).to eq '-170' }
143
+ it { expect(subject.call('-103.70' , type: :cents)).to eq '-10370' }
144
+ it { expect(subject.call('-1030.70' , type: :cents)).to eq '-103070' }
145
+ it { expect(subject.call('-10300.70', type: :cents)).to eq '-1030070' }
146
+
86
147
  it { expect(subject.call('$ 1.70' , type: :cents)).to eq '170' }
87
148
  it { expect(subject.call('$ 103.70' , type: :cents)).to eq '10370' }
88
149
  it { expect(subject.call('$ 1030.70' , type: :cents)).to eq '103070' }
89
150
  it { expect(subject.call('$ 10300.70', type: :cents)).to eq '1030070' }
90
151
 
152
+ it { expect(subject.call('$ -1.70' , type: :cents)).to eq '-170' }
153
+ it { expect(subject.call('$ -103.70' , type: :cents)).to eq '-10370' }
154
+ it { expect(subject.call('$ -1030.70' , type: :cents)).to eq '-103070' }
155
+ it { expect(subject.call('$ -10300.70', type: :cents)).to eq '-1030070' }
156
+
91
157
  context 'with float :cast' do
92
158
  it { expect(subject.call('1.70' , cast: :to_f, type: :cents)).to be 170.0 }
93
159
  it { expect(subject.call('103.70' , cast: :to_f, type: :cents)).to be 10_370.0 }
94
160
  it { expect(subject.call('1030.70' , cast: :to_f, type: :cents)).to be 103_070.0 }
95
161
  it { expect(subject.call('10300.70', cast: :to_f, type: :cents)).to be 1_030_070.0 }
96
162
 
163
+ it { expect(subject.call('-1.70' , cast: :to_f, type: :cents)).to be -170.0 }
164
+ it { expect(subject.call('-103.70' , cast: :to_f, type: :cents)).to be -10_370.0 }
165
+ it { expect(subject.call('-1030.70' , cast: :to_f, type: :cents)).to be -103_070.0 }
166
+ it { expect(subject.call('-10300.70', cast: :to_f, type: :cents)).to be -1_030_070.0 }
167
+
97
168
  it { expect(subject.call('$ 1.70' , cast: :to_f, type: :cents)).to be 170.0 }
98
169
  it { expect(subject.call('$ 103.70' , cast: :to_f, type: :cents)).to be 10_370.0 }
99
170
  it { expect(subject.call('$ 1030.70' , cast: :to_f, type: :cents)).to be 103_070.0 }
100
171
  it { expect(subject.call('$ 10300.70', cast: :to_f, type: :cents)).to be 1_030_070.0 }
172
+
173
+ it { expect(subject.call('$ -1.70' , cast: :to_f, type: :cents)).to be -170.0 }
174
+ it { expect(subject.call('$ -103.70' , cast: :to_f, type: :cents)).to be -10_370.0 }
175
+ it { expect(subject.call('$ -1030.70' , cast: :to_f, type: :cents)).to be -103_070.0 }
176
+ it { expect(subject.call('$ -10300.70', cast: :to_f, type: :cents)).to be -1_030_070.0 }
101
177
  end
102
178
  end
103
179
  end
104
180
 
105
181
  describe 'separator' do
106
182
  context 'when provided inline' do
107
- it { expect(subject.call('R$ 0,01', separator: ',')).to eq '0.01' }
183
+ it { expect(subject.call('R$ 0,01', separator: ',')).to eq '0.01' }
184
+ it { expect(subject.call('R$ -0,01', separator: ',')).to eq '-0.01' }
108
185
  end
109
186
 
110
187
  context 'when provided I18n' do
@@ -113,11 +190,13 @@ RSpec.describe Normalizy::Filters::Money do
113
190
  allow(I18n).to receive(:t).with('currency.format.precision', default: 2).and_return 2
114
191
  end
115
192
 
116
- it { expect(subject.call('1x2')).to eq '1.20' }
193
+ it { expect(subject.call('1x2')).to eq '1.20' }
194
+ it { expect(subject.call('-1x2')).to eq '-1.20' }
117
195
  end
118
196
 
119
197
  context 'when not provided' do
120
- it { expect(subject.call('1.2')).to eq '1.20' }
198
+ it { expect(subject.call('1.2')).to eq '1.20' }
199
+ it { expect(subject.call('-1.2')).to eq '-1.20' }
121
200
  end
122
201
  end
123
202
 
@@ -126,6 +205,10 @@ RSpec.describe Normalizy::Filters::Money do
126
205
  it { expect(subject.call('1' , cast: :to_f)).to eq 1.0 }
127
206
  it { expect(subject.call('10' , cast: :to_f)).to eq 10.0 }
128
207
  it { expect(subject.call('100', cast: :to_f)).to eq 100.0 }
208
+
209
+ it { expect(subject.call('-1' , cast: :to_f)).to eq -1.0 }
210
+ it { expect(subject.call('-10' , cast: :to_f)).to eq -10.0 }
211
+ it { expect(subject.call('-100', cast: :to_f)).to eq -100.0 }
129
212
  end
130
213
 
131
214
  context 'when value has one decimal precision' do
@@ -134,21 +217,41 @@ RSpec.describe Normalizy::Filters::Money do
134
217
  it { expect(subject.call('1030.7' , cast: :to_f)).to eq 1030.7 }
135
218
  it { expect(subject.call('10300.7', cast: :to_f)).to eq 10_300.7 }
136
219
 
220
+ it { expect(subject.call('-1.7' , cast: :to_f)).to eq -1.7 }
221
+ it { expect(subject.call('-103.7' , cast: :to_f)).to eq -103.7 }
222
+ it { expect(subject.call('-1030.7' , cast: :to_f)).to eq -1030.7 }
223
+ it { expect(subject.call('-10300.7', cast: :to_f)).to eq -10_300.7 }
224
+
137
225
  it { expect(subject.call('$ 1.7' , cast: :to_f)).to eq 1.7 }
138
226
  it { expect(subject.call('$ 103.7' , cast: :to_f)).to eq 103.7 }
139
227
  it { expect(subject.call('$ 1030.7' , cast: :to_f)).to eq 1030.7 }
140
228
  it { expect(subject.call('$ 10300.7', cast: :to_f)).to eq 10_300.7 }
141
229
 
230
+ it { expect(subject.call('$ -1.7' , cast: :to_f)).to eq -1.7 }
231
+ it { expect(subject.call('$ -103.7' , cast: :to_f)).to eq -103.7 }
232
+ it { expect(subject.call('$ -1030.7' , cast: :to_f)).to eq -1030.7 }
233
+ it { expect(subject.call('$ -10300.7', cast: :to_f)).to eq -10_300.7 }
234
+
142
235
  context 'with calls cast' do
143
236
  it { expect(subject.call('1.7' , cast: :to_f)).to be 1.7 }
144
237
  it { expect(subject.call('103.7' , cast: :to_f)).to be 103.7 }
145
238
  it { expect(subject.call('1030.7' , cast: :to_f)).to be 1030.7 }
146
239
  it { expect(subject.call('10300.7', cast: :to_f)).to be 10_300.7 }
147
240
 
241
+ it { expect(subject.call('-1.7' , cast: :to_f)).to be -1.7 }
242
+ it { expect(subject.call('-103.7' , cast: :to_f)).to be -103.7 }
243
+ it { expect(subject.call('-1030.7' , cast: :to_f)).to be -1030.7 }
244
+ it { expect(subject.call('-10300.7', cast: :to_f)).to be -10_300.7 }
245
+
148
246
  it { expect(subject.call('$ 1.7' , cast: :to_f)).to be 1.7 }
149
247
  it { expect(subject.call('$ 103.7' , cast: :to_f)).to be 103.7 }
150
248
  it { expect(subject.call('$ 1030.7' , cast: :to_f)).to be 1030.7 }
151
249
  it { expect(subject.call('$ 10300.7', cast: :to_f)).to be 10_300.7 }
250
+
251
+ it { expect(subject.call('$ -1.7' , cast: :to_f)).to be -1.7 }
252
+ it { expect(subject.call('$ -103.7' , cast: :to_f)).to be -103.7 }
253
+ it { expect(subject.call('$ -1030.7' , cast: :to_f)).to be -1030.7 }
254
+ it { expect(subject.call('$ -10300.7', cast: :to_f)).to be -10_300.7 }
152
255
  end
153
256
  end
154
257
 
@@ -158,11 +261,22 @@ RSpec.describe Normalizy::Filters::Money do
158
261
  it { expect(subject.call('1030.70' , cast: :to_f)).to be 1030.7 }
159
262
  it { expect(subject.call('10300.70', cast: :to_f)).to be 10_300.7 }
160
263
 
264
+ it { expect(subject.call('-1.70' , cast: :to_f)).to be -1.7 }
265
+ it { expect(subject.call('-103.70' , cast: :to_f)).to be -103.7 }
266
+ it { expect(subject.call('-1030.70' , cast: :to_f)).to be -1030.7 }
267
+ it { expect(subject.call('-10300.70', cast: :to_f)).to be -10_300.7 }
268
+
161
269
  it { expect(subject.call('$ 1' , cast: :to_f)).to be 1.0 }
162
270
  it { expect(subject.call('$ 1.70' , cast: :to_f)).to be 1.7 }
163
271
  it { expect(subject.call('$ 103.70' , cast: :to_f)).to be 103.7 }
164
272
  it { expect(subject.call('$ 1030.70' , cast: :to_f)).to be 1030.7 }
165
273
  it { expect(subject.call('$ 10300.70', cast: :to_f)).to be 10_300.7 }
274
+
275
+ it { expect(subject.call('$ -1' , cast: :to_f)).to be -1.0 }
276
+ it { expect(subject.call('$ -1.70' , cast: :to_f)).to be -1.7 }
277
+ it { expect(subject.call('$ -103.70' , cast: :to_f)).to be -103.7 }
278
+ it { expect(subject.call('$ -1030.70' , cast: :to_f)).to be -1030.7 }
279
+ it { expect(subject.call('$ -10300.70', cast: :to_f)).to be -10_300.7 }
166
280
  end
167
281
  end
168
282
  end
@@ -6,7 +6,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.description' do
6
6
  let!(:matcher) { described_class.new :name }
7
7
 
8
8
  context 'with no :with expectation' do
9
- specify do
9
+ it do
10
10
  matcher.from :from
11
11
  matcher.to :to
12
12
 
@@ -15,7 +15,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.description' do
15
15
  end
16
16
 
17
17
  context 'with :with expectation' do
18
- specify do
18
+ it do
19
19
  matcher.with :blank
20
20
 
21
21
  matcher.from :from
@@ -6,7 +6,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.failure_message' do
6
6
  let!(:model) { Match }
7
7
 
8
8
  context 'with no :with expectation' do
9
- specify do
9
+ it do
10
10
  matcher = described_class.new(:downcase_field)
11
11
 
12
12
  matcher.from :from
@@ -18,7 +18,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.failure_message' do
18
18
  end
19
19
 
20
20
  context 'with :with expectation' do
21
- specify do
21
+ it do
22
22
  matcher = described_class.new(:alone)
23
23
 
24
24
  matcher.with :missing
@@ -27,7 +27,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.failure_message' do
27
27
  expect(matcher.failure_message).to eq %(expected: missing\n got: nil)
28
28
  end
29
29
 
30
- specify do
30
+ it do
31
31
  matcher = described_class.new(:downcase_field_array)
32
32
 
33
33
  matcher.with :missing
@@ -36,7 +36,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.failure_message' do
36
36
  expect(matcher.failure_message).to eq %(expected: missing\n got: downcase)
37
37
  end
38
38
 
39
- specify do
39
+ it do
40
40
  matcher = described_class.new(:trim_side_left)
41
41
 
42
42
  matcher.with :missing
@@ -6,7 +6,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.failure_message_when_negated' do
6
6
  let!(:model) { Match }
7
7
 
8
8
  context 'with no :with expectation' do
9
- specify do
9
+ it do
10
10
  matcher = described_class.new(:downcase_field)
11
11
 
12
12
  matcher.from 'from'
@@ -18,7 +18,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.failure_message_when_negated' do
18
18
  end
19
19
 
20
20
  context 'with :with expectation' do
21
- specify do
21
+ it do
22
22
  matcher = described_class.new(:downcase_field)
23
23
 
24
24
  matcher.with :downcase
@@ -5,7 +5,7 @@ require 'rails_helper'
5
5
  RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
6
6
  let!(:object) { Match.new }
7
7
 
8
- specify do
8
+ it do
9
9
  matcher = described_class.new(:alone)
10
10
 
11
11
  matcher.matches?(object)
@@ -14,7 +14,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
14
14
  end
15
15
 
16
16
  context 'when .with is called' do
17
- specify do
17
+ it do
18
18
  matcher = described_class.new(:alone)
19
19
 
20
20
  matcher.with :missing
@@ -22,7 +22,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
22
22
  expect(matcher.matches?(object)).to eq false
23
23
  end
24
24
 
25
- specify do
25
+ it do
26
26
  matcher = described_class.new(:downcase_field)
27
27
 
28
28
  matcher.with :downcase
@@ -30,7 +30,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
30
30
  expect(matcher.matches?(object)).to eq true
31
31
  end
32
32
 
33
- specify do
33
+ it do
34
34
  matcher = described_class.new(:trim_side_left)
35
35
 
36
36
  matcher.with trim: { side: :left }
@@ -38,7 +38,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
38
38
  expect(matcher.matches?(object)).to eq true
39
39
  end
40
40
 
41
- specify do
41
+ it do
42
42
  matcher = described_class.new(:trim_side_left_array)
43
43
 
44
44
  matcher.with trim: { side: :left }
@@ -46,7 +46,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
46
46
  expect(matcher.matches?(object)).to eq true
47
47
  end
48
48
 
49
- specify do
49
+ it do
50
50
  Normalizy.configure do |config|
51
51
  config.default_filters = :squish
52
52
  end
@@ -58,7 +58,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
58
58
  expect(matcher.matches?(object)).to eq true
59
59
  end
60
60
 
61
- specify do
61
+ it do
62
62
  Normalizy.configure do |config|
63
63
  config.default_filters = [:squish]
64
64
  end
@@ -70,7 +70,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
70
70
  expect(matcher.matches?(object)).to eq true
71
71
  end
72
72
 
73
- specify do
73
+ it do
74
74
  Normalizy.configure do |config|
75
75
  config.default_filters = [{ strip: { side: :left } }]
76
76
  end
@@ -82,7 +82,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
82
82
  expect(matcher.matches?(object)).to eq true
83
83
  end
84
84
 
85
- specify do
85
+ it do
86
86
  Normalizy.configure do |config|
87
87
  config.default_filters = :squish
88
88
  end
@@ -96,7 +96,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
96
96
  end
97
97
 
98
98
  context 'when .with is not called' do
99
- specify do
99
+ it do
100
100
  matcher = described_class.new(:alone)
101
101
 
102
102
  matcher.from '1'
@@ -105,7 +105,7 @@ RSpec.describe Normalizy::RSpec::Matcher, '.matches?' do
105
105
  expect(matcher.matches?(object)).to eq false
106
106
  end
107
107
 
108
- specify do
108
+ it do
109
109
  matcher = described_class.new(:downcase_field)
110
110
 
111
111
  matcher.from 'BOTELHO'
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: normalizy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Washington Botelho
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-31 00:00:00.000000000 Z
11
+ date: 2018-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -58,20 +58,6 @@ dependencies:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: rubocop
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '0'
75
61
  - !ruby/object:Gem::Dependency
76
62
  name: rubocop-rspec
77
63
  requirement: !ruby/object:Gem::Requirement
@@ -185,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
171
  version: '0'
186
172
  requirements: []
187
173
  rubyforge_project:
188
- rubygems_version: 2.7.4
174
+ rubygems_version: 2.7.7
189
175
  signing_key:
190
176
  specification_version: 4
191
177
  summary: Attribute normalizer for ActiveRecord.