russian_central_bank 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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: