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.
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+ describe EGPRates::ADIB do
3
+ subject(:bank) { described_class.new }
4
+
5
+ it 'Live Testing', :live do
6
+ expect(bank.exchange_rates).to include(:buy, :sell)
7
+ expect(bank.exchange_rates[:buy].size).to eq 5
8
+ expect(bank.exchange_rates[:sell].size).to eq 5
9
+ expect(bank.exchange_rates[:buy].keys).to include(
10
+ :AED, :EUR, :GBP, :SAR, :USD
11
+ )
12
+ expect(bank.exchange_rates[:sell].keys).to include(
13
+ :AED, :EUR, :GBP, :SAR, :USD
14
+ )
15
+ end
16
+
17
+ describe '.new' do
18
+ it 'initialize instance variables' do
19
+ expect(bank.sym).to eq :ADIB
20
+ expect(bank.instance_variable_get(:@uri)).to be_a URI
21
+ end
22
+ end
23
+
24
+ describe '#exchange_rates' do
25
+ it 'calls #parse with #raw_exchange_rates' do
26
+ expect(bank).to receive(:raw_exchange_rates)
27
+ expect(bank).to receive(:parse)
28
+ bank.exchange_rates
29
+ end
30
+ end
31
+
32
+ describe '#raw_exchange_rates' do
33
+ it 'raises ResponseError unless Net::HTTPSuccess', :no_vcr do
34
+ stub_request(:get, /.*adib.*/).to_return(body: '', status: 500)
35
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
36
+ EGPRates::ResponseError, '500'
37
+ end
38
+
39
+ it 'raises ResponseError if HTML structure changed', :no_vcr do
40
+ stub_request(:get, /.*adib.*/).to_return(body: '', status: 200)
41
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
42
+ EGPRates::ResponseError, 'Unknown HTML'
43
+ end
44
+
45
+ it 'returns <#Enumerator::Lazy> of 5 rows', vcr: { cassette_name: :ADIB } do
46
+ lazy_enumerator = bank.send(:raw_exchange_rates)
47
+ expect(lazy_enumerator).to be_a Enumerator::Lazy
48
+ expect(lazy_enumerator.size).to eq 5
49
+ end
50
+ end
51
+
52
+ describe '#parse', vcr: { cassette_name: :ADIB } do
53
+ let(:raw_data) { bank.send(:raw_exchange_rates) }
54
+
55
+ it 'returns sell: hash of selling prices' do
56
+ expect(bank.send(:parse, raw_data)[:sell]).to match(
57
+ AED: 4.7646,
58
+ EUR: 18.6235,
59
+ GBP: 21.763,
60
+ SAR: 4.6669,
61
+ USD: 17.5
62
+ )
63
+ end
64
+
65
+ it 'returns buy: hash of buying prices' do
66
+ expect(bank.send(:parse, raw_data)[:buy]).to match(
67
+ AED: 4.6284,
68
+ EUR: 17.9639,
69
+ GBP: 20.9049,
70
+ SAR: 4.5325,
71
+ USD: 17.0
72
+ )
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+ describe EGPRates::AlexBank do
3
+ subject(:bank) { described_class.new }
4
+
5
+ it 'Live Testing', :live do
6
+ expect(bank.exchange_rates).to include(:buy, :sell)
7
+ expect(bank.exchange_rates[:buy].size).to eq 17
8
+ expect(bank.exchange_rates[:sell].size).to eq 17
9
+ end
10
+
11
+ describe '.new' do
12
+ it 'initialize instance variables' do
13
+ expect(bank.sym).to eq :AlexBank
14
+ expect(bank.instance_variable_get(:@uri)).to be_a URI
15
+ end
16
+ end
17
+
18
+ describe '#exchange_rates' do
19
+ it 'calls #parse with #raw_exchange_rates' do
20
+ expect(bank).to receive(:raw_exchange_rates)
21
+ expect(bank).to receive(:parse)
22
+ bank.exchange_rates
23
+ end
24
+ end
25
+
26
+ describe '#raw_exchange_rates' do
27
+ it 'raises ResponseError unless Net::HTTPSuccess', :no_vcr do
28
+ stub_request(:get, /.*alexbank.*/).to_return(body: '', status: 500)
29
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
30
+ EGPRates::ResponseError, '500'
31
+ end
32
+
33
+ it 'raises ResponseError if HTML structure changed', :no_vcr do
34
+ stub_request(:get, /.*alexbank.*/).to_return(body: '', status: 200)
35
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
36
+ EGPRates::ResponseError, 'Unknown HTML'
37
+ end
38
+
39
+ it 'returns <#Enumerator::Lazy> of 17 rows',
40
+ vcr: { cassette_name: :AlexBank } do
41
+ lazy_enumerator = bank.send(:raw_exchange_rates)
42
+ expect(lazy_enumerator).to be_a Enumerator::Lazy
43
+ expect(lazy_enumerator.size).to eq 17
44
+ end
45
+ end
46
+
47
+ describe '#currency_symbol' do
48
+ %W(#{'UAE Dirham'} Australian Bahraini Canadian Swidish Danish Euro
49
+ Japanese Swiss British Jordanian Kuwaiti Norwegian Omani Qatari Saudi
50
+ #{'US Dollar'})
51
+ .each do |currency|
52
+ it "returns currency :SYM for #{currency}" do
53
+ symbols = %i(USD AUD BHD GBP CAD DKK AED EUR CHF SEK JPY JOD NOK OMR QAR
54
+ SAR KWD)
55
+ expect(symbols).to include(bank.send(:currency_symbol, currency))
56
+ end
57
+ end
58
+
59
+ it 'raises ResponseError when Unknown Currency' do
60
+ expect { bank.send(:currency_symbol, 'EGYPTIAN POUND') }.to raise_error\
61
+ EGPRates::ResponseError, 'Unknown currency EGYPTIAN POUND'
62
+ end
63
+ end
64
+
65
+ describe '#parse', vcr: { cassette_name: :AlexBank } do
66
+ let(:raw_data) { bank.send(:raw_exchange_rates) }
67
+
68
+ it 'returns sell: hash of selling prices' do
69
+ expect(bank.send(:parse, raw_data)[:sell]).to match(
70
+ AED: 4.7695,
71
+ AUD: 12.9845,
72
+ BHD: 0.0,
73
+ CAD: 12.97269,
74
+ CHF: 17.3969,
75
+ DKK: 2.50636,
76
+ EUR: 18.6235,
77
+ GBP: 21.60025,
78
+ JOD: 0.0,
79
+ JPY: 15.77035,
80
+ KWD: 57.6647,
81
+ NOK: 2.05232,
82
+ OMR: 0.0,
83
+ QAR: 0.0,
84
+ SAR: 4.6708,
85
+ SEK: 1.89671,
86
+ USD: 17.5
87
+ )
88
+ end
89
+
90
+ it 'returns buy: hash of buying prices' do
91
+ expect(bank.send(:parse, raw_data)[:buy]).to match(
92
+ AED: 4.63547,
93
+ AUD: 12.53601,
94
+ BHD: 0.0,
95
+ CAD: 12.6069,
96
+ CHF: 16.89056,
97
+ DKK: 2.42936,
98
+ EUR: 18.0747,
99
+ GBP: 21.12363,
100
+ JOD: 0.0,
101
+ JPY: 15.41791,
102
+ KWD: 55.58396,
103
+ NOK: 1.98636,
104
+ OMR: 0.0,
105
+ QAR: 0.0,
106
+ SAR: 4.54476,
107
+ SEK: 1.84222,
108
+ USD: 17.1
109
+ )
110
+ end
111
+ end
112
+ end
@@ -78,7 +78,7 @@ describe EGPRates::BanqueMisr do
78
78
  AUD: 12.1317,
79
79
  BHD: 42.1928,
80
80
  CAD: 11.8178,
81
- CHF: 1.7622,
81
+ CHF: 16.1754,
82
82
  DKK: 2.334,
83
83
  EUR: 17.3698,
84
84
  GBP: 20.1527,
@@ -89,7 +89,7 @@ describe EGPRates::BanqueMisr do
89
89
  OMR: 41.3147,
90
90
  QAR: 4.3677,
91
91
  SAR: 4.24,
92
- SEK: 16.1754,
92
+ SEK: 1.7622,
93
93
  USD: 15.91
94
94
  )
95
95
  end
@@ -100,7 +100,7 @@ describe EGPRates::BanqueMisr do
100
100
  AUD: 11.5524,
101
101
  BHD: 40.6957,
102
102
  CAD: 11.3309,
103
- CHF: 1.6843,
103
+ CHF: 15.5129,
104
104
  DKK: 2.2338,
105
105
  EUR: 16.6256,
106
106
  GBP: 19.2289,
@@ -111,7 +111,7 @@ describe EGPRates::BanqueMisr do
111
111
  OMR: 39.8339,
112
112
  QAR: 4.2154,
113
113
  SAR: 4.0927,
114
- SEK: 15.5129,
114
+ SEK: 1.6843,
115
115
  USD: 15.35
116
116
  )
117
117
  end
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+ describe EGPRates::Blom do
3
+ subject(:bank) { described_class.new }
4
+
5
+ it 'Live Testing', :live do
6
+ expect(bank.exchange_rates).to include(:buy, :sell)
7
+ expect(bank.exchange_rates[:buy].size).to eq 14
8
+ expect(bank.exchange_rates[:sell].size).to eq 14
9
+ end
10
+
11
+ describe '.new' do
12
+ it 'initialize instance variables' do
13
+ expect(bank.sym).to eq :Blom
14
+ expect(bank.instance_variable_get(:@uri)).to be_a URI
15
+ end
16
+ end
17
+
18
+ describe '#exchange_rates' do
19
+ it 'calls #parse with #raw_exchange_rates' do
20
+ expect(bank).to receive(:raw_exchange_rates)
21
+ expect(bank).to receive(:parse)
22
+ bank.exchange_rates
23
+ end
24
+ end
25
+
26
+ describe '#raw_exchange_rates' do
27
+ it 'raises ResponseError unless Net::HTTPSuccess', :no_vcr do
28
+ stub_request(:get, /.*blom.*/).to_return(body: '', status: 500)
29
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
30
+ EGPRates::ResponseError, '500'
31
+ end
32
+
33
+ it 'raises ResponseError if HTML structure changed', :no_vcr do
34
+ stub_request(:get, /.*blom.*/).to_return(body: '', status: 200)
35
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
36
+ EGPRates::ResponseError, 'Unknown HTML'
37
+ end
38
+
39
+ it 'returns <#Enumerator::Lazy> of 14 rows',
40
+ vcr: { cassette_name: :Blom } do
41
+ lazy_enumerator = bank.send(:raw_exchange_rates)
42
+ expect(lazy_enumerator).to be_a Enumerator::Lazy
43
+ expect(lazy_enumerator.size).to eq 14
44
+ end
45
+ end
46
+
47
+ describe '#parse', vcr: { cassette_name: :Blom } do
48
+ let(:raw_data) { bank.send(:raw_exchange_rates) }
49
+
50
+ it 'returns sell: hash of selling prices' do
51
+ expect(bank.send(:parse, raw_data)[:sell]).to match(
52
+ AED: 4.8324,
53
+ BHD: 0.0,
54
+ CAD: 13.155,
55
+ CHF: 17.6424,
56
+ DKK: 2.5391,
57
+ EUR: 18.8896,
58
+ GBP: 22.0739,
59
+ JPY: 16.1643,
60
+ KWD: 58.3498,
61
+ NOK: 2.0786,
62
+ QAR: 0.0,
63
+ SAR: 4.7326,
64
+ SEK: 1.9238,
65
+ USD: 17.75
66
+ )
67
+ end
68
+
69
+ it 'returns buy: hash of buying prices' do
70
+ expect(bank.send(:parse, raw_data)[:buy]).to match(
71
+ AED: 4.6284,
72
+ BHD: 0.0,
73
+ CAD: 12.5332,
74
+ CHF: 16.7918,
75
+ DKK: 2.4152,
76
+ EUR: 17.969,
77
+ GBP: 20.9151,
78
+ JPY: 15.3236,
79
+ KWD: 55.8292,
80
+ NOK: 1.9747,
81
+ QAR: 0.0,
82
+ SAR: 4.5322,
83
+ SEK: 1.8314,
84
+ USD: 17.0
85
+ )
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+ describe EGPRates::EDBE do
3
+ subject(:bank) { described_class.new }
4
+
5
+ it 'Live Testing', :live do
6
+ expect(bank.exchange_rates).to include(:buy, :sell)
7
+ expect(bank.exchange_rates[:buy].size).to eq 5
8
+ expect(bank.exchange_rates[:sell].size).to eq 5
9
+ end
10
+
11
+ describe '.new' do
12
+ it 'initialize instance variables' do
13
+ expect(bank.sym).to eq :EDBE
14
+ expect(bank.instance_variable_get(:@uri)).to be_a URI
15
+ end
16
+ end
17
+
18
+ describe '#exchange_rates' do
19
+ it 'calls #parse with #raw_exchange_rates' do
20
+ expect(bank).to receive(:raw_exchange_rates)
21
+ expect(bank).to receive(:parse)
22
+ bank.exchange_rates
23
+ end
24
+ end
25
+
26
+ describe '#raw_exchange_rates' do
27
+ it 'raises ResponseError unless Net::HTTPSuccess', :no_vcr do
28
+ stub_request(:get, /.*edbebank.*/).to_return(body: '', status: 500)
29
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
30
+ EGPRates::ResponseError, '500'
31
+ end
32
+
33
+ it 'raises ResponseError if HTML structure changed', :no_vcr do
34
+ stub_request(:get, /.*edbebank.*/).to_return(body: '', status: 200)
35
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
36
+ EGPRates::ResponseError, 'Unknown HTML'
37
+ end
38
+
39
+ it 'returns <#Array> of 20 values', vcr: { cassette_name: :EDBE } do
40
+ lazy_enumerator = bank.send(:raw_exchange_rates)
41
+ expect(lazy_enumerator).to be_a Array
42
+ expect(lazy_enumerator.size).to eq 20
43
+ end
44
+ end
45
+
46
+ describe '#parse', vcr: { cassette_name: :EDBE } do
47
+ let(:raw_data) { bank.send(:raw_exchange_rates) }
48
+
49
+ it 'returns sell: hash of selling prices' do
50
+ expect(bank.send(:parse, raw_data)[:sell]).to match(
51
+ CHF: 17.6032,
52
+ EUR: 18.8363,
53
+ GBP: 22.0117,
54
+ JPY: 16.1261,
55
+ USD: 17.7
56
+ )
57
+ end
58
+
59
+ it 'returns buy: hash of buying prices' do
60
+ expect(bank.send(:parse, raw_data)[:buy]).to match(
61
+ CHF: 17.0387,
62
+ EUR: 18.2281,
63
+ GBP: 21.2123,
64
+ JPY: 15.5489,
65
+ USD: 17.25
66
+ )
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+ describe EGPRates::EGB do
3
+ subject(:bank) { described_class.new }
4
+
5
+ it 'Live Testing', :live do
6
+ expect(bank.exchange_rates).to include(:buy, :sell)
7
+ expect(bank.exchange_rates[:buy].size).to eq 17
8
+ expect(bank.exchange_rates[:sell].size).to eq 17
9
+ end
10
+
11
+ describe '.new' do
12
+ it 'initialize instance variables' do
13
+ expect(bank.sym).to eq :EGB
14
+ expect(bank.instance_variable_get(:@uri)).to be_a URI
15
+ end
16
+ end
17
+
18
+ describe '#exchange_rates' do
19
+ it 'calls #parse with #raw_exchange_rates' do
20
+ expect(bank).to receive(:raw_exchange_rates)
21
+ expect(bank).to receive(:parse)
22
+ bank.exchange_rates
23
+ end
24
+ end
25
+
26
+ describe '#raw_exchange_rates' do
27
+ it 'raises ResponseError unless Net::HTTPSuccess', :no_vcr do
28
+ stub_request(:get, /.*eg-bank.*/).to_return(body: '', status: 500)
29
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
30
+ EGPRates::ResponseError, '500'
31
+ end
32
+
33
+ it 'raises ResponseError if HTML structure changed', :no_vcr do
34
+ stub_request(:get, /.*eg-bank.*/).to_return(body: '', status: 200)
35
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
36
+ EGPRates::ResponseError, 'Unknown HTML'
37
+ end
38
+
39
+ it 'returns <#Enumerator::Lazy> of 17 rows', vcr: { cassette_name: :EGB } do
40
+ lazy_enumerator = bank.send(:raw_exchange_rates)
41
+ expect(lazy_enumerator).to be_a Enumerator::Lazy
42
+ expect(lazy_enumerator.size).to eq 17
43
+ end
44
+ end
45
+
46
+ describe '#parse', vcr: { cassette_name: :EGB } do
47
+ let(:raw_data) { bank.send(:raw_exchange_rates) }
48
+
49
+ it 'returns sell: hash of selling prices' do
50
+ expect(bank.send(:parse, raw_data)[:sell]).to match(
51
+ AED: 4.8326,
52
+ AUD: 13.167,
53
+ BHD: 47.0822,
54
+ CAD: 13.1598,
55
+ CHF: 17.6529,
56
+ DKK: 2.5395,
57
+ EUR: 18.8896,
58
+ GBP: 22.0739,
59
+ JOD: 25.0706,
60
+ JPY: 0.1617,
61
+ KWD: 58.2349,
62
+ NOK: 2.0809,
63
+ OMR: 46.1159,
64
+ QAR: 4.8753,
65
+ SAR: 4.7327,
66
+ SEK: 1.9245,
67
+ USD: 17.75
68
+ )
69
+ end
70
+
71
+ it 'returns buy: hash of buying prices' do
72
+ expect(bank.send(:parse, raw_data)[:buy]).to match(
73
+ AED: 4.6281,
74
+ AUD: 12.4525,
75
+ BHD: 45.0689,
76
+ CAD: 12.5332,
77
+ CHF: 16.7918,
78
+ DKK: 2.4152,
79
+ EUR: 17.9639,
80
+ GBP: 20.9049,
81
+ JOD: 23.9437,
82
+ JPY: 0.1532,
83
+ KWD: 55.756,
84
+ NOK: 1.9747,
85
+ OMR: 44.1558,
86
+ QAR: 4.6685,
87
+ SAR: 4.5325,
88
+ SEK: 1.8314,
89
+ USD: 17.0
90
+ )
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+ describe EGPRates::FaisalBank do
3
+ subject(:bank) { described_class.new }
4
+
5
+ it 'Live Testing', :live do
6
+ expect(bank.exchange_rates).to include(:buy, :sell)
7
+ expect(bank.exchange_rates[:buy].size).to eq 13
8
+ expect(bank.exchange_rates[:sell].size).to eq 13
9
+ end
10
+
11
+ describe '.new' do
12
+ it 'initialize instance variables' do
13
+ expect(bank.sym).to eq :FaisalBank
14
+ expect(bank.instance_variable_get(:@uri)).to be_a URI
15
+ end
16
+ end
17
+
18
+ describe '#exchange_rates' do
19
+ it 'calls #parse with #raw_exchange_rates' do
20
+ expect(bank).to receive(:raw_exchange_rates)
21
+ expect(bank).to receive(:parse)
22
+ bank.exchange_rates
23
+ end
24
+ end
25
+
26
+ describe '#raw_exchange_rates' do
27
+ it 'raises ResponseError unless Net::HTTPSuccess', :no_vcr do
28
+ stub_request(:get, /.*faisalbank.*/).to_return(body: '', status: 500)
29
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
30
+ EGPRates::ResponseError, '500'
31
+ end
32
+
33
+ it 'raises ResponseError if HTML structure changed', :no_vcr do
34
+ stub_request(:get, /.*faisalbank.*/).to_return(body: '', status: 200)
35
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
36
+ EGPRates::ResponseError, 'Unknown HTML'
37
+ end
38
+
39
+ it 'returns <#Enumerator::Lazy> of 9 rows',
40
+ vcr: { cassette_name: :FaisalBank } do
41
+ lazy_enumerator = bank.send(:raw_exchange_rates)
42
+ expect(lazy_enumerator).to be_a Enumerator::Lazy
43
+ expect(lazy_enumerator.size).to eq 13
44
+ end
45
+ end
46
+
47
+ describe '#parse', vcr: { cassette_name: :FaisalBank } do
48
+ let(:raw_data) { bank.send(:raw_exchange_rates) }
49
+
50
+ it 'returns sell: hash of selling prices' do
51
+ expect(bank.send(:parse, raw_data)[:sell]).to match(
52
+ AED: 4.8326,
53
+ CAD: 13.1686,
54
+ CHF: 17.467,
55
+ DKK: 2.5187,
56
+ EUR: 18.7511,
57
+ GBP: 22.1005,
58
+ JPY: 0.157918,
59
+ KWD: 58.2158,
60
+ NOK: 2.0619,
61
+ QTR: 4.8748,
62
+ SAR: 4.7849,
63
+ SEK: 1.9133,
64
+ USD: 17.75
65
+ )
66
+ end
67
+
68
+ it 'returns buy: hash of buying prices' do
69
+ expect(bank.send(:parse, raw_data)[:buy]).to match(
70
+ AED: 4.6964,
71
+ CAD: 12.7579,
72
+ CHF: 16.9267,
73
+ DKK: 2.4406,
74
+ EUR: 18.1556,
75
+ GBP: 21.4245,
76
+ JPY: 0.152817,
77
+ KWD: 56.5388,
78
+ NOK: 1.9973,
79
+ QTR: 4.7374,
80
+ SAR: 4.5745,
81
+ SEK: 1.8545,
82
+ USD: 17.25
83
+ )
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+ describe EGPRates::NBG do
3
+ subject(:bank) { described_class.new }
4
+
5
+ it 'Live Testing', :live do
6
+ expect(bank.exchange_rates).to include(:buy, :sell)
7
+ expect(bank.exchange_rates[:buy].size).to eq 9
8
+ expect(bank.exchange_rates[:sell].size).to eq 9
9
+ end
10
+
11
+ describe '.new' do
12
+ it 'initialize instance variables' do
13
+ expect(bank.sym).to eq :NBG
14
+ expect(bank.instance_variable_get(:@uri)).to be_a URI
15
+ end
16
+ end
17
+
18
+ describe '#exchange_rates' do
19
+ it 'calls #parse with #raw_exchange_rates' do
20
+ expect(bank).to receive(:raw_exchange_rates)
21
+ expect(bank).to receive(:parse)
22
+ bank.exchange_rates
23
+ end
24
+ end
25
+
26
+ describe '#raw_exchange_rates' do
27
+ it 'raises ResponseError unless Net::HTTPSuccess', :no_vcr do
28
+ stub_request(:get, /.*nbg.*/).to_return(body: '', status: 500)
29
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
30
+ EGPRates::ResponseError, '500'
31
+ end
32
+
33
+ it 'raises ResponseError if HTML structure changed', :no_vcr do
34
+ stub_request(:get, /.*nbg.*/).to_return(body: '', status: 200)
35
+ expect { bank.send(:raw_exchange_rates) }.to raise_error\
36
+ EGPRates::ResponseError, 'Unknown HTML'
37
+ end
38
+
39
+ it 'returns <#Enumerator::Lazy> of 9 rows', vcr: { cassette_name: :NBG } do
40
+ lazy_enumerator = bank.send(:raw_exchange_rates)
41
+ expect(lazy_enumerator).to be_a Enumerator::Lazy
42
+ expect(lazy_enumerator.size).to eq 9
43
+ end
44
+ end
45
+
46
+ describe '#parse', vcr: { cassette_name: :NBG } do
47
+ let(:raw_data) { bank.send(:raw_exchange_rates) }
48
+
49
+ it 'returns sell: hash of selling prices' do
50
+ expect(bank.send(:parse, raw_data)[:sell]).to match(
51
+ CAD: 13.2057,
52
+ CHF: 17.5162,
53
+ DKK: 2.5258,
54
+ EUR: 18.3039,
55
+ GBP: 22.1628,
56
+ JPY: 15.8363,
57
+ SAR: 4.7464,
58
+ SEK: 1.9187,
59
+ USD: 17.8
60
+ )
61
+ end
62
+
63
+ it 'returns buy: hash of buying prices' do
64
+ expect(bank.send(:parse, raw_data)[:buy]).to match(
65
+ CAD: 12.721,
66
+ CHF: 16.8776,
67
+ DKK: 2.4336,
68
+ EUR: 18.103,
69
+ GBP: 21.3624,
70
+ JPY: 15.2374,
71
+ SAR: 4.5854,
72
+ SEK: 1.8492,
73
+ USD: 17.2
74
+ )
75
+ end
76
+ end
77
+ end