shopify-money 1.0.2.pre → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23562c524ba9f0d8219d01779505a75309d8825ed8f8839f1efdd71fbf5a1e89
4
- data.tar.gz: ca1b6ea90e7a556970d135bbebc74c9cf6eb417cd475607ef58923751e2969b3
3
+ metadata.gz: 2ee2b0d21b57f4ab542e863b1e4726ef3f6185968313750e2fcb5903a7c901b7
4
+ data.tar.gz: 331d13d263aa4d502229ec33c3dfb098dbfa8892e3e8dca4a74774fe434f0178
5
5
  SHA512:
6
- metadata.gz: 81f2eb5e04d1cf082cf3eaadd5d609d4abcdef1841d1dde9b2eee68c0b8e570b7c0c72dd0a2a05c7213b0c611a267a2b6fbca044d2a86711765aa91f8e2ea763
7
- data.tar.gz: cf7864860eb1fab370902861200b23150d08b1d135f614896a9c32fe20ea9e1edc7070563325c4a102a4af64c986c308892e13aefe9ad2590e4ac75d17f30a22
6
+ metadata.gz: 8e92eca63c1264797f09f09482ff0d02af00440f018c74a25341110f92db14d4ff105e25001f397c87b98241dadf0bd8eab6532f1faf01d7b1930bdef09038ce
7
+ data.tar.gz: a1bf291e6a87b3d356711f5852399869bdb6478d508a16c2bd8a23acdeb7a94eb7ed6a24a47d7506ae1219960a80c49fabfcbbb26c5f5d7c969978819af62c34
@@ -0,0 +1,22 @@
1
+ name: Contributor License Agreement (CLA)
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened, synchronize]
6
+ issue_comment:
7
+ types: [created]
8
+
9
+ jobs:
10
+ cla:
11
+ runs-on: ubuntu-latest
12
+ if: |
13
+ (github.event.issue.pull_request
14
+ && !github.event.issue.pull_request.merged_at
15
+ && contains(github.event.comment.body, 'signed')
16
+ )
17
+ || (github.event.pull_request && !github.event.pull_request.merged)
18
+ steps:
19
+ - uses: Shopify/shopify-cla-action@v1
20
+ with:
21
+ github-token: ${{ secrets.GITHUB_TOKEN }}
22
+ cla-token: ${{ secrets.CLA_TOKEN }}
@@ -9,7 +9,7 @@ jobs:
9
9
 
10
10
  strategy:
11
11
  matrix:
12
- ruby: ['2.6', '2.7', '3.0']
12
+ ruby: ['2.6', '2.7', '3.0', '3.1']
13
13
 
14
14
  name: Ruby ${{ matrix.ruby }}
15
15
  steps:
data/README.md CHANGED
@@ -115,8 +115,8 @@ Money::Currency.new("MGA").minor_units # => 1
115
115
  ## Money column
116
116
 
117
117
  Since money internally uses BigDecimal it's logical to use a `decimal` column
118
- (or `money` for PostgreSQL) for your database. The `money_column` method can
119
- generate methods for use with ActiveRecord:
118
+ for your database. The `money_column` method can generate methods for use with
119
+ ActiveRecord:
120
120
 
121
121
  ```ruby
122
122
  create_table :orders do |t|
data/lib/money/money.rb CHANGED
@@ -124,14 +124,14 @@ class Money
124
124
 
125
125
  def +(other)
126
126
  arithmetic(other) do |money|
127
- return self if money.value == 0 && !no_currency?
127
+ return self if money.value.zero? && !no_currency?
128
128
  Money.new(value + money.value, calculated_currency(money.currency))
129
129
  end
130
130
  end
131
131
 
132
132
  def -(other)
133
133
  arithmetic(other) do |money|
134
- return self if money.value == 0 && !no_currency?
134
+ return self if money.value.zero? && !no_currency?
135
135
  Money.new(value - money.value, calculated_currency(money.currency))
136
136
  end
137
137
  end
@@ -4,7 +4,7 @@ class Money
4
4
  module Rails
5
5
  class JobArgumentSerializer < ::ActiveJob::Serializers::ObjectSerializer
6
6
  def serialize(money)
7
- super("value" => money.value, "currency" => money.currency.iso_code)
7
+ super("value" => money.value.to_s("F"), "currency" => money.currency.iso_code)
8
8
  end
9
9
 
10
10
  def deserialize(hash)
data/lib/money/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  class Money
3
- VERSION = "1.0.2.pre"
3
+ VERSION = "1.1.0"
4
4
  end
@@ -80,7 +80,7 @@ RSpec.describe "Currency" do
80
80
  describe "#hash" do
81
81
  specify "equal currencies from different loaders have the same hash" do
82
82
  currency_1 = Money::Currency.find('USD')
83
- currency_2 = YAML.load(Money::Currency.find('USD').to_yaml)
83
+ currency_2 = yaml_load(Money::Currency.find('USD').to_yaml)
84
84
 
85
85
  expect(currency_1.eql?(currency_2)).to eq(true)
86
86
  expect(currency_1.hash).to eq(currency_2.hash)
data/spec/money_spec.rb CHANGED
@@ -846,17 +846,17 @@ RSpec.describe "Money" do
846
846
 
847
847
  describe "YAML deserialization" do
848
848
  it "accepts values with currencies" do
849
- money = YAML.load("--- !ruby/object:Money\nvalue: '750.0'\ncurrency: USD\n")
849
+ money = yaml_load("--- !ruby/object:Money\nvalue: '750.0'\ncurrency: USD\n")
850
850
  expect(money).to eq(Money.new(750, 'usd'))
851
851
  end
852
852
 
853
853
  it "accepts values with null currencies" do
854
- money = YAML.load("--- !ruby/object:Money\nvalue: '750.0'\ncurrency: XXX\n")
854
+ money = yaml_load("--- !ruby/object:Money\nvalue: '750.0'\ncurrency: XXX\n")
855
855
  expect(money).to eq(Money.new(750))
856
856
  end
857
857
 
858
858
  it "accepts serialized NullCurrency objects" do
859
- money = YAML.load(<<~EOS)
859
+ money = yaml_load(<<~EOS)
860
860
  ---
861
861
  !ruby/object:Money
862
862
  currency: !ruby/object:Money::NullCurrency
@@ -879,7 +879,7 @@ RSpec.describe "Money" do
879
879
  end
880
880
 
881
881
  it "accepts BigDecimal values" do
882
- money = YAML.load(<<~EOS)
882
+ money = yaml_load(<<~EOS)
883
883
  ---
884
884
  !ruby/object:Money
885
885
  value: !ruby/object:BigDecimal 18:0.75E3
@@ -890,7 +890,7 @@ RSpec.describe "Money" do
890
890
  end
891
891
 
892
892
  it "accepts old float values..." do
893
- money = YAML.load(<<~EOS)
893
+ money = yaml_load(<<~EOS)
894
894
  ---
895
895
  !ruby/object:Money
896
896
  value: 750.00
@@ -9,7 +9,7 @@ RSpec.describe Money::Rails::JobArgumentSerializer do
9
9
  serialized_job = job.serialize
10
10
  serialized_value = serialized_job["arguments"][0]["value"]
11
11
  expect(serialized_value["_aj_serialized"]).to eq("Money::Rails::JobArgumentSerializer")
12
- expect(serialized_value["value"]).to eq(BigDecimal("10.21"))
12
+ expect(serialized_value["value"]).to eq("10.21")
13
13
  expect(serialized_value["currency"]).to eq("BRL")
14
14
 
15
15
  job2 = MoneyTestJob.deserialize(serialized_job)
data/spec/spec_helper.rb CHANGED
@@ -83,3 +83,9 @@ def configure(default_currency: nil, legacy_json_format: nil, legacy_deprecation
83
83
  ensure
84
84
  Money.config = old_config
85
85
  end
86
+
87
+ def yaml_load(yaml)
88
+ return YAML.load(yaml) if Psych::VERSION < '4.0'
89
+
90
+ YAML.safe_load(yaml, permitted_classes: [BigDecimal, Money, Money::Currency, Money::NullCurrency])
91
+ end
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: 1.0.2.pre
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-17 00:00:00.000000000 Z
11
+ date: 2023-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -102,7 +102,7 @@ extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
104
  - ".document"
105
- - ".github/probots.yml"
105
+ - ".github/workflows/cla.yml"
106
106
  - ".github/workflows/tests.yml"
107
107
  - ".gitignore"
108
108
  - ".rspec"
@@ -179,11 +179,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
179
  version: '2.6'
180
180
  required_rubygems_version: !ruby/object:Gem::Requirement
181
181
  requirements:
182
- - - ">"
182
+ - - ">="
183
183
  - !ruby/object:Gem::Version
184
- version: 1.3.1
184
+ version: '0'
185
185
  requirements: []
186
- rubygems_version: 3.2.20
186
+ rubygems_version: 3.3.3
187
187
  signing_key:
188
188
  specification_version: 4
189
189
  summary: Shopify's money gem
data/.github/probots.yml DELETED
@@ -1,2 +0,0 @@
1
- enabled:
2
- - cla