shopify-money 0.12.0 → 0.14.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/.travis.yml +2 -3
- data/Gemfile +2 -1
- data/README.md +20 -1
- data/Rakefile +1 -0
- data/bin/console +1 -0
- data/config/currency_iso.json +1 -1
- data/dev.yml +1 -1
- data/lib/money.rb +4 -0
- data/lib/money/allocator.rb +144 -0
- data/lib/money/core_extensions.rb +1 -0
- data/lib/money/currency.rb +1 -0
- data/lib/money/currency/loader.rb +1 -0
- data/lib/money/deprecations.rb +1 -0
- data/lib/money/errors.rb +1 -0
- data/lib/money/helpers.rb +5 -15
- data/lib/money/money.rb +8 -111
- data/lib/money/null_currency.rb +1 -0
- data/lib/money/version.rb +2 -1
- data/lib/money_accessor.rb +1 -0
- data/lib/money_column.rb +1 -0
- data/lib/money_column/active_record_hooks.rb +2 -1
- data/lib/money_column/active_record_type.rb +1 -0
- data/lib/money_column/railtie.rb +1 -0
- data/lib/rubocop/cop/money.rb +3 -0
- data/lib/rubocop/cop/money/missing_currency.rb +75 -0
- data/lib/shopify-money.rb +2 -0
- data/money.gemspec +7 -3
- data/spec/accounting_money_parser_spec.rb +1 -0
- data/spec/allocator_spec.rb +148 -0
- data/spec/core_extensions_spec.rb +2 -1
- data/spec/currency/loader_spec.rb +1 -0
- data/spec/currency_spec.rb +1 -0
- data/spec/helpers_spec.rb +1 -6
- data/spec/money_accessor_spec.rb +1 -0
- data/spec/money_column_spec.rb +1 -0
- data/spec/money_parser_spec.rb +1 -0
- data/spec/money_spec.rb +13 -96
- data/spec/null_currency_spec.rb +1 -0
- data/spec/rubocop/cop/money/missing_currency_spec.rb +108 -0
- data/spec/rubocop_helper.rb +10 -0
- data/spec/schema.rb +1 -0
- data/spec/spec_helper.rb +1 -5
- metadata +20 -24
data/spec/null_currency_spec.rb
CHANGED
@@ -0,0 +1,108 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../rubocop_helper'
|
4
|
+
require 'rubocop/cop/money/missing_currency'
|
5
|
+
|
6
|
+
RSpec.describe RuboCop::Cop::Money::MissingCurrency do
|
7
|
+
subject(:cop) { described_class.new(config) }
|
8
|
+
|
9
|
+
let(:config) { RuboCop::Config.new }
|
10
|
+
|
11
|
+
describe '#on_send' do
|
12
|
+
it 'registers an offense for Money.new without a currency argument' do
|
13
|
+
expect_offense(<<~RUBY)
|
14
|
+
Money.new(1)
|
15
|
+
^^^^^^^^^^^^ Money is missing currency argument
|
16
|
+
RUBY
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'does not register an offense for Money.new with currency argument' do
|
20
|
+
expect_no_offenses(<<~RUBY)
|
21
|
+
Money.new(1, 'CAD')
|
22
|
+
RUBY
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'registers an offense for Money.new without a currency argument' do
|
26
|
+
expect_offense(<<~RUBY)
|
27
|
+
Money.new
|
28
|
+
^^^^^^^^^ Money is missing currency argument
|
29
|
+
RUBY
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'registers an offense for Money.from_amount without a currency argument' do
|
33
|
+
expect_offense(<<~RUBY)
|
34
|
+
Money.from_amount(1)
|
35
|
+
^^^^^^^^^^^^^^^^^^^^ Money is missing currency argument
|
36
|
+
RUBY
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'does not register an offense for Money.from_amount with currency argument' do
|
40
|
+
expect_no_offenses(<<~RUBY)
|
41
|
+
Money.from_amount(1, 'CAD')
|
42
|
+
RUBY
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'registers an offense for Money.from_cents without a currency argument' do
|
46
|
+
expect_offense(<<~RUBY)
|
47
|
+
Money.from_cents(1)
|
48
|
+
^^^^^^^^^^^^^^^^^^^ Money is missing currency argument
|
49
|
+
RUBY
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'does not register an offense for Money.from_cents with currency argument' do
|
53
|
+
expect_no_offenses(<<~RUBY)
|
54
|
+
Money.from_cents(1, 'CAD')
|
55
|
+
RUBY
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'registers an offense for to_money without a currency argument' do
|
59
|
+
expect_offense(<<~RUBY)
|
60
|
+
'1'.to_money
|
61
|
+
^^^^^^^^^^^^ to_money is missing currency argument
|
62
|
+
RUBY
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'does not register an offense for to_money with currency argument' do
|
66
|
+
expect_no_offenses(<<~RUBY)
|
67
|
+
'1'.to_money('CAD')
|
68
|
+
RUBY
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'registers an offense for to_money block pass form' do
|
72
|
+
expect_offense(<<~RUBY)
|
73
|
+
['1'].map(&:to_money)
|
74
|
+
^^^^^^^^^^^^^^^^^^^^^ to_money is missing currency argument
|
75
|
+
RUBY
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#autocorrect' do
|
80
|
+
let(:config) do
|
81
|
+
RuboCop::Config.new(
|
82
|
+
'Money/MissingCurrency' => {
|
83
|
+
'ReplacementCurrency' => 'CAD'
|
84
|
+
}
|
85
|
+
)
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'corrects Money.new without currency' do
|
89
|
+
new_source = autocorrect_source('Money.new(1)')
|
90
|
+
expect(new_source).to eq("Money.new(1, 'CAD')")
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'corrects Money.new without amount or currency' do
|
94
|
+
new_source = autocorrect_source('Money.new')
|
95
|
+
expect(new_source).to eq("Money.new(0, 'CAD')")
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'corrects to_money without currency' do
|
99
|
+
new_source = autocorrect_source('1.to_money')
|
100
|
+
expect(new_source).to eq("1.to_money('CAD')")
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'corrects to_money block pass form' do
|
104
|
+
new_source = autocorrect_source("['1'].map(&:to_money)")
|
105
|
+
expect(new_source).to eq("['1'].map { |x| x.to_money('CAD') }")
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
data/spec/schema.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'simplecov'
|
2
3
|
SimpleCov.minimum_coverage 100
|
3
4
|
SimpleCov.start do
|
4
5
|
add_filter "/spec/"
|
5
6
|
end
|
6
7
|
|
7
|
-
if ENV['CI'] == 'true'
|
8
|
-
require 'codecov'
|
9
|
-
SimpleCov.formatter = SimpleCov::Formatter::Codecov
|
10
|
-
end
|
11
|
-
|
12
8
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
13
9
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
14
10
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shopify-money
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify Inc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '6.0'
|
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: '
|
54
|
+
version: '6.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,28 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.4.2
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: bigdecimal
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 1.3.2
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 1.3.2
|
96
|
+
version: 1.4.2
|
111
97
|
description: Manage money in Shopify with a class that wont lose pennies during division!
|
112
98
|
email: gems@shopify.com
|
113
99
|
executables:
|
@@ -131,6 +117,7 @@ files:
|
|
131
117
|
- dev.yml
|
132
118
|
- lib/money.rb
|
133
119
|
- lib/money/accounting_money_parser.rb
|
120
|
+
- lib/money/allocator.rb
|
134
121
|
- lib/money/core_extensions.rb
|
135
122
|
- lib/money/currency.rb
|
136
123
|
- lib/money/currency/loader.rb
|
@@ -146,8 +133,12 @@ files:
|
|
146
133
|
- lib/money_column/active_record_hooks.rb
|
147
134
|
- lib/money_column/active_record_type.rb
|
148
135
|
- lib/money_column/railtie.rb
|
136
|
+
- lib/rubocop/cop/money.rb
|
137
|
+
- lib/rubocop/cop/money/missing_currency.rb
|
138
|
+
- lib/shopify-money.rb
|
149
139
|
- money.gemspec
|
150
140
|
- spec/accounting_money_parser_spec.rb
|
141
|
+
- spec/allocator_spec.rb
|
151
142
|
- spec/core_extensions_spec.rb
|
152
143
|
- spec/currency/loader_spec.rb
|
153
144
|
- spec/currency_spec.rb
|
@@ -157,12 +148,15 @@ files:
|
|
157
148
|
- spec/money_parser_spec.rb
|
158
149
|
- spec/money_spec.rb
|
159
150
|
- spec/null_currency_spec.rb
|
151
|
+
- spec/rubocop/cop/money/missing_currency_spec.rb
|
152
|
+
- spec/rubocop_helper.rb
|
160
153
|
- spec/schema.rb
|
161
154
|
- spec/spec_helper.rb
|
162
155
|
homepage: https://github.com/Shopify/money
|
163
156
|
licenses:
|
164
157
|
- MIT
|
165
|
-
metadata:
|
158
|
+
metadata:
|
159
|
+
allowed_push_host: https://rubygems.org
|
166
160
|
post_install_message:
|
167
161
|
rdoc_options: []
|
168
162
|
require_paths:
|
@@ -171,20 +165,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
171
165
|
requirements:
|
172
166
|
- - ">="
|
173
167
|
- !ruby/object:Gem::Version
|
174
|
-
version: '
|
168
|
+
version: '2.6'
|
175
169
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
170
|
requirements:
|
177
171
|
- - ">="
|
178
172
|
- !ruby/object:Gem::Version
|
179
173
|
version: '0'
|
180
174
|
requirements: []
|
181
|
-
|
182
|
-
rubygems_version: 2.7.6
|
175
|
+
rubygems_version: 3.0.3
|
183
176
|
signing_key:
|
184
177
|
specification_version: 4
|
185
178
|
summary: Shopify's money gem
|
186
179
|
test_files:
|
187
180
|
- spec/accounting_money_parser_spec.rb
|
181
|
+
- spec/allocator_spec.rb
|
188
182
|
- spec/core_extensions_spec.rb
|
189
183
|
- spec/currency/loader_spec.rb
|
190
184
|
- spec/currency_spec.rb
|
@@ -194,5 +188,7 @@ test_files:
|
|
194
188
|
- spec/money_parser_spec.rb
|
195
189
|
- spec/money_spec.rb
|
196
190
|
- spec/null_currency_spec.rb
|
191
|
+
- spec/rubocop/cop/money/missing_currency_spec.rb
|
192
|
+
- spec/rubocop_helper.rb
|
197
193
|
- spec/schema.rb
|
198
194
|
- spec/spec_helper.rb
|