russian_central_bank 0.2.0 → 0.2.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dbe7d78854c964ee285030b941ecf65ce0818d3d
4
+ data.tar.gz: 2543a1a59cbf247955bf79359b2b33c4de65c99d
5
+ SHA512:
6
+ metadata.gz: 2f521e9e52fed5250ee5a6d63e067fa04d683c5d0936b359b9b4ee315ba975b68774a1a78bc3eede6ba763ab72ab03cb06b90520b8101dd5284540e5f1cad6a7
7
+ data.tar.gz: 0beb519a6f5ca257034e5deb6c2053c3de229b64cfba6e2fa4fc9351bf7494a1c4a7295dfd07ed7fbe93c0466eee9274f6063a018dbf4d84775bd91c3ae972a9
@@ -26,6 +26,7 @@ class Money
26
26
 
27
27
  def set_rate(from, to, rate)
28
28
  @rates[rate_key_for(from, to)] = rate
29
+ @rates[rate_key_for(to, from)] = 1.0 / rate
29
30
  end
30
31
 
31
32
  def get_rate from, to
@@ -41,16 +42,19 @@ class Money
41
42
  end
42
43
 
43
44
  def exchange_rates(date)
44
- client = Savon::Client.new(wsdl: CBR_SERVICE_URL)
45
+ client = Savon::Client.new(wsdl: CBR_SERVICE_URL, log: false, log_level: :error)
45
46
  response = client.call(:get_curs_on_date, message: { 'On_date' => date.strftime('%Y-%m-%dT%H:%M:%S') })
46
47
  response.body[:get_curs_on_date_response][:get_curs_on_date_result][:diffgram][:valute_data][:valute_curs_on_date]
47
48
  end
48
49
 
49
50
  def update_parsed_rates rates
51
+ local_currencies = Money::Currency.table.map { |currency| currency.last[:iso_code] }
50
52
  add_rate('RUB', 'RUB', 1)
51
53
  rates.each do |rate|
52
54
  begin
53
- add_rate('RUB', rate[:vch_code], 1/ (rate[:vcurs].to_f / rate[:vnom].to_i))
55
+ if local_currencies.include? rate[:vch_code]
56
+ add_rate('RUB', rate[:vch_code], 1/ (rate[:vcurs].to_f / rate[:vnom].to_i))
57
+ end
54
58
  rescue Money::Currency::UnknownCurrency
55
59
  end
56
60
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'russian_central_bank'
7
- spec.version = '0.2.0'
7
+ spec.version = '0.2.1'
8
8
  spec.authors = ['Ramil Mustafin']
9
9
  spec.email = ['rommel.rmm@gmail.com']
10
10
  spec.description = 'RussianCentralBank extends Money::Bank::VariableExchange and gives you access to the Central Bank of Russia currency exchange rates.'
@@ -35,18 +35,34 @@ describe 'RussianCentralBank' do
35
35
  end
36
36
 
37
37
  describe '#get_rate' do
38
- before do
39
- @bank.flush_rates
40
- @bank.add_rate('RUB', 'USD', 0.03)
41
- @bank.add_rate('RUB', 'GBP', 0.02)
42
- end
38
+ context 'getting dicrect rates' do
39
+ before do
40
+ @bank.flush_rates
41
+ @bank.add_rate('RUB', 'USD', 0.03)
42
+ @bank.add_rate('RUB', 'GBP', 0.02)
43
+ end
43
44
 
44
- it 'should get rate from @rates' do
45
- @bank.get_rate('RUB', 'USD').should == 0.03
45
+ it 'should get rate from @rates' do
46
+ @bank.get_rate('RUB', 'USD').should == 0.03
47
+ end
48
+
49
+ it 'should calculate indirect rates' do
50
+ @bank.get_rate('USD', 'GBP').should == 0.6666666666666667
51
+ end
46
52
  end
47
53
 
48
- it 'should calculate indirect rates' do
49
- @bank.get_rate('USD', 'GBP').should == 0.6666666666666667
54
+ context 'getting indirect rate' do
55
+ let(:indirect_rate) { 4 }
56
+
57
+ before do
58
+ @bank.flush_rates
59
+ @bank.add_rate('RUB', 'USD', 123)
60
+ @bank.add_rate('USD', 'RUB', indirect_rate)
61
+ end
62
+
63
+ it 'gets indirect rate from the last set' do
64
+ expect(@bank.get_rate('RUB', 'USD')).to eq(1.0 / indirect_rate)
65
+ end
50
66
  end
51
67
  end
52
68
  end
metadata CHANGED
@@ -1,96 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: russian_central_bank
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.0
4
+ version: 0.2.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ramil Mustafin
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-11-15 00:00:00.000000000 Z
11
+ date: 2013-12-16 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
- version_requirements: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '1.3'
22
15
  requirement: !ruby/object:Gem::Requirement
23
- none: false
24
16
  requirements:
25
17
  - - ~>
26
18
  - !ruby/object:Gem::Version
27
19
  version: '1.3'
28
20
  type: :development
29
21
  prerelease: false
30
- - !ruby/object:Gem::Dependency
31
- name: rake
32
22
  version_requirements: !ruby/object:Gem::Requirement
33
- none: false
34
23
  requirements:
35
- - - ! '>='
24
+ - - ~>
36
25
  - !ruby/object:Gem::Version
37
- version: '0'
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
38
29
  requirement: !ruby/object:Gem::Requirement
39
- none: false
40
30
  requirements:
41
- - - ! '>='
31
+ - - '>='
42
32
  - !ruby/object:Gem::Version
43
33
  version: '0'
44
34
  type: :development
45
35
  prerelease: false
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
36
  version_requirements: !ruby/object:Gem::Requirement
49
- none: false
50
37
  requirements:
51
- - - ! '>='
38
+ - - '>='
52
39
  - !ruby/object:Gem::Version
53
- version: 2.0.0
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
54
43
  requirement: !ruby/object:Gem::Requirement
55
- none: false
56
44
  requirements:
57
- - - ! '>='
45
+ - - '>='
58
46
  - !ruby/object:Gem::Version
59
47
  version: 2.0.0
60
48
  type: :development
61
49
  prerelease: false
62
- - !ruby/object:Gem::Dependency
63
- name: money
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
- none: false
66
51
  requirements:
67
- - - ! '>='
52
+ - - '>='
68
53
  - !ruby/object:Gem::Version
69
- version: '5.0'
54
+ version: 2.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: money
70
57
  requirement: !ruby/object:Gem::Requirement
71
- none: false
72
58
  requirements:
73
- - - ! '>='
59
+ - - '>='
74
60
  - !ruby/object:Gem::Version
75
61
  version: '5.0'
76
62
  type: :runtime
77
63
  prerelease: false
78
- - !ruby/object:Gem::Dependency
79
- name: savon
80
64
  version_requirements: !ruby/object:Gem::Requirement
81
- none: false
82
65
  requirements:
83
- - - ~>
66
+ - - '>='
84
67
  - !ruby/object:Gem::Version
85
- version: '2.0'
68
+ version: '5.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: savon
86
71
  requirement: !ruby/object:Gem::Requirement
87
- none: false
88
72
  requirements:
89
73
  - - ~>
90
74
  - !ruby/object:Gem::Version
91
75
  version: '2.0'
92
76
  type: :runtime
93
77
  prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '2.0'
94
83
  description: RussianCentralBank extends Money::Bank::VariableExchange and gives you
95
84
  access to the Central Bank of Russia currency exchange rates.
96
85
  email:
@@ -113,31 +102,29 @@ files:
113
102
  homepage: http://github.com/rmustafin/russian_central_bank
114
103
  licenses:
115
104
  - MIT
105
+ metadata: {}
116
106
  post_install_message:
117
107
  rdoc_options: []
118
108
  require_paths:
119
109
  - lib
120
110
  required_ruby_version: !ruby/object:Gem::Requirement
121
- none: false
122
111
  requirements:
123
- - - ! '>='
112
+ - - '>='
124
113
  - !ruby/object:Gem::Version
125
114
  version: '0'
126
115
  required_rubygems_version: !ruby/object:Gem::Requirement
127
- none: false
128
116
  requirements:
129
- - - ! '>='
117
+ - - '>='
130
118
  - !ruby/object:Gem::Version
131
119
  version: '0'
132
120
  requirements: []
133
121
  rubyforge_project:
134
- rubygems_version: 1.8.25
122
+ rubygems_version: 2.0.3
135
123
  signing_key:
136
- specification_version: 3
124
+ specification_version: 4
137
125
  summary: Access to Central Bank of Russia currency exchange rates.
138
126
  test_files:
139
127
  - spec/russian_central_bank_spec.rb
140
128
  - spec/spec_helper.rb
141
129
  - spec/support/daily_rates.yml
142
130
  - spec/support/helpers.rb
143
- has_rdoc: