genability 0.1.0 → 0.2.0
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.
- data/.document +2 -2
- data/Gemfile +11 -10
- data/HISTORY.md +8 -0
- data/README.md +38 -3
- data/Rakefile +1 -0
- data/VERSION +2 -1
- data/genability.gemspec +46 -32
- data/lib/faraday/request/url_encoding_fix.rb +0 -1
- data/lib/genability/client.rb +6 -0
- data/lib/genability/client/calculate.rb +97 -0
- data/lib/genability/client/echo.rb +21 -0
- data/lib/genability/client/helpers.rb +2 -1
- data/lib/genability/client/load_serving_entity.rb +12 -11
- data/lib/genability/client/price.rb +1 -1
- data/lib/genability/client/property.rb +26 -0
- data/lib/genability/client/season.rb +1 -1
- data/lib/genability/client/tariff.rb +2 -2
- data/lib/genability/client/territory.rb +2 -2
- data/lib/genability/client/time_of_use.rb +3 -2
- data/lib/genability/client/zip_code.rb +1 -1
- data/lib/genability/configuration.rb +1 -2
- data/lib/genability/connection.rb +1 -5
- data/lib/genability/error.rb +4 -0
- data/lib/genability/request.rb +8 -1
- data/lib/mashie_extensions.rb +15 -4
- data/spec/cassettes/calculate.yml +55 -0
- data/spec/cassettes/echo.yml +57 -0
- data/spec/cassettes/load_serving_entities.yml +18 -18
- data/spec/cassettes/load_serving_entity.yml +2 -2
- data/spec/cassettes/prices.yml +6 -6
- data/spec/cassettes/properties.yml +55 -0
- data/spec/cassettes/property.yml +28 -0
- data/spec/cassettes/seasons.yml +2 -2
- data/spec/cassettes/tariff.yml +3 -3
- data/spec/cassettes/tariffs.yml +36 -9
- data/spec/cassettes/territories.yml +30 -3
- data/spec/cassettes/territory.yml +3 -3
- data/spec/cassettes/time_of_use.yml +5 -7
- data/spec/cassettes/time_of_uses.yml +3 -3
- data/spec/cassettes/zipcode.yml +2 -2
- data/spec/client/calculate_spec.rb +68 -0
- data/spec/client/echo_spec.rb +46 -0
- data/spec/client/helpers_spec.rb +34 -0
- data/spec/client/load_serving_entity_spec.rb +14 -5
- data/spec/client/property_spec.rb +45 -0
- data/spec/client/tariff_spec.rb +9 -1
- data/spec/client/territory_spec.rb +12 -1
- data/spec/client/time_of_use_spec.rb +2 -2
- data/spec/faraday/response_spec.rb +2 -2
- data/spec/genability_spec.rb +1 -1
- data/spec/spec_helper.rb +12 -8
- metadata +36 -13
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Genability::Client do
|
4
|
+
|
5
|
+
Genability::Configuration::VALID_FORMATS.each do |format|
|
6
|
+
|
7
|
+
context ".new(:format => '#{format}')" do
|
8
|
+
|
9
|
+
before(:all) do
|
10
|
+
@options = {:format => format}.merge(configuration_defaults)
|
11
|
+
@client = Genability::Client.new(@options)
|
12
|
+
@time = Time.now
|
13
|
+
end
|
14
|
+
|
15
|
+
# ISO 8601 date format with a syntax of:
|
16
|
+
# yyyy-MM-dd'T'HH:mm:ss.SSSZ
|
17
|
+
# ex. 2011-06-13T14:30:00.0-0700
|
18
|
+
# All fields must be specified even if they are zero. The .SSS
|
19
|
+
# are the milliseconds and the Z is the GMT time zone offset.
|
20
|
+
context ".format_to_iso8601" do
|
21
|
+
|
22
|
+
it "should format dates to ISO 8601" do
|
23
|
+
@client.send(:format_to_iso8601, @time).
|
24
|
+
should =~ /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{1,3}-\d{4}/
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
@@ -18,7 +18,7 @@ describe Genability::Client do
|
|
18
18
|
it "should return an array of load serving entities" do
|
19
19
|
lses = @client.load_serving_entities
|
20
20
|
lses.should be_an Array
|
21
|
-
lses.first.name.
|
21
|
+
lses.first.name.should_not be_nil
|
22
22
|
end
|
23
23
|
|
24
24
|
it "should return 25 results by default" do
|
@@ -30,23 +30,32 @@ describe Genability::Client do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should accept a pageStart parameter" do
|
33
|
-
@client.load_serving_entities(:page => 2)
|
33
|
+
lses = @client.load_serving_entities(:page => 2)
|
34
|
+
lses.should be_an Array
|
35
|
+
lses.count.should == 25
|
36
|
+
lses.first.name.should_not be_nil
|
34
37
|
end
|
35
38
|
|
36
39
|
it "should accept a startsWithWildCard parameter" do
|
37
|
-
@client.load_serving_entities(:starts_with => 'In')
|
40
|
+
lses = @client.load_serving_entities(:starts_with => 'In')
|
41
|
+
lses.should_not be_empty
|
42
|
+
lses.each do |result|
|
38
43
|
result.name.should =~ /^In/
|
39
44
|
end
|
40
45
|
end
|
41
46
|
|
42
47
|
it "should accept an endsWithWildCard parameter" do
|
43
|
-
@client.load_serving_entities(:ends_with => 'Inc')
|
48
|
+
lses = @client.load_serving_entities(:ends_with => 'Inc')
|
49
|
+
lses.should_not be_empty
|
50
|
+
lses.each do |result|
|
44
51
|
result.name.should =~ /Inc$/
|
45
52
|
end
|
46
53
|
end
|
47
54
|
|
48
55
|
it "should accept a containsWildCard parameter" do
|
49
|
-
@client.load_serving_entities(:
|
56
|
+
lses = @client.load_serving_entities(:search_string => 'Energy')
|
57
|
+
lses.should_not be_empty
|
58
|
+
lses.each do |result|
|
50
59
|
result.name.should =~ /Energy/
|
51
60
|
end
|
52
61
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Genability::Client do
|
4
|
+
|
5
|
+
Genability::Configuration::VALID_FORMATS.each do |format|
|
6
|
+
|
7
|
+
context ".new(:format => '#{format}')" do
|
8
|
+
|
9
|
+
before(:all) do
|
10
|
+
@options = {:format => format}.merge(configuration_defaults)
|
11
|
+
@client = Genability::Client.new(@options)
|
12
|
+
end
|
13
|
+
|
14
|
+
context ".property" do
|
15
|
+
|
16
|
+
use_vcr_cassette "property"
|
17
|
+
|
18
|
+
it "should get a single property by key name" do
|
19
|
+
property = @client.property("connectionType")
|
20
|
+
property.key_name.should == "connectionType"
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
context ".properties" do
|
26
|
+
|
27
|
+
use_vcr_cassette "properties"
|
28
|
+
|
29
|
+
it "should get a list of properties" do
|
30
|
+
properties = @client.properties
|
31
|
+
properties.first.display_name.should =~ /1000 kWh Block/
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should get a list of properties for a specific entity" do
|
35
|
+
properties = @client.properties(:entity_id => 734)
|
36
|
+
properties.first.entity_id.should == 734
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
data/spec/client/tariff_spec.rb
CHANGED
@@ -21,6 +21,12 @@ describe Genability::Client do
|
|
21
21
|
tariffs.first.tariff_id.should == 79
|
22
22
|
end
|
23
23
|
|
24
|
+
# this example also demonstrates searching within results
|
25
|
+
it "should allow searches by lse_id" do
|
26
|
+
tariffs = @client.tariffs(:lse_id => 734)
|
27
|
+
tariffs.select{|x| x['tariffCode'] == "E-7"}.first.tariff_code.should == "E-7"
|
28
|
+
end
|
29
|
+
|
24
30
|
it "should accept a string for customerClasses and tariffTypes parameters" do
|
25
31
|
@client.tariffs(:customer_classes => 'residential').each do |tariff|
|
26
32
|
tariff.customer_class.should =~ /RESIDENTIAL/
|
@@ -40,7 +46,9 @@ describe Genability::Client do
|
|
40
46
|
use_vcr_cassette "tariff"
|
41
47
|
|
42
48
|
it "should return a tariff" do
|
43
|
-
@client.tariff(512)
|
49
|
+
tariff = @client.tariff(512)
|
50
|
+
tariff.should be_a Hashie::Mash
|
51
|
+
tariff.tariff_id.should == 512
|
44
52
|
end
|
45
53
|
|
46
54
|
end
|
@@ -21,6 +21,15 @@ describe Genability::Client do
|
|
21
21
|
territories.first.territory_id.should == 807
|
22
22
|
end
|
23
23
|
|
24
|
+
it "should get the territory ID from a zipcode" do
|
25
|
+
territories = @client.territories(
|
26
|
+
:lse_id => 734,
|
27
|
+
:contains_item_type => 'ZIPCODE',
|
28
|
+
:contains_item_value => 94115,
|
29
|
+
:master_tariff_id => 522)
|
30
|
+
territories.first.territory_id.should == 3538
|
31
|
+
end
|
32
|
+
|
24
33
|
end
|
25
34
|
|
26
35
|
context ".territory" do
|
@@ -28,7 +37,9 @@ describe Genability::Client do
|
|
28
37
|
use_vcr_cassette "territory"
|
29
38
|
|
30
39
|
it "should return a territory" do
|
31
|
-
@client.territory(3539)
|
40
|
+
territory = @client.territory(3539)
|
41
|
+
territory.should be_a Hashie::Mash
|
42
|
+
territory.lse_id.should == 734
|
32
43
|
end
|
33
44
|
|
34
45
|
end
|
@@ -27,8 +27,8 @@ describe Genability::Client do
|
|
27
27
|
|
28
28
|
use_vcr_cassette "time_of_use"
|
29
29
|
|
30
|
-
it "should return a
|
31
|
-
intervals = @client.time_of_use_intervals(
|
30
|
+
it "should return the intervals for a given LSE and touGroupId" do
|
31
|
+
intervals = @client.time_of_use_intervals(734, 1)
|
32
32
|
intervals.should be_an Array
|
33
33
|
intervals.first.tou_group_id.should == 1
|
34
34
|
end
|
@@ -15,8 +15,8 @@ describe Faraday::Response do
|
|
15
15
|
}.each do |status, exception|
|
16
16
|
context "when HTTP status is #{status}" do
|
17
17
|
|
18
|
-
before do
|
19
|
-
stub_get('lses
|
18
|
+
before(:each) do
|
19
|
+
stub_get('public/lses?appId=ValidAppID&appKey=ValidAppKey').
|
20
20
|
to_return(:status => status)
|
21
21
|
end
|
22
22
|
|
data/spec/genability_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe "Genability" do
|
|
6
6
|
it { Genability::Configuration::DEFAULT_ADAPTER.should == :net_http }
|
7
7
|
it { Genability::Configuration::DEFAULT_APPLICATION_ID.should be_nil }
|
8
8
|
it { Genability::Configuration::DEFAULT_APPLICATION_KEY.should be_nil }
|
9
|
-
it { Genability::Configuration::DEFAULT_ENDPOINT.should == 'http://api.genability.com/rest/
|
9
|
+
it { Genability::Configuration::DEFAULT_ENDPOINT.should == 'http://api.genability.com/rest/' }
|
10
10
|
it { Genability::Configuration::DEFAULT_FORMAT.should == :json }
|
11
11
|
it { Genability::Configuration::DEFAULT_USER_AGENT.should == 'Genability API Ruby Gem' }
|
12
12
|
it { Genability::Configuration::DEFAULT_PROXY.should be_nil }
|
data/spec/spec_helper.rb
CHANGED
@@ -36,36 +36,40 @@ def configuration_defaults
|
|
36
36
|
CONFIGURATION_DEFAULTS
|
37
37
|
end
|
38
38
|
|
39
|
+
def genability_request_path(path)
|
40
|
+
Genability.endpoint + path
|
41
|
+
end
|
42
|
+
|
39
43
|
def a_delete(path)
|
40
|
-
a_request(:delete,
|
44
|
+
a_request(:delete, genability_request_path(path))
|
41
45
|
end
|
42
46
|
|
43
47
|
def a_get(path)
|
44
|
-
a_request(:get,
|
48
|
+
a_request(:get, genability_request_path(path))
|
45
49
|
end
|
46
50
|
|
47
51
|
def a_post(path)
|
48
|
-
a_request(:post,
|
52
|
+
a_request(:post, genability_request_path(path))
|
49
53
|
end
|
50
54
|
|
51
55
|
def a_put(path)
|
52
|
-
a_request(:put,
|
56
|
+
a_request(:put, genability_request_path(path))
|
53
57
|
end
|
54
58
|
|
55
59
|
def stub_delete(path)
|
56
|
-
stub_request(:delete,
|
60
|
+
stub_request(:delete, genability_request_path(path))
|
57
61
|
end
|
58
62
|
|
59
63
|
def stub_get(path)
|
60
|
-
stub_request(:get,
|
64
|
+
stub_request(:get, genability_request_path(path))
|
61
65
|
end
|
62
66
|
|
63
67
|
def stub_post(path)
|
64
|
-
stub_request(:post,
|
68
|
+
stub_request(:post, genability_request_path(path))
|
65
69
|
end
|
66
70
|
|
67
71
|
def stub_put(path)
|
68
|
-
stub_request(:put,
|
72
|
+
stub_request(:put, genability_request_path(path))
|
69
73
|
end
|
70
74
|
|
71
75
|
def fixture_path
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: genability
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Matthew Solt
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-10-26 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version:
|
23
|
+
version: 0.7.4
|
24
24
|
type: :runtime
|
25
25
|
version_requirements: *id001
|
26
26
|
- !ruby/object:Gem::Dependency
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 0.7.0
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id002
|
37
37
|
- !ruby/object:Gem::Dependency
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.
|
45
|
+
version: 1.2.0
|
46
46
|
type: :runtime
|
47
47
|
version_requirements: *id003
|
48
48
|
- !ruby/object:Gem::Dependency
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
requirements:
|
54
54
|
- - ~>
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 1.0.
|
56
|
+
version: 1.0.3
|
57
57
|
type: :runtime
|
58
58
|
version_requirements: *id004
|
59
59
|
- !ruby/object:Gem::Dependency
|
@@ -64,7 +64,7 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - ~>
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: 0.4
|
67
|
+
version: 0.6.4
|
68
68
|
type: :runtime
|
69
69
|
version_requirements: *id005
|
70
70
|
- !ruby/object:Gem::Dependency
|
@@ -75,7 +75,7 @@ dependencies:
|
|
75
75
|
requirements:
|
76
76
|
- - ~>
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 2.
|
78
|
+
version: "2.7"
|
79
79
|
type: :development
|
80
80
|
version_requirements: *id006
|
81
81
|
- !ruby/object:Gem::Dependency
|
@@ -97,7 +97,7 @@ dependencies:
|
|
97
97
|
requirements:
|
98
98
|
- - ~>
|
99
99
|
- !ruby/object:Gem::Version
|
100
|
-
version: 1.0.
|
100
|
+
version: 1.0.7
|
101
101
|
type: :development
|
102
102
|
version_requirements: *id008
|
103
103
|
- !ruby/object:Gem::Dependency
|
@@ -108,7 +108,7 @@ dependencies:
|
|
108
108
|
requirements:
|
109
109
|
- - ~>
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: 1.6.
|
111
|
+
version: 1.6.4
|
112
112
|
type: :development
|
113
113
|
version_requirements: *id009
|
114
114
|
- !ruby/object:Gem::Dependency
|
@@ -130,7 +130,7 @@ dependencies:
|
|
130
130
|
requirements:
|
131
131
|
- - ~>
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: 1.
|
133
|
+
version: 1.11.3
|
134
134
|
type: :development
|
135
135
|
version_requirements: *id011
|
136
136
|
- !ruby/object:Gem::Dependency
|
@@ -141,9 +141,20 @@ dependencies:
|
|
141
141
|
requirements:
|
142
142
|
- - ~>
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: 1.
|
144
|
+
version: 1.7.4
|
145
145
|
type: :development
|
146
146
|
version_requirements: *id012
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
name: ruby-debug19
|
149
|
+
prerelease: false
|
150
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: "0"
|
156
|
+
type: :development
|
157
|
+
version_requirements: *id013
|
147
158
|
description: Ruby client for the Genability power pricing and related APIs - learn more at https://developer.genability.com
|
148
159
|
email: mattsolt@gmail.com
|
149
160
|
executables: []
|
@@ -170,9 +181,12 @@ files:
|
|
170
181
|
- lib/genability.rb
|
171
182
|
- lib/genability/api.rb
|
172
183
|
- lib/genability/client.rb
|
184
|
+
- lib/genability/client/calculate.rb
|
185
|
+
- lib/genability/client/echo.rb
|
173
186
|
- lib/genability/client/helpers.rb
|
174
187
|
- lib/genability/client/load_serving_entity.rb
|
175
188
|
- lib/genability/client/price.rb
|
189
|
+
- lib/genability/client/property.rb
|
176
190
|
- lib/genability/client/season.rb
|
177
191
|
- lib/genability/client/tariff.rb
|
178
192
|
- lib/genability/client/territory.rb
|
@@ -183,9 +197,13 @@ files:
|
|
183
197
|
- lib/genability/error.rb
|
184
198
|
- lib/genability/request.rb
|
185
199
|
- lib/mashie_extensions.rb
|
200
|
+
- spec/cassettes/calculate.yml
|
201
|
+
- spec/cassettes/echo.yml
|
186
202
|
- spec/cassettes/load_serving_entities.yml
|
187
203
|
- spec/cassettes/load_serving_entity.yml
|
188
204
|
- spec/cassettes/prices.yml
|
205
|
+
- spec/cassettes/properties.yml
|
206
|
+
- spec/cassettes/property.yml
|
189
207
|
- spec/cassettes/seasons.yml
|
190
208
|
- spec/cassettes/tariff.yml
|
191
209
|
- spec/cassettes/tariffs.yml
|
@@ -194,8 +212,12 @@ files:
|
|
194
212
|
- spec/cassettes/time_of_use.yml
|
195
213
|
- spec/cassettes/time_of_uses.yml
|
196
214
|
- spec/cassettes/zipcode.yml
|
215
|
+
- spec/client/calculate_spec.rb
|
216
|
+
- spec/client/echo_spec.rb
|
217
|
+
- spec/client/helpers_spec.rb
|
197
218
|
- spec/client/load_serving_entity_spec.rb
|
198
219
|
- spec/client/price_spec.rb
|
220
|
+
- spec/client/property_spec.rb
|
199
221
|
- spec/client/season_spec.rb
|
200
222
|
- spec/client/tariff_spec.rb
|
201
223
|
- spec/client/territory_spec.rb
|
@@ -228,9 +250,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
250
|
requirements: []
|
229
251
|
|
230
252
|
rubyforge_project:
|
231
|
-
rubygems_version: 1.8.
|
253
|
+
rubygems_version: 1.8.11
|
232
254
|
signing_key:
|
233
255
|
specification_version: 3
|
234
256
|
summary: Ruby client for the Genability API
|
235
257
|
test_files: []
|
236
258
|
|
259
|
+
has_rdoc:
|