aemo 0.1.19 → 0.1.20

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,7 +3,55 @@ require 'spec_helper'
3
3
  describe AEMO::Region do
4
4
  describe '.REGIONS' do
5
5
  it "should be a hash" do
6
- expect(AEMO::Market.regions).to be_instance_of(Hash)
6
+ expect(AEMO::Region::REGIONS).to be_instance_of(Hash)
7
+ end
8
+ end
9
+
10
+ describe 'creating a region' do
11
+ it 'should raise an error if invalid region' do
12
+ expect {AEMO::Region.new('BOTTOMS')}.to raise_error(ArgumentError)
13
+ end
14
+ it 'should create if region valid' do
15
+ expect {AEMO::Region.new('NSW')}.not_to raise_error
16
+ end
17
+ end
18
+
19
+ describe 'AEMO::Region instance methods' do
20
+ before(:each) do
21
+ @nsw = AEMO::Region.new('NSW')
22
+ end
23
+ it 'should have an abbreviation' do
24
+ expect(@nsw.abbr).to eq('NSW')
25
+ end
26
+ it 'should have a fullname' do
27
+ expect(@nsw.fullname).to eq('New South Wales')
28
+ end
29
+ it 'should have to_s method' do
30
+ expect(@nsw.to_s).to eq('NSW')
31
+ end
32
+
33
+ it 'should have a valid region' do
34
+ expect(@nsw.send(:is_valid_region?,'NSW')).to eq(true)
35
+ end
36
+
37
+ it 'should have return invalid for invalid region' do
38
+ expect(@nsw.send(:is_valid_region?,'BOB')).to eq(false)
39
+ end
40
+
41
+ describe 'AEMO::Region dispatch information' do
42
+ it 'should return current dispatch data' do
43
+ expect(@nsw.current_dispatch.count).to eq(AEMO::Market.current_dispatch(@nsw.abbr).count)
44
+ end
45
+ it 'should return current trading data' do
46
+ expect(@nsw.current_trading.count).to eq(AEMO::Market.current_trading(@nsw.abbr).count)
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ describe 'AEMO::Region class methods' do
53
+ it 'should return all regions' do
54
+ expect(AEMO::Region.all.count).to eq(AEMO::Region::REGIONS.keys.count)
7
55
  end
8
56
  end
9
57
  end
data/spec/spec_helper.rb CHANGED
@@ -1,17 +1,56 @@
1
1
  require 'coveralls'
2
2
  require 'simplecov'
3
3
  require 'pry'
4
+ require 'webmock/rspec'
4
5
 
5
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
6
+ WebMock.disable_net_connect!(allow_localhost: true)
7
+
8
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
6
9
  SimpleCov::Formatter::HTMLFormatter,
7
10
  Coveralls::SimpleCov::Formatter
8
- ]
11
+ ])
9
12
  SimpleCov.start
10
13
 
11
14
  require "aemo"
12
15
 
13
16
  RSpec.configure do |config|
17
+ # WebMock
18
+ config.before(:each) do
19
+ # Market Data
20
+ stub_request(:get, "http://www.nemweb.com.au/mms.GRAPHS/GRAPHS/GRAPH_5NSW1.csv").
21
+ with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
22
+ to_return(status: 200, body: File.new('spec/fixtures/GRAPH_5NSW1.csv'), headers: {'Content-Type'=>'text/csv'})
23
+ stub_request(:get, 'http://www.nemweb.com.au/mms.GRAPHS/GRAPHS/GRAPH_30NSW1.csv').
24
+ with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
25
+ to_return(status: 200, body: File.new('spec/fixtures/GRAPH_30NSW1.csv'), headers: {'Content-Type'=>'text/csv'})
26
+
27
+ # MSATS
28
+ stub_request(:get, /msats.prod.nemnet.net.au\/msats\/ws\/C4\/ER/).
29
+ with(headers: {'Accept'=>['text/xml'], 'Content-Type'=>'text/xml'}).
30
+ to_return(status: 200, body: File.new('spec/fixtures/MSATS/c4.xml'), headers: {'Content-Type'=>'text/xml'})
31
+ stub_request(:get, /msats.prod.nemnet.net.au\/msats\/ws\/MSATSLimits\/ER/).
32
+ with(headers: {'Accept'=>['text/xml'], 'Content-Type'=>'text/xml'}).
33
+ to_return(status: 200, body: File.new('spec/fixtures/MSATS/msats_limits.xml'), headers: {'Content-Type'=>'text/xml'})
34
+ stub_request(:get, /msats.prod.nemnet.net.au\/msats\/ws\/NMIDetail\/ER/).
35
+ with(headers: {'Accept'=>['text/xml'], 'Content-Type'=>'text/xml'}).
36
+ to_return(status: 200, body: File.new('spec/fixtures/MSATS/nmi_details.xml'), headers: {'Content-Type'=>'text/xml'})
37
+ stub_request(:get, /msats.prod.nemnet.net.au\/msats\/ws\/NMIDiscovery\/ER/).
38
+ with(headers: {'Accept'=>['text/xml'], 'Content-Type'=>'text/xml'}).
39
+ to_return(status: 200, body: File.new('spec/fixtures/MSATS/nmi_discovery_by_address.xml'), headers: {'Content-Type'=>'text/xml'})
40
+ stub_request(:get, /msats.prod.nemnet.net.au\/msats\/ws\/ParticipantSystemStatus\/ER/).
41
+ with(headers: {'Accept'=>'text/xml', 'Content-Type'=>'text/xml'}).
42
+ to_return(status: 200, body: File.new('spec/fixtures/MSATS/participant_system_status.xml'), headers: {'Content-Type'=>'text/xml'})
43
+ # MSATS ERRORS
44
+ stub_request(:get, /msats.prod.nemnet.net.au\/msats\/ws\/C4\/ER\?.+?NMI=4001234566.+?/).
45
+ with(headers: {'Accept'=>['text/xml'], 'Content-Type'=>'text/xml'}).
46
+ to_return(status: 404, body: "", headers: {'Content-Type'=>'text/xml'})
47
+ stub_request(:get, /msats.prod.nemnet.net.au\/msats\/ws\/NMIDetail\/ER\?.+?nmi=4001234566.+?/).
48
+ with(headers: {'Accept'=>['text/xml'], 'Content-Type'=>'text/xml'}).
49
+ to_return(status: 404, body: "", headers: {'Content-Type'=>'text/xml'})
50
+ end
51
+
14
52
  config.order = "random"
53
+
15
54
  end
16
55
 
17
56
  def fixture(filename)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aemo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.19
4
+ version: 0.1.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Courtney
@@ -106,6 +106,9 @@ dependencies:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
108
  version: '4.2'
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: 4.2.6
109
112
  type: :runtime
110
113
  prerelease: false
111
114
  version_requirements: !ruby/object:Gem::Requirement
@@ -113,6 +116,9 @@ dependencies:
113
116
  - - "~>"
114
117
  - !ruby/object:Gem::Version
115
118
  version: '4.2'
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: 4.2.6
116
122
  - !ruby/object:Gem::Dependency
117
123
  name: bundler
118
124
  requirement: !ruby/object:Gem::Requirement
@@ -131,14 +137,14 @@ dependencies:
131
137
  name: rspec
132
138
  requirement: !ruby/object:Gem::Requirement
133
139
  requirements:
134
- - - "~>"
140
+ - - ">="
135
141
  - !ruby/object:Gem::Version
136
142
  version: '0'
137
143
  type: :development
138
144
  prerelease: false
139
145
  version_requirements: !ruby/object:Gem::Requirement
140
146
  requirements:
141
- - - "~>"
147
+ - - ">="
142
148
  - !ruby/object:Gem::Version
143
149
  version: '0'
144
150
  - !ruby/object:Gem::Dependency
@@ -147,40 +153,40 @@ dependencies:
147
153
  requirements:
148
154
  - - "~>"
149
155
  - !ruby/object:Gem::Version
150
- version: '0'
156
+ version: '4.2'
151
157
  type: :development
152
158
  prerelease: false
153
159
  version_requirements: !ruby/object:Gem::Requirement
154
160
  requirements:
155
161
  - - "~>"
156
162
  - !ruby/object:Gem::Version
157
- version: '0'
163
+ version: '4.2'
158
164
  - !ruby/object:Gem::Dependency
159
165
  name: jeweler
160
166
  requirement: !ruby/object:Gem::Requirement
161
167
  requirements:
162
- - - "~>"
168
+ - - ">="
163
169
  - !ruby/object:Gem::Version
164
170
  version: '0'
165
171
  type: :development
166
172
  prerelease: false
167
173
  version_requirements: !ruby/object:Gem::Requirement
168
174
  requirements:
169
- - - "~>"
175
+ - - ">="
170
176
  - !ruby/object:Gem::Version
171
177
  version: '0'
172
178
  - !ruby/object:Gem::Dependency
173
179
  name: simplecov
174
180
  requirement: !ruby/object:Gem::Requirement
175
181
  requirements:
176
- - - "~>"
182
+ - - ">="
177
183
  - !ruby/object:Gem::Version
178
184
  version: '0'
179
185
  type: :development
180
186
  prerelease: false
181
187
  version_requirements: !ruby/object:Gem::Requirement
182
188
  requirements:
183
- - - "~>"
189
+ - - ">="
184
190
  - !ruby/object:Gem::Version
185
191
  version: '0'
186
192
  - !ruby/object:Gem::Dependency
@@ -189,82 +195,102 @@ dependencies:
189
195
  requirements:
190
196
  - - "~>"
191
197
  - !ruby/object:Gem::Version
192
- version: '0'
198
+ version: '0.8'
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: 0.8.13
193
202
  type: :development
194
203
  prerelease: false
195
204
  version_requirements: !ruby/object:Gem::Requirement
196
205
  requirements:
197
206
  - - "~>"
198
207
  - !ruby/object:Gem::Version
199
- version: '0'
208
+ version: '0.8'
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: 0.8.13
200
212
  - !ruby/object:Gem::Dependency
201
213
  name: awesome_print
202
214
  requirement: !ruby/object:Gem::Requirement
203
215
  requirements:
204
- - - "~>"
216
+ - - ">="
205
217
  - !ruby/object:Gem::Version
206
218
  version: '0'
207
219
  type: :development
208
220
  prerelease: false
209
221
  version_requirements: !ruby/object:Gem::Requirement
210
222
  requirements:
211
- - - "~>"
223
+ - - ">="
212
224
  - !ruby/object:Gem::Version
213
225
  version: '0'
214
226
  - !ruby/object:Gem::Dependency
215
227
  name: pry
216
228
  requirement: !ruby/object:Gem::Requirement
217
229
  requirements:
218
- - - "~>"
230
+ - - ">="
219
231
  - !ruby/object:Gem::Version
220
232
  version: '0'
221
233
  type: :development
222
234
  prerelease: false
223
235
  version_requirements: !ruby/object:Gem::Requirement
224
236
  requirements:
225
- - - "~>"
237
+ - - ">="
226
238
  - !ruby/object:Gem::Version
227
239
  version: '0'
228
240
  - !ruby/object:Gem::Dependency
229
241
  name: pry-nav
230
242
  requirement: !ruby/object:Gem::Requirement
231
243
  requirements:
232
- - - "~>"
244
+ - - ">="
233
245
  - !ruby/object:Gem::Version
234
246
  version: '0'
235
247
  type: :development
236
248
  prerelease: false
237
249
  version_requirements: !ruby/object:Gem::Requirement
238
250
  requirements:
239
- - - "~>"
251
+ - - ">="
240
252
  - !ruby/object:Gem::Version
241
253
  version: '0'
242
254
  - !ruby/object:Gem::Dependency
243
255
  name: yard
244
256
  requirement: !ruby/object:Gem::Requirement
245
257
  requirements:
246
- - - "~>"
258
+ - - ">="
247
259
  - !ruby/object:Gem::Version
248
260
  version: '0'
249
261
  type: :development
250
262
  prerelease: false
251
263
  version_requirements: !ruby/object:Gem::Requirement
252
264
  requirements:
253
- - - "~>"
265
+ - - ">="
254
266
  - !ruby/object:Gem::Version
255
267
  version: '0'
256
268
  - !ruby/object:Gem::Dependency
257
269
  name: guard-yard
258
270
  requirement: !ruby/object:Gem::Requirement
259
271
  requirements:
260
- - - "~>"
272
+ - - ">="
261
273
  - !ruby/object:Gem::Version
262
274
  version: '0'
263
275
  type: :development
264
276
  prerelease: false
265
277
  version_requirements: !ruby/object:Gem::Requirement
266
278
  requirements:
267
- - - "~>"
279
+ - - ">="
280
+ - !ruby/object:Gem::Version
281
+ version: '0'
282
+ - !ruby/object:Gem::Dependency
283
+ name: webmock
284
+ requirement: !ruby/object:Gem::Requirement
285
+ requirements:
286
+ - - ">="
287
+ - !ruby/object:Gem::Version
288
+ version: '0'
289
+ type: :development
290
+ prerelease: false
291
+ version_requirements: !ruby/object:Gem::Requirement
292
+ requirements:
293
+ - - ">="
268
294
  - !ruby/object:Gem::Version
269
295
  version: '0'
270
296
  description: Gem providing functionality for the Australian Energy Market Operator
@@ -296,6 +322,12 @@ files:
296
322
  - spec/aemo_spec.rb
297
323
  - spec/fixtures/GRAPH_30NSW1.csv
298
324
  - spec/fixtures/GRAPH_5NSW1.csv
325
+ - spec/fixtures/MSATS/c4.xml
326
+ - spec/fixtures/MSATS/msats_limits.xml
327
+ - spec/fixtures/MSATS/nmi_details.xml
328
+ - spec/fixtures/MSATS/nmi_details.xml.zip
329
+ - spec/fixtures/MSATS/nmi_discovery_by_address.xml
330
+ - spec/fixtures/MSATS/participant_system_status.xml
299
331
  - spec/fixtures/NEM12-Errors/NEM12#000000000000021#CNRGYMDP#NEMMCO
300
332
  - spec/fixtures/NEM12-Errors/NEM12#000000000000022#CNRGYMDP#NEMMCO
301
333
  - spec/fixtures/NEM12-Errors/NEM12#000000000000023#CNRGYMDP#NEMMCO
@@ -396,7 +428,9 @@ files:
396
428
  - spec/fixtures/NEM12/nem12#SCENARIO10#TCAUSTM#NEMMCO.csv
397
429
  - spec/fixtures/NEM12/nem12#SCENARIO10NEM1210183#ELECTDSM#NEMMCO
398
430
  - spec/fixtures/nmi_checksum.json
431
+ - spec/lib/aemo/market/interval_spec.rb
399
432
  - spec/lib/aemo/market_spec.rb
433
+ - spec/lib/aemo/msats_spec.rb
400
434
  - spec/lib/aemo/nem12_spec.rb
401
435
  - spec/lib/aemo/nmi_spec.rb
402
436
  - spec/lib/aemo/region_spec.rb
@@ -430,6 +464,12 @@ test_files:
430
464
  - spec/aemo_spec.rb
431
465
  - spec/fixtures/GRAPH_30NSW1.csv
432
466
  - spec/fixtures/GRAPH_5NSW1.csv
467
+ - spec/fixtures/MSATS/c4.xml
468
+ - spec/fixtures/MSATS/msats_limits.xml
469
+ - spec/fixtures/MSATS/nmi_details.xml
470
+ - spec/fixtures/MSATS/nmi_details.xml.zip
471
+ - spec/fixtures/MSATS/nmi_discovery_by_address.xml
472
+ - spec/fixtures/MSATS/participant_system_status.xml
433
473
  - spec/fixtures/NEM12-Errors/NEM12#000000000000021#CNRGYMDP#NEMMCO
434
474
  - spec/fixtures/NEM12-Errors/NEM12#000000000000022#CNRGYMDP#NEMMCO
435
475
  - spec/fixtures/NEM12-Errors/NEM12#000000000000023#CNRGYMDP#NEMMCO
@@ -530,7 +570,9 @@ test_files:
530
570
  - spec/fixtures/NEM12/nem12#SCENARIO10#TCAUSTM#NEMMCO.csv
531
571
  - spec/fixtures/NEM12/nem12#SCENARIO10NEM1210183#ELECTDSM#NEMMCO
532
572
  - spec/fixtures/nmi_checksum.json
573
+ - spec/lib/aemo/market/interval_spec.rb
533
574
  - spec/lib/aemo/market_spec.rb
575
+ - spec/lib/aemo/msats_spec.rb
534
576
  - spec/lib/aemo/nem12_spec.rb
535
577
  - spec/lib/aemo/nmi_spec.rb
536
578
  - spec/lib/aemo/region_spec.rb