aemo 0.1.33 → 0.1.34
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/aemo.rb +1 -0
- data/lib/aemo/market/interval.rb +2 -0
- data/lib/aemo/market/node.rb +41 -0
- data/lib/aemo/nmi.rb +0 -1
- data/lib/aemo/region.rb +36 -14
- data/lib/aemo/version.rb +1 -1
- data/lib/data/{tni-mlf-codes.csv → TNI-MLF-Codes.csv} +0 -0
- data/lib/data/xml_to_json.rb +4 -4
- data/spec/lib/aemo/market/interval_spec.rb +1 -1
- data/spec/lib/aemo/market/node_spec.rb +33 -0
- data/spec/lib/aemo/msats_spec.rb +117 -44
- data/spec/lib/aemo/nem12_spec.rb +3 -3
- data/spec/lib/aemo/nmi_spec.rb +16 -1
- data/spec/spec_helper.rb +20 -3
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74f32714f901733d865a3c9f609962579fa45db7
|
4
|
+
data.tar.gz: 3f5edd9c91603c6543454cd93fc73451c7af6044
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99c6bd09338c5831c957cdce5e99aa77079c9c6adfba2c665b76757fed635edfc57a3546804ac0c6481b849c6362da3f3b48ad0a0f4a964b83188f579a2d29a7
|
7
|
+
data.tar.gz: cf82786f4c1c29910127a3710e87e045ad1d0f95310ad7b6e8110e2e733f9e138f8de6194c6cd116469ef30ddffca6176295071811e02f10644897969586ad58
|
data/lib/aemo.rb
CHANGED
data/lib/aemo/market/interval.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
module AEMO
|
2
|
+
module Market
|
3
|
+
# AEMO::Market::Interval
|
4
|
+
#
|
5
|
+
# @author Joel Courtney
|
6
|
+
# @abstract
|
7
|
+
# @since 0.1.0
|
8
|
+
class Node
|
9
|
+
IDENTIFIERS = %w(NSW QLD SA TAS VIC)
|
10
|
+
|
11
|
+
attr_accessor :identifier
|
12
|
+
|
13
|
+
def initialize(identifier)
|
14
|
+
raise ArgumentError, "Node Identifier '#{identifier}' is not valid." unless IDENTIFIERS.include?(identifier.upcase)
|
15
|
+
@identifier = identifier
|
16
|
+
@current_trading = []
|
17
|
+
@current_dispatch = []
|
18
|
+
end
|
19
|
+
|
20
|
+
# Return the current dispatch data
|
21
|
+
#
|
22
|
+
# @return [Array<AEMO::Market::Interval>]
|
23
|
+
def current_dispatch
|
24
|
+
if @current_dispatch.empty? || @current_dispatch.last.datetime != (Time.now - Time.now.to_i % 300)
|
25
|
+
@current_dispatch = AEMO::Market.current_dispatch(@identifier)
|
26
|
+
end
|
27
|
+
@current_dispatch
|
28
|
+
end
|
29
|
+
|
30
|
+
# Return the current trading data
|
31
|
+
#
|
32
|
+
# @return [Array<AEMO::Market::Interval>]
|
33
|
+
def current_trading
|
34
|
+
if @current_trading.empty? || @current_trading.reject { |i| i.period_type != 'TRADE' }.last.datetime != (Time.now - Time.now.to_i % 300)
|
35
|
+
@current_trading = AEMO::Market.current_trading(@identifier)
|
36
|
+
end
|
37
|
+
@current_trading
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/aemo/nmi.rb
CHANGED
@@ -712,7 +712,6 @@ module AEMO
|
|
712
712
|
raise 'start cannot be after finish' if start > finish
|
713
713
|
possible_values = TNI_CODES[@tni]
|
714
714
|
.reject { |x| start > DateTime.parse(x['ToDate']) || finish < DateTime.parse(x['FromDate']) }
|
715
|
-
.reject { |x| start > DateTime.parse(x['finish']) || finish < DateTime.parse(x['start']) }
|
716
715
|
return nil if possible_values.empty?
|
717
716
|
possible_values.map { |x| x['mlf_data']['loss_factors'] }
|
718
717
|
end
|
data/lib/aemo/region.rb
CHANGED
@@ -18,48 +18,70 @@ module AEMO
|
|
18
18
|
}.freeze
|
19
19
|
|
20
20
|
attr_accessor :region
|
21
|
+
attr_reader :aemo_market_node
|
21
22
|
|
23
|
+
class << self
|
24
|
+
def all
|
25
|
+
REGIONS.keys.map { |k| AEMO::Region.new(k) }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Create a new instance of AEMO::Region
|
30
|
+
#
|
31
|
+
# @param [String] region State
|
32
|
+
# @return [self]
|
22
33
|
def initialize(region)
|
23
34
|
raise ArgumentError, "Region '#{region}' is not valid." unless valid_region?(region)
|
24
|
-
@region = region
|
35
|
+
@region = region.upcase
|
36
|
+
@full_name = REGIONS[@region]
|
25
37
|
@current_trading = []
|
26
38
|
@current_dispatch = []
|
39
|
+
@aemo_market_node = if %w(NSW QLD SA TAS VIC).include?(@region)
|
40
|
+
AEMO::Market::Node.new(region)
|
41
|
+
elsif @region == 'ACT'
|
42
|
+
AEMO::Market::Node.new('NSW')
|
43
|
+
end
|
27
44
|
end
|
28
45
|
|
46
|
+
# Abbreviation method
|
47
|
+
#
|
48
|
+
# @return [String]
|
29
49
|
def abbr
|
30
50
|
@region
|
31
51
|
end
|
32
52
|
|
53
|
+
# @return [String]
|
33
54
|
def to_s
|
34
55
|
@region
|
35
56
|
end
|
36
57
|
|
58
|
+
# @return [String]
|
37
59
|
def fullname
|
38
60
|
REGIONS[@region]
|
39
61
|
end
|
40
62
|
|
63
|
+
# Return the current dispatch data
|
64
|
+
#
|
65
|
+
# @return [Array<AEMO::Market::Interval>]
|
41
66
|
def current_dispatch
|
42
|
-
|
43
|
-
@current_dispatch = AEMO::Market.current_dispatch(@region)
|
44
|
-
end
|
45
|
-
@current_dispatch
|
67
|
+
@aemo_market_node.current_dispatch
|
46
68
|
end
|
47
69
|
|
70
|
+
# Return the current trading data
|
71
|
+
#
|
72
|
+
# @return [Array<AEMO::Market::Interval>]
|
48
73
|
def current_trading
|
49
|
-
|
50
|
-
@current_trading = AEMO::Market.current_trading(@region)
|
51
|
-
end
|
52
|
-
@current_trading
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.all
|
56
|
-
REGIONS.keys.map { |k| AEMO::Region.new(k) }
|
74
|
+
@aemo_market_node.current_trading
|
57
75
|
end
|
58
76
|
|
59
77
|
protected
|
60
78
|
|
79
|
+
# Validates a region
|
80
|
+
#
|
81
|
+
# @param [String] region
|
82
|
+
# @return [Boolean]
|
61
83
|
def valid_region?(region)
|
62
|
-
REGIONS.keys.include?(region)
|
84
|
+
REGIONS.keys.include?(region.upcase)
|
63
85
|
end
|
64
86
|
end
|
65
87
|
end
|
data/lib/aemo/version.rb
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
# @author Joel Courtney <euphemize@gmail.com>
|
23
23
|
module AEMO
|
24
24
|
# aemo version
|
25
|
-
VERSION = '0.1.
|
25
|
+
VERSION = '0.1.34'.freeze
|
26
26
|
|
27
27
|
# aemo version split amongst different revisions
|
28
28
|
MAJOR_VERSION, MINOR_VERSION, REVISION = VERSION.split('.').map(&:to_i)
|
File without changes
|
data/lib/data/xml_to_json.rb
CHANGED
@@ -15,10 +15,10 @@ require 'active_support/all'
|
|
15
15
|
file_contents = File.read(File.join(@path, 'tni-mlf-codes.csv')).encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
|
16
16
|
CSV.parse(file_contents, headers: true, converters: :numeric).each do |row|
|
17
17
|
@mlf_data[row['TNI']] ||= { location: row['Location'], voltage: row['Voltage'], loss_factors: [] }
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
row.headers.select{|x| x =~ %r{^FY\d{2}$}}.sort.reverse.each do |fin_year|
|
19
|
+
year = "20#{fin_year.match(/FY(\d{2})/)[1]}".to_i
|
20
|
+
@mlf_data[row['TNI']][:loss_factors] << { start: DateTime.parse("#{year - 1}-07-01T00:00:00+1000"), finish: DateTime.parse("#{year}-07-01T00:00:00+1000"), value: row[fin_year] }
|
21
|
+
end
|
22
22
|
end
|
23
23
|
|
24
24
|
# TNI to MLF
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe AEMO::Market::Interval do
|
4
|
-
describe 'AEMO::Market::Interval
|
4
|
+
describe 'AEMO::Market::Interval constants' do
|
5
5
|
it 'has INTERVALS' do
|
6
6
|
expect(AEMO::Market::Interval::INTERVALS).to eq(trading: 'Trading', dispatch: 'Dispatch')
|
7
7
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AEMO::Market::Node do
|
4
|
+
describe '.IDENTIFIERS' do
|
5
|
+
it 'should be an array' do
|
6
|
+
expect(AEMO::Market::Node::IDENTIFIERS).to be_instance_of(Array)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'creating a node' do
|
11
|
+
it 'should raise an error if invalid region' do
|
12
|
+
expect { AEMO::Market::Node.new('BOTTOMS') }.to raise_error(ArgumentError)
|
13
|
+
end
|
14
|
+
it 'should create if node valid' do
|
15
|
+
expect { AEMO::Market::Node.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::Market::Node.new('NSW')
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'AEMO::Region dispatch information' do
|
25
|
+
it 'should return current dispatch data' do
|
26
|
+
expect(@nsw.current_dispatch.count).to eq(AEMO::Market.current_dispatch(@nsw.identifier).count)
|
27
|
+
end
|
28
|
+
it 'should return current trading data' do
|
29
|
+
expect(@nsw.current_trading.count).to eq(AEMO::Market.current_trading(@nsw.identifier).count)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/spec/lib/aemo/msats_spec.rb
CHANGED
@@ -9,74 +9,147 @@ describe AEMO::MSATS do
|
|
9
9
|
|
10
10
|
describe 'class methods' do
|
11
11
|
describe 'nmi details' do
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
describe 'valid MSATS user' do
|
13
|
+
before(:each) do
|
14
|
+
AEMO::MSATS.authorize('ER', 'ER', 'ER')
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
it 'should get data for a valid nmi' do
|
18
|
+
nmi_detail_query = AEMO::MSATS.nmi_detail('4001234567')
|
19
|
+
expect(nmi_detail_query.class).to eq(Hash)
|
20
|
+
end
|
21
|
+
it 'should get a 404 for a nonexistent nmi' do
|
22
|
+
# nmi_detail_query = AEMO::MSATS.nmi_detail('4001234566')
|
23
|
+
# TODO workout what the different errors are here...
|
24
|
+
end
|
25
|
+
it 'should raise an error for a bad nmi' do
|
26
|
+
expect { AEMO::MSATS.nmi_detail('BOBISAFISH') }.to raise_error(ArgumentError)
|
27
|
+
end
|
23
28
|
end
|
24
|
-
|
25
|
-
|
29
|
+
|
30
|
+
describe 'invalid MSATS user' do
|
31
|
+
before(:each) do
|
32
|
+
AEMO::MSATS.authorize('NOTER', 'NOTER', 'NOTER')
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should get data for a valid nmi' do
|
36
|
+
nmi_detail_query = AEMO::MSATS.nmi_detail('4001234567')
|
37
|
+
expect(nmi_detail_query.class).to eq(HTTParty::Response)
|
38
|
+
end
|
26
39
|
end
|
27
40
|
end
|
28
41
|
|
29
42
|
describe '#c4' do
|
30
|
-
|
31
|
-
|
32
|
-
|
43
|
+
describe 'valid MSATS account' do
|
44
|
+
before(:each) do
|
45
|
+
AEMO::MSATS.authorize('ER', 'ER', 'ER')
|
46
|
+
end
|
33
47
|
|
34
|
-
|
35
|
-
|
48
|
+
it 'should return a hash of information' do
|
49
|
+
expect(AEMO::MSATS.c4('4001234567', DateTime.now, DateTime.now, DateTime.now)).to be_a(Hash)
|
50
|
+
end
|
51
|
+
it 'should raise an error for a bad nmi' do
|
52
|
+
expect { AEMO::MSATS.c4('BOBISAFISH') }.to raise_error(ArgumentError)
|
53
|
+
end
|
54
|
+
it 'should return a hash of information' do
|
55
|
+
# AEMO::MSATS.c4('4001234566', DateTime.now, DateTime.now, DateTime.now)
|
56
|
+
# TODO workout what the different errors are here...
|
57
|
+
end
|
36
58
|
end
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
59
|
+
|
60
|
+
describe 'invalid MSATS account' do
|
61
|
+
before(:each) do
|
62
|
+
AEMO::MSATS.authorize('NOTER', 'NOTER', 'NOTER')
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'should return response' do
|
66
|
+
expect(AEMO::MSATS.c4(
|
67
|
+
'4001234567',
|
68
|
+
DateTime.now,
|
69
|
+
DateTime.now,
|
70
|
+
DateTime.now
|
71
|
+
).class).to eq(HTTParty::Response)
|
72
|
+
end
|
43
73
|
end
|
44
74
|
end
|
45
75
|
|
46
76
|
describe '#msats_limits' do
|
47
|
-
|
48
|
-
|
77
|
+
describe 'valid MSATS user' do
|
78
|
+
before(:each) do
|
79
|
+
AEMO::MSATS.authorize('ER', 'ER', 'ER')
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should give details of msats_limits' do
|
83
|
+
expect(AEMO::MSATS.msats_limits.class).to eq(Hash)
|
84
|
+
end
|
49
85
|
end
|
50
86
|
|
51
|
-
|
52
|
-
|
87
|
+
describe 'invalid MSATS user' do
|
88
|
+
before(:each) do
|
89
|
+
AEMO::MSATS.authorize('NOTER', 'NOTER', 'NOTER')
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'should not give details of msats_limits' do
|
93
|
+
expect(AEMO::MSATS.msats_limits.class).to eq(HTTParty::Response)
|
94
|
+
end
|
53
95
|
end
|
54
96
|
end
|
55
97
|
|
56
98
|
describe '#nmi_discovery_by_*' do
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
99
|
+
describe 'valid MSATS user' do
|
100
|
+
before(:each) do
|
101
|
+
AEMO::MSATS.authorize('ER', 'ER', 'ER')
|
102
|
+
end
|
103
|
+
it 'should find by address' do
|
104
|
+
expect(AEMO::MSATS.nmi_discovery_by_address('NSW', house_number: 6, street_name: 'Macquarie', suburb_or_place_or_locality: 'Sydney', postcode: 2000).class).to eq(Array)
|
105
|
+
end
|
106
|
+
it 'should find by meter_serial_number' do
|
107
|
+
expect(AEMO::MSATS.nmi_discovery_by_meter_serial_number('NSW', 666).class).to eq(Array)
|
108
|
+
end
|
109
|
+
it 'should find by meter_serial_number' do
|
110
|
+
expect { AEMO::MSATS.nmi_discovery_by_delivery_point_identifier('NSW', 666) }.to raise_error(ArgumentError)
|
111
|
+
end
|
112
|
+
it 'should find by meter_serial_number' do
|
113
|
+
expect(AEMO::MSATS.nmi_discovery_by_delivery_point_identifier('NSW', 10_000_001).class).to eq(Array)
|
114
|
+
end
|
65
115
|
end
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
116
|
+
|
117
|
+
describe 'invalid MSATS user' do
|
118
|
+
before(:each) do
|
119
|
+
AEMO::MSATS.authorize('NOTER', 'NOTER', 'NOTER')
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'should find by address' do
|
123
|
+
expect(AEMO::MSATS.nmi_discovery_by_address('NSW', house_number: 6, street_name: 'Macquarie', suburb_or_place_or_locality: 'Sydney', postcode: 2000).class).to eq(HTTParty::Response)
|
124
|
+
end
|
125
|
+
it 'should find by meter_serial_number' do
|
126
|
+
expect(AEMO::MSATS.nmi_discovery_by_meter_serial_number('NSW', 666).class).to eq(HTTParty::Response)
|
127
|
+
end
|
128
|
+
it 'should find by meter_serial_number' do
|
129
|
+
expect(AEMO::MSATS.nmi_discovery_by_delivery_point_identifier('NSW', 10_000_001).class).to eq(HTTParty::Response)
|
130
|
+
end
|
71
131
|
end
|
72
132
|
end
|
73
133
|
|
74
134
|
describe '#system_status' do
|
75
|
-
|
76
|
-
|
135
|
+
describe 'valid MSATS user' do
|
136
|
+
before(:each) do
|
137
|
+
AEMO::MSATS.authorize('ER', 'ER', 'ER')
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'should provide a status' do
|
141
|
+
AEMO::MSATS.system_status
|
142
|
+
end
|
77
143
|
end
|
78
|
-
|
79
|
-
|
144
|
+
|
145
|
+
describe 'invalid MSATS user' do
|
146
|
+
before(:each) do
|
147
|
+
AEMO::MSATS.authorize('NOTER', 'NOTER', 'NOTER')
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'should provide a status' do
|
151
|
+
expect(AEMO::MSATS.system_status.class).to eq(HTTParty::Response)
|
152
|
+
end
|
80
153
|
end
|
81
154
|
end
|
82
155
|
end
|
data/spec/lib/aemo/nem12_spec.rb
CHANGED
@@ -34,9 +34,9 @@ describe AEMO::NEM12 do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
describe '#parse_nem12_200' do
|
37
|
-
before(:each) do
|
38
|
-
|
39
|
-
end
|
37
|
+
# before(:each) do
|
38
|
+
# @nem12 = AEMO::NEM12.parse_nem12_100('100,NEM12,201603010000,CNRGYMDP,NEMMCO', strict: true)
|
39
|
+
# end
|
40
40
|
end
|
41
41
|
|
42
42
|
describe '#parse_nem12_300' do
|
data/spec/lib/aemo/nmi_spec.rb
CHANGED
@@ -151,6 +151,11 @@ describe AEMO::NMI do
|
|
151
151
|
nmi.address = { number: '1', street: 'Bob', street_type: 'Street' }
|
152
152
|
expect(nmi.friendly_address).to eq('1, Bob, Street')
|
153
153
|
end
|
154
|
+
it 'should return a friendly address if the address is a nested hash' do
|
155
|
+
nmi = AEMO::NMI.new('4001234567')
|
156
|
+
nmi.address = { house: { number: '1', suffix: 'B' }, street: 'Bob', street_type: 'Street', }
|
157
|
+
expect(nmi.friendly_address).to eq('1 B, Bob, Street')
|
158
|
+
end
|
154
159
|
end
|
155
160
|
|
156
161
|
describe '#current_daily_load' do
|
@@ -163,7 +168,7 @@ describe AEMO::NMI do
|
|
163
168
|
describe '#current_annual_load' do
|
164
169
|
it 'should return zero for no data' do
|
165
170
|
@nmi = AEMO::NMI.new('4001234567')
|
166
|
-
expect(@nmi.
|
171
|
+
expect(@nmi.current_annual_load).to eq(0)
|
167
172
|
end
|
168
173
|
end
|
169
174
|
|
@@ -197,6 +202,11 @@ describe AEMO::NMI do
|
|
197
202
|
expect(@nmi.dlfc_value.class).to eq(Float)
|
198
203
|
end
|
199
204
|
end
|
205
|
+
it 'has DLF values' do
|
206
|
+
Timecop.freeze('2016-06-01T00:00:00+1000') do
|
207
|
+
expect(@nmi.dlfc_values.class).to eq(Array)
|
208
|
+
end
|
209
|
+
end
|
200
210
|
end
|
201
211
|
|
202
212
|
describe 'transmission node identifiers and loss factors' do
|
@@ -214,6 +224,11 @@ describe AEMO::NMI do
|
|
214
224
|
expect(@nmi.tni_value(DateTime.now).class).to eq(Float)
|
215
225
|
end
|
216
226
|
end
|
227
|
+
it 'has TNI values' do
|
228
|
+
Timecop.freeze('2016-06-01T00:00:00+1000') do
|
229
|
+
expect(@nmi.tni_values.class).to eq(Array)
|
230
|
+
end
|
231
|
+
end
|
217
232
|
end
|
218
233
|
|
219
234
|
describe 'MSATS functions' do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
require 'coveralls'
|
2
2
|
require 'simplecov'
|
3
|
-
require 'pry'
|
4
3
|
require 'webmock/rspec'
|
4
|
+
require 'pry'
|
5
5
|
require 'timecop'
|
6
|
-
require 'aemo'
|
7
6
|
|
8
7
|
WebMock.disable_net_connect!(allow_localhost: true)
|
9
|
-
|
10
8
|
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
|
11
9
|
[
|
12
10
|
SimpleCov::Formatter::HTMLFormatter,
|
@@ -15,6 +13,8 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
|
|
15
13
|
)
|
16
14
|
SimpleCov.start
|
17
15
|
|
16
|
+
require 'aemo'
|
17
|
+
|
18
18
|
RSpec.configure do |config|
|
19
19
|
# WebMock
|
20
20
|
config.before(:each) do
|
@@ -52,6 +52,23 @@ RSpec.configure do |config|
|
|
52
52
|
.with(headers: { 'Accept' => 'text/xml', 'Content-Type' => 'text/xml' })
|
53
53
|
.to_return(status: 200, body: File.new('spec/fixtures/MSATS/participant_system_status.xml'), headers: xml_headers)
|
54
54
|
# MSATS ERRORS
|
55
|
+
# Invalid MSATS User
|
56
|
+
stub_request(:get, %r{msats.prod.nemnet.net.au\/msats\/ws\/C4\/NOTER})
|
57
|
+
.with(headers: { 'Accept' => ['text/xml'], 'Content-Type' => 'text/xml' })
|
58
|
+
.to_return(status: 404, body: '', headers: xml_headers)
|
59
|
+
stub_request(:get, %r{msats.prod.nemnet.net.au\/msats\/ws\/MSATSLimits\/NOTER})
|
60
|
+
.with(headers: { 'Accept' => ['text/xml'], 'Content-Type' => 'text/xml' })
|
61
|
+
.to_return(status: 404, body: '', headers: xml_headers)
|
62
|
+
stub_request(:get, %r{msats.prod.nemnet.net.au\/msats\/ws\/NMIDetail\/NOTER})
|
63
|
+
.with(headers: { 'Accept' => ['text/xml'], 'Content-Type' => 'text/xml' })
|
64
|
+
.to_return(status: 404, body: '', headers: xml_headers)
|
65
|
+
stub_request(:get, %r{msats.prod.nemnet.net.au\/msats\/ws\/NMIDiscovery\/NOTER})
|
66
|
+
.with(headers: { 'Accept' => ['text/xml'], 'Content-Type' => 'text/xml' })
|
67
|
+
.to_return(status: 404, body: '', headers: xml_headers)
|
68
|
+
stub_request(:get, %r{msats.prod.nemnet.net.au\/msats\/ws\/ParticipantSystemStatus\/NOTER})
|
69
|
+
.with(headers: { 'Accept' => 'text/xml', 'Content-Type' => 'text/xml' })
|
70
|
+
.to_return(status: 404, body: '', headers: xml_headers)
|
71
|
+
# Data errors
|
55
72
|
stub_request(:get, %r{msats.prod.nemnet.net.au\/msats\/ws\/C4\/ER\?.+?NMI=4001234566.+?})
|
56
73
|
.with(headers: { 'Accept' => ['text/xml'], 'Content-Type' => 'text/xml' })
|
57
74
|
.to_return(status: 404, body: '', headers: xml_headers)
|
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.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Courtney
|
@@ -420,18 +420,19 @@ files:
|
|
420
420
|
- lib/aemo/dispatchable.rb
|
421
421
|
- lib/aemo/market.rb
|
422
422
|
- lib/aemo/market/interval.rb
|
423
|
+
- lib/aemo/market/node.rb
|
423
424
|
- lib/aemo/msats.rb
|
424
425
|
- lib/aemo/nem12.rb
|
425
426
|
- lib/aemo/nem13.rb
|
426
427
|
- lib/aemo/nmi.rb
|
427
428
|
- lib/aemo/region.rb
|
428
429
|
- lib/aemo/version.rb
|
430
|
+
- lib/data/TNI-MLF-Codes.csv
|
429
431
|
- lib/data/aemo-dlf-dnsp.csv
|
430
432
|
- lib/data/aemo-dlf.json
|
431
433
|
- lib/data/aemo-dlf.xml
|
432
434
|
- lib/data/aemo-tni.json
|
433
435
|
- lib/data/aemo-tni.xml
|
434
|
-
- lib/data/tni-mlf-codes.csv
|
435
436
|
- lib/data/xml_to_json.rb
|
436
437
|
- spec/aemo_spec.rb
|
437
438
|
- spec/fixtures/MSATS/c4.xml
|
@@ -545,6 +546,7 @@ files:
|
|
545
546
|
- spec/fixtures/NEM12/nem12#SCENARIO10NEM1210183#ELECTDSM#NEMMCO
|
546
547
|
- spec/fixtures/nmi_checksum.json
|
547
548
|
- spec/lib/aemo/market/interval_spec.rb
|
549
|
+
- spec/lib/aemo/market/node_spec.rb
|
548
550
|
- spec/lib/aemo/market_spec.rb
|
549
551
|
- spec/lib/aemo/msats_spec.rb
|
550
552
|
- spec/lib/aemo/nem12_spec.rb
|
@@ -689,6 +691,7 @@ test_files:
|
|
689
691
|
- spec/fixtures/NEM12/nem12#SCENARIO10NEM1210183#ELECTDSM#NEMMCO
|
690
692
|
- spec/fixtures/nmi_checksum.json
|
691
693
|
- spec/lib/aemo/market/interval_spec.rb
|
694
|
+
- spec/lib/aemo/market/node_spec.rb
|
692
695
|
- spec/lib/aemo/market_spec.rb
|
693
696
|
- spec/lib/aemo/msats_spec.rb
|
694
697
|
- spec/lib/aemo/nem12_spec.rb
|