EGP_Rates 0.3.0 → 1.0.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.
@@ -1,5 +1,83 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:disable RSpec/EmptyExampleGroup
3
2
  describe EGPRates do
3
+ describe '.exchange_rates' do
4
+ # rubocop:disable RSpec/VerifiedDoubles
5
+ context 'all Banks' do
6
+ let(:bank) { double(EGPRates::Bank) }
7
+
8
+ it 'calls #exchange_rates on all Bank Classes' do
9
+ expect(described_class).to receive(:const_get).exactly(20).times
10
+ .and_return bank
11
+ expect(bank).to receive(:new).exactly(20).times.and_return bank
12
+ expect(bank).to receive(:exchange_rates).exactly(20).times
13
+
14
+ described_class.exchange_rates
15
+ end
16
+ end
17
+ # rubocop:enable RSpec/VerifiedDoubles
18
+
19
+ context '1 Bank' do
20
+ before { allow(described_class).to receive(:constants).and_return [:CBE] }
21
+
22
+ it 'returns [Hash] of exchange_rates', vcr: { cassette_name: :CBE } do
23
+ exchange_rates = described_class.exchange_rates
24
+
25
+ expect(exchange_rates).to include(:CBE)
26
+ expect(exchange_rates[:CBE]).to include(:buy, :sell)
27
+ expect(exchange_rates[:CBE][:buy].size).to eq 9
28
+ expect(exchange_rates[:CBE][:sell].size).to eq 9
29
+ end
30
+
31
+ it 'returns [Hash] of Bank: "Failed to get exchange rates"', :no_vcr do
32
+ stub_request(:get, /.*/).to_return(body: '', status: 500)
33
+
34
+ exchange_rates = described_class.exchange_rates
35
+ expect(exchange_rates).to match(CBE: 'Failed to get exchange rates')
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '.exchange_rate(:SYM, cache_result)' do
41
+ before do
42
+ described_class.instance_variable_set(:@exchange_rates, nil)
43
+ allow(described_class).to receive(:constants).and_return [:NBE]
44
+ end
45
+
46
+ context 'cache_result = true' do
47
+ it 'calls .exchange_rates once' do
48
+ expect(described_class).to receive(:exchange_rates).once.and_return({})
49
+
50
+ described_class.exchange_rate(:USD)
51
+ described_class.exchange_rate(:USD)
52
+ end
53
+
54
+ it 'calls .exchange_rates twice' do
55
+ expect(described_class).to receive(:exchange_rates).twice.and_return({})
56
+
57
+ described_class.exchange_rate(:USD)
58
+ described_class.exchange_rate(:USD, false)
59
+ end
60
+
61
+ it 'returns [Hash] of Bank: "Failed to get exchange rates"', :no_vcr do
62
+ stub_request(:get, /.*/).to_return(body: '', status: 500)
63
+
64
+ exchange_rate = described_class.exchange_rate(:USD)
65
+ expect(exchange_rate).to match(NBE: 'Failed to get exchange rates')
66
+ end
67
+
68
+ it 'returns [Hash] of Bank: { sell: rate, buy: rate }',
69
+ vcr: { cassette_name: :NBE } do
70
+ exchange_rate = described_class.exchange_rate(:USD)
71
+ expect(exchange_rate).to match(NBE: { sell: 16.05, buy: 15.9 })
72
+ end
73
+
74
+ it 'returns [Hash] of Bank: { sell: "Not Available" ... }',
75
+ vcr: { cassette_name: :NBE } do
76
+ exchange_rate = described_class.exchange_rate(:SYM)
77
+ expect(exchange_rate).to match(
78
+ NBE: { sell: 'Not Available', buy: 'Not Available' }
79
+ )
80
+ end
81
+ end
82
+ end
4
83
  end
5
- # rubocop:enable RSpec/EmptyExampleGroup
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: EGP_Rates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmed Abdel-Razzak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-20 00:00:00.000000000 Z
11
+ date: 2016-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -173,43 +173,64 @@ extra_rdoc_files: []
173
173
  files:
174
174
  - lib/egp_rates.rb
175
175
  - lib/egp_rates/aaib.rb
176
+ - lib/egp_rates/adib.rb
176
177
  - lib/egp_rates/al_ahli_bank_of_kuwait.rb
177
178
  - lib/egp_rates/al_baraka_bank.rb
179
+ - lib/egp_rates/alex_bank.rb
178
180
  - lib/egp_rates/bank.rb
179
181
  - lib/egp_rates/banque_du_caire.rb
180
182
  - lib/egp_rates/banque_misr.rb
183
+ - lib/egp_rates/blom.rb
181
184
  - lib/egp_rates/cae.rb
182
185
  - lib/egp_rates/cbe.rb
183
186
  - lib/egp_rates/cib.rb
187
+ - lib/egp_rates/edbe.rb
188
+ - lib/egp_rates/egb.rb
189
+ - lib/egp_rates/faisal_bank.rb
184
190
  - lib/egp_rates/midb.rb
185
191
  - lib/egp_rates/nbe.rb
192
+ - lib/egp_rates/nbg.rb
186
193
  - lib/egp_rates/saib.rb
187
194
  - lib/egp_rates/suez_canal_bank.rb
188
195
  - lib/egp_rates/ube.rb
189
196
  - spec/cassettes/AAIB.yml
197
+ - spec/cassettes/ADIB.yml
190
198
  - spec/cassettes/AlAhliBankOfKuwait.yml
191
199
  - spec/cassettes/AlBarakaBank.yml
200
+ - spec/cassettes/AlexBank.yml
192
201
  - spec/cassettes/BanqueDuCaire.yml
193
202
  - spec/cassettes/BanqueMisr.yml
203
+ - spec/cassettes/Blom.yml
194
204
  - spec/cassettes/CAE.yml
195
205
  - spec/cassettes/CBE.yml
196
206
  - spec/cassettes/CIB.yml
207
+ - spec/cassettes/EDBE.yml
208
+ - spec/cassettes/EGB.yml
209
+ - spec/cassettes/FaisalBank.yml
197
210
  - spec/cassettes/MIDB.yml
198
211
  - spec/cassettes/NBE.yml
212
+ - spec/cassettes/NBG.yml
199
213
  - spec/cassettes/SAIB.yml
200
214
  - spec/cassettes/SuezCanalBank.yml
201
215
  - spec/cassettes/UBE.yml
202
216
  - spec/egp_rates/aaib_spec.rb
217
+ - spec/egp_rates/adib_spec.rb
203
218
  - spec/egp_rates/al_ahli_bank_of_kuwait_spec.rb
204
219
  - spec/egp_rates/al_baraka_bank_spec.rb
220
+ - spec/egp_rates/alex_bank_spec.rb
205
221
  - spec/egp_rates/bank_spec.rb
206
222
  - spec/egp_rates/banque_du_caire_spec.rb
207
223
  - spec/egp_rates/banque_misr_spec.rb
224
+ - spec/egp_rates/blom_spec.rb
208
225
  - spec/egp_rates/cae_spec.rb
209
226
  - spec/egp_rates/cbe_spec.rb
210
227
  - spec/egp_rates/cib_spec.rb
228
+ - spec/egp_rates/edbe_spec.rb
229
+ - spec/egp_rates/egb_spec.rb
230
+ - spec/egp_rates/faisal_bank_spec.rb
211
231
  - spec/egp_rates/midb_spec.rb
212
232
  - spec/egp_rates/nbe_spec.rb
233
+ - spec/egp_rates/nbg_spec.rb
213
234
  - spec/egp_rates/saib_spec.rb
214
235
  - spec/egp_rates/suez_canal_bank_spec.rb
215
236
  - spec/egp_rates/ube_spec.rb