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.
@@ -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