aemo 0.1.19 → 0.1.20
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 +4 -4
- data/lib/aemo.rb +0 -1
- data/lib/aemo/market.rb +2 -7
- data/lib/aemo/msats.rb +19 -12
- data/lib/aemo/nem12.rb +4 -25
- data/lib/aemo/nmi.rb +66 -70
- data/lib/aemo/region.rb +16 -17
- data/lib/aemo/version.rb +1 -1
- data/spec/fixtures/MSATS/c4.xml +275 -0
- data/spec/fixtures/MSATS/msats_limits.xml +67 -0
- data/spec/fixtures/MSATS/nmi_details.xml +144 -0
- data/spec/fixtures/MSATS/nmi_details.xml.zip +0 -0
- data/spec/fixtures/MSATS/nmi_discovery_by_address.xml +141 -0
- data/spec/fixtures/MSATS/participant_system_status.xml +30 -0
- data/spec/lib/aemo/market/interval_spec.rb +49 -0
- data/spec/lib/aemo/market_spec.rb +14 -8
- data/spec/lib/aemo/msats_spec.rb +84 -0
- data/spec/lib/aemo/nem12_spec.rb +21 -23
- data/spec/lib/aemo/nmi_spec.rb +78 -0
- data/spec/lib/aemo/region_spec.rb +49 -1
- data/spec/spec_helper.rb +41 -2
- metadata +63 -21
@@ -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::
|
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
|
-
|
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.
|
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: '
|
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: '
|
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
|