zold 0.14.49 → 0.14.50

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: b3a66103ede11237d2ccfcdd1ce46a4e59eedd713a601443440459677c7f665e
4
- data.tar.gz: 177d88b0030850e1d6848a7ef92b10873e23342b77f50ff2b2344c29dac4d99a
3
+ metadata.gz: c93f5cab672e8cda8e44e15b589f97d593486c089f4428487370835207087b00
4
+ data.tar.gz: 5a14a57fcf20345a21acb27086042dac6cb7df2abfb5b226bae85d6014cc9899
5
5
  SHA512:
6
- metadata.gz: 7d8ede15f27a062b31ffa705fc3ccf4f387a7884dd5d3b18527cb24b9d3baa1e31715420412a385f41d1f98735b3de7ff017218d5c21fec301fcc0f7e3a31a50
7
- data.tar.gz: c9d21059a4093c33677c81b1402b217ff8cbe1aff453f6682fc815681a938b584ae5b52d7b5ca5e7ec21f763aa96ec611fe66bee3c5d69cc360f93ee590ae1af
6
+ metadata.gz: 8f4ac2585a5eaf88260243cdad9326eaee19a8a5c7db6689a3bd0a1fd9ba69d466aa95a390f4937ec9ae3fa916c5cb72214a9d4d20ae563e9e4c2d65ff41e018
7
+ data.tar.gz: 992a00ef00711065ee79e191b3a1ac40d96c70e3074331298484a5a90f5f27170925c5420cac43b617aaabdc1a3712c5729a4d2ff452923faeec3e797c2a89bb
@@ -111,6 +111,10 @@ module Zold
111
111
  @coins.negative?
112
112
  end
113
113
 
114
+ def positive?
115
+ @coins.positive?
116
+ end
117
+
114
118
  def *(other)
115
119
  raise '* may only work with a number' unless other.is_a?(Integer) || other.is_a?(Float)
116
120
  c = (@coins * other).to_i
@@ -25,6 +25,6 @@
25
25
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
26
26
  # License:: MIT
27
27
  module Zold
28
- VERSION = '0.14.49'
28
+ VERSION = '0.14.50'
29
29
  PROTOCOL = 2
30
30
  end
@@ -130,7 +130,7 @@ module Zold
130
130
 
131
131
  def add(txn)
132
132
  raise 'The txn has to be of type Txn' unless txn.is_a?(Txn)
133
- dup = txns.find { |t| t.bnf == txn.bnf && t.id == txn.id }
133
+ dup = txns.find { |t| t.bnf == txn.bnf && t.id == txn.id && t.amount.negative? && txn.amount.negative? }
134
134
  raise "Wallet #{id} can't pay itself: #{txn}" if txn.bnf == id
135
135
  raise "The transaction with the same ID and BNF already exists in #{id}: #{dup}" unless dup.nil?
136
136
  raise "The tax payment already exists in #{id}: #{txn}" if Tax.new(self).exists?(txn.details)
@@ -47,6 +47,8 @@ class TestAmount < Minitest::Test
47
47
  def test_compares_with_zero
48
48
  amount = Zold::Amount.new(zld: 0.00001)
49
49
  assert(!amount.zero?)
50
+ assert(amount.positive?)
51
+ assert(!amount.negative?)
50
52
  assert(amount != Zold::Amount::ZERO)
51
53
  end
52
54
 
@@ -71,6 +71,18 @@ class TestWallet < Minitest::Test
71
71
  end
72
72
  end
73
73
 
74
+ def test_adds_similar_transaction
75
+ FakeHome.new.run do |home|
76
+ wallet = home.create_wallet
77
+ amount = Zold::Amount.new(zld: 39.99)
78
+ key = Zold::Key.new(file: 'fixtures/id_rsa')
79
+ id = Zold::Id.new
80
+ wallet.sub(amount, "NOPREFIX@#{id}", key)
81
+ wallet.add(Zold::Txn.new(1, Time.now, amount, 'NOPREFIX', id, '-'))
82
+ assert(wallet.balance.zero?)
83
+ end
84
+ end
85
+
74
86
  def test_refurbishes_wallet
75
87
  FakeHome.new.run do |home|
76
88
  wallet = home.create_wallet
@@ -54,7 +54,7 @@ and suggests a different architecture for digital wallet maintenance.'
54
54
  s.test_files = s.files.grep(%r{^(test|features)/})
55
55
  s.rdoc_options = ['--charset=UTF-8']
56
56
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
57
- s.add_runtime_dependency 'backtrace', '~>0.3'
57
+ s.add_runtime_dependency 'backtrace', '~>0'
58
58
  s.add_runtime_dependency 'cachy', '~>0.4'
59
59
  s.add_runtime_dependency 'concurrent-ruby', '~>1.0'
60
60
  s.add_runtime_dependency 'cucumber', '~>3.1' # has to stay here for Heroku
@@ -75,10 +75,10 @@ and suggests a different architecture for digital wallet maintenance.'
75
75
  s.add_runtime_dependency 'slop', '~>4.4'
76
76
  s.add_runtime_dependency 'sys-proctable', '~>1.1'
77
77
  s.add_runtime_dependency 'usagewatch_ext', '~>0.2'
78
- s.add_runtime_dependency 'xcop', '~>0.5'
78
+ s.add_runtime_dependency 'xcop', '~>0'
79
79
  s.add_development_dependency 'codecov', '~>0.1'
80
80
  s.add_development_dependency 'minitest', '~>5.11'
81
- s.add_development_dependency 'random-port', '~>0.1'
81
+ s.add_development_dependency 'random-port', '~>0'
82
82
  s.add_development_dependency 'rdoc', '~>4.2'
83
83
  s.add_development_dependency 'rspec-rails', '~>3.1'
84
84
  s.add_development_dependency 'webmock', '~>3.4'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.49
4
+ version: 0.14.50
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-15 00:00:00.000000000 Z
11
+ date: 2018-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.3'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.3'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cachy
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -310,14 +310,14 @@ dependencies:
310
310
  requirements:
311
311
  - - "~>"
312
312
  - !ruby/object:Gem::Version
313
- version: '0.5'
313
+ version: '0'
314
314
  type: :runtime
315
315
  prerelease: false
316
316
  version_requirements: !ruby/object:Gem::Requirement
317
317
  requirements:
318
318
  - - "~>"
319
319
  - !ruby/object:Gem::Version
320
- version: '0.5'
320
+ version: '0'
321
321
  - !ruby/object:Gem::Dependency
322
322
  name: codecov
323
323
  requirement: !ruby/object:Gem::Requirement
@@ -352,14 +352,14 @@ dependencies:
352
352
  requirements:
353
353
  - - "~>"
354
354
  - !ruby/object:Gem::Version
355
- version: '0.1'
355
+ version: '0'
356
356
  type: :development
357
357
  prerelease: false
358
358
  version_requirements: !ruby/object:Gem::Requirement
359
359
  requirements:
360
360
  - - "~>"
361
361
  - !ruby/object:Gem::Version
362
- version: '0.1'
362
+ version: '0'
363
363
  - !ruby/object:Gem::Dependency
364
364
  name: rdoc
365
365
  requirement: !ruby/object:Gem::Requirement