aemo 0.2.1 → 0.3.0.pre.rc1
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/exceptions/invalid_nmi_allocation_type.rb +21 -0
- data/lib/aemo/market/interval.rb +1 -3
- data/lib/aemo/market/node.rb +1 -3
- data/lib/aemo/market.rb +2 -2
- data/lib/aemo/nem12.rb +9 -27
- data/lib/aemo/nmi/allocation.rb +468 -0
- data/lib/aemo/nmi.rb +93 -359
- data/lib/aemo/version.rb +1 -1
- data/lib/aemo.rb +2 -0
- data/lib/data/xml_to_json.rb +4 -4
- data/spec/lib/aemo/market/interval_spec.rb +3 -3
- data/spec/lib/aemo/msats_spec.rb +4 -8
- data/spec/lib/aemo/nmi/allocation_spec.rb +50 -0
- data/spec/lib/aemo/nmi_spec.rb +16 -8
- metadata +43 -39
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe AEMO::NMI::Allocation do
|
6
|
+
# ---
|
7
|
+
# CLASS METHODS
|
8
|
+
# ---
|
9
|
+
describe '.all' do
|
10
|
+
it 'should return an array of all the Allocations' do
|
11
|
+
expect(AEMO::NMI::Allocation.all).to be_a Array
|
12
|
+
expect(AEMO::NMI::Allocation.all.first).to be_a AEMO::NMI::Allocation
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '.each' do
|
17
|
+
it 'should return an enumerable of all the Allocations' do
|
18
|
+
expect(AEMO::NMI::Allocation.each).to be_a Enumerable
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '.first' do
|
23
|
+
it 'should return the first Allocation' do
|
24
|
+
expect(AEMO::NMI::Allocation.first).to be_a AEMO::NMI::Allocation
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# ---
|
29
|
+
# INSTANCE METHODS
|
30
|
+
# ---
|
31
|
+
describe '#initialize' do
|
32
|
+
context 'valid' do
|
33
|
+
it 'should return an Allocation' do
|
34
|
+
expect(AEMO::NMI::Allocation.new('My great LNSP', :electricity)).to be_a AEMO::NMI::Allocation
|
35
|
+
expect(AEMO::NMI::Allocation.new('My great LNSP', 'electricity')).to be_a AEMO::NMI::Allocation
|
36
|
+
expect(AEMO::NMI::Allocation.new('My great gas LNSP', :gas)).to be_a AEMO::NMI::Allocation
|
37
|
+
expect(AEMO::NMI::Allocation.new('My great gas LNSP', 'gas')).to be_a AEMO::NMI::Allocation
|
38
|
+
end
|
39
|
+
end
|
40
|
+
context 'invalid' do
|
41
|
+
it 'should raise an InvalidNMIAllocationType error' do
|
42
|
+
expect { AEMO::NMI::Allocation.new('My terrible LNSP', :water) }.to raise_error AEMO::InvalidNMIAllocationType
|
43
|
+
expect { AEMO::NMI::Allocation.new('My terrible LNSP', :broccoli) }.to raise_error AEMO::InvalidNMIAllocationType
|
44
|
+
expect { AEMO::NMI::Allocation.new('My terrible LNSP', 'Ch4') }.to raise_error AEMO::InvalidNMIAllocationType
|
45
|
+
expect { AEMO::NMI::Allocation.new('My terrible LNSP', 'Natural gas') }.to raise_error AEMO::InvalidNMIAllocationType
|
46
|
+
expect { AEMO::NMI::Allocation.new('My terrible LNSP', :coal) }.to raise_error AEMO::InvalidNMIAllocationType
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/spec/lib/aemo/nmi_spec.rb
CHANGED
@@ -9,11 +9,6 @@ describe AEMO::NMI do
|
|
9
9
|
# ---
|
10
10
|
# CLASS CONSTANTS
|
11
11
|
# ---
|
12
|
-
describe '::NMI_ALLOCATIONS' do
|
13
|
-
it 'should be a hash' do
|
14
|
-
expect(AEMO::NMI::NMI_ALLOCATIONS.class).to eq(Hash)
|
15
|
-
end
|
16
|
-
end
|
17
12
|
describe '::TNI_CODES' do
|
18
13
|
it 'should be a hash' do
|
19
14
|
expect(AEMO::NMI::TNI_CODES.class).to eq(Hash)
|
@@ -57,10 +52,10 @@ describe AEMO::NMI do
|
|
57
52
|
end
|
58
53
|
end
|
59
54
|
|
60
|
-
describe '.network
|
55
|
+
describe '.network(nmi)' do
|
61
56
|
it 'should return a network for an allocated NMI' do
|
62
57
|
network = AEMO::NMI.network('NCCCC00000')
|
63
|
-
expect(network.
|
58
|
+
expect(network.title).to eq('Ausgrid')
|
64
59
|
end
|
65
60
|
it 'should return NIL for an unallocated NMI' do
|
66
61
|
network = AEMO::NMI.network('ZZZZZZZZZZZZ')
|
@@ -68,6 +63,17 @@ describe AEMO::NMI do
|
|
68
63
|
end
|
69
64
|
end
|
70
65
|
|
66
|
+
describe '.allocation(nmi)' do
|
67
|
+
it 'should return an Allocation for a NMI' do
|
68
|
+
allocation = AEMO::NMI.allocation('NCCCC00000')
|
69
|
+
expect(allocation.title).to eq('Ausgrid')
|
70
|
+
end
|
71
|
+
it 'should return NIL for an unallocated NMI' do
|
72
|
+
allocation = AEMO::NMI.allocation('ZZZZZZZZZZZZ')
|
73
|
+
expect(allocation).to eq(nil)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
71
77
|
# ---
|
72
78
|
# INSTANCE METHODS
|
73
79
|
# ---
|
@@ -131,7 +137,9 @@ describe AEMO::NMI do
|
|
131
137
|
it 'should return a network for a valid NMI' do
|
132
138
|
json.each do |nmi|
|
133
139
|
a_nmi = AEMO::NMI.new(nmi['nmi'])
|
134
|
-
|
140
|
+
next if a_nmi.network.nil?
|
141
|
+
expect(a_nmi.network).to be_a AEMO::NMI::Allocation
|
142
|
+
expect(a_nmi.allocation).to be_a AEMO::NMI::Allocation
|
135
143
|
end
|
136
144
|
end
|
137
145
|
# Negative test cases
|
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.
|
4
|
+
version: 0.3.0.pre.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Courtney
|
@@ -13,99 +13,99 @@ cert_chain: []
|
|
13
13
|
date: 2016-11-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: activesupport
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 4.2.6
|
22
|
+
- - "<"
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: '5.2'
|
22
25
|
type: :runtime
|
23
26
|
prerelease: false
|
24
27
|
version_requirements: !ruby/object:Gem::Requirement
|
25
28
|
requirements:
|
26
29
|
- - ">="
|
27
30
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
31
|
+
version: 4.2.6
|
32
|
+
- - "<"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '5.2'
|
29
35
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
36
|
+
name: httparty
|
31
37
|
requirement: !ruby/object:Gem::Requirement
|
32
38
|
requirements:
|
33
39
|
- - "~>"
|
34
40
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
41
|
+
version: '0.15'
|
36
42
|
- - ">="
|
37
43
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
44
|
+
version: 0.15.6
|
39
45
|
type: :runtime
|
40
46
|
prerelease: false
|
41
47
|
version_requirements: !ruby/object:Gem::Requirement
|
42
48
|
requirements:
|
43
49
|
- - "~>"
|
44
50
|
- !ruby/object:Gem::Version
|
45
|
-
version: '
|
51
|
+
version: '0.15'
|
46
52
|
- - ">="
|
47
53
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
54
|
+
version: 0.15.6
|
49
55
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
56
|
+
name: json
|
51
57
|
requirement: !ruby/object:Gem::Requirement
|
52
58
|
requirements:
|
53
|
-
- - "~>"
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0.6'
|
56
59
|
- - ">="
|
57
60
|
- !ruby/object:Gem::Version
|
58
|
-
version:
|
61
|
+
version: 1.7.5
|
59
62
|
type: :runtime
|
60
63
|
prerelease: false
|
61
64
|
version_requirements: !ruby/object:Gem::Requirement
|
62
65
|
requirements:
|
63
|
-
- - "~>"
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '0.6'
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.7.5
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: multi_xml
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0.
|
75
|
+
version: '0.6'
|
76
76
|
- - ">="
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 0.
|
78
|
+
version: 0.5.0
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
83
|
- - "~>"
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: '0.
|
85
|
+
version: '0.6'
|
86
86
|
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.
|
88
|
+
version: 0.5.0
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
90
|
+
name: nokogiri
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "
|
93
|
+
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
96
|
-
- - "
|
95
|
+
version: '1.8'
|
96
|
+
- - ">="
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
98
|
+
version: 1.8.2
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
101
|
version_requirements: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
|
-
- - "
|
103
|
+
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version:
|
106
|
-
- - "
|
105
|
+
version: '1.8'
|
106
|
+
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
108
|
+
version: 1.8.2
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: awesome_print
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -252,20 +252,20 @@ dependencies:
|
|
252
252
|
requirements:
|
253
253
|
- - "~>"
|
254
254
|
- !ruby/object:Gem::Version
|
255
|
-
version:
|
255
|
+
version: 0.52.1
|
256
256
|
- - ">="
|
257
257
|
- !ruby/object:Gem::Version
|
258
|
-
version: 0.
|
258
|
+
version: 0.52.1
|
259
259
|
type: :development
|
260
260
|
prerelease: false
|
261
261
|
version_requirements: !ruby/object:Gem::Requirement
|
262
262
|
requirements:
|
263
263
|
- - "~>"
|
264
264
|
- !ruby/object:Gem::Version
|
265
|
-
version:
|
265
|
+
version: 0.52.1
|
266
266
|
- - ">="
|
267
267
|
- !ruby/object:Gem::Version
|
268
|
-
version: 0.
|
268
|
+
version: 0.52.1
|
269
269
|
- !ruby/object:Gem::Dependency
|
270
270
|
name: simplecov
|
271
271
|
requirement: !ruby/object:Gem::Requirement
|
@@ -358,6 +358,7 @@ extra_rdoc_files: []
|
|
358
358
|
files:
|
359
359
|
- lib/aemo.rb
|
360
360
|
- lib/aemo/dispatchable.rb
|
361
|
+
- lib/aemo/exceptions/invalid_nmi_allocation_type.rb
|
361
362
|
- lib/aemo/market.rb
|
362
363
|
- lib/aemo/market/interval.rb
|
363
364
|
- lib/aemo/market/node.rb
|
@@ -366,6 +367,7 @@ files:
|
|
366
367
|
- lib/aemo/nem12.rb
|
367
368
|
- lib/aemo/nem13.rb
|
368
369
|
- lib/aemo/nmi.rb
|
370
|
+
- lib/aemo/nmi/allocation.rb
|
369
371
|
- lib/aemo/region.rb
|
370
372
|
- lib/aemo/register.rb
|
371
373
|
- lib/aemo/version.rb
|
@@ -494,6 +496,7 @@ files:
|
|
494
496
|
- spec/lib/aemo/meter_spec.rb
|
495
497
|
- spec/lib/aemo/msats_spec.rb
|
496
498
|
- spec/lib/aemo/nem12_spec.rb
|
499
|
+
- spec/lib/aemo/nmi/allocation_spec.rb
|
497
500
|
- spec/lib/aemo/nmi_spec.rb
|
498
501
|
- spec/lib/aemo/region_spec.rb
|
499
502
|
- spec/spec.opts
|
@@ -510,12 +513,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
510
513
|
requirements:
|
511
514
|
- - ">="
|
512
515
|
- !ruby/object:Gem::Version
|
513
|
-
version:
|
516
|
+
version: 2.3.0
|
514
517
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
515
518
|
requirements:
|
516
|
-
- - "
|
519
|
+
- - ">"
|
517
520
|
- !ruby/object:Gem::Version
|
518
|
-
version:
|
521
|
+
version: 1.3.1
|
519
522
|
requirements: []
|
520
523
|
rubyforge_project:
|
521
524
|
rubygems_version: 2.7.6
|
@@ -641,6 +644,7 @@ test_files:
|
|
641
644
|
- spec/lib/aemo/meter_spec.rb
|
642
645
|
- spec/lib/aemo/msats_spec.rb
|
643
646
|
- spec/lib/aemo/nem12_spec.rb
|
647
|
+
- spec/lib/aemo/nmi/allocation_spec.rb
|
644
648
|
- spec/lib/aemo/nmi_spec.rb
|
645
649
|
- spec/lib/aemo/region_spec.rb
|
646
650
|
- spec/spec.opts
|