enlighten 0.1.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.
@@ -0,0 +1 @@
1
+ {"system_id": 67, "modules": 35, "size_w": 6270, "current_power": 1759, "energy_today": 23548, "energy_lifetime": 60771599, "summary_date": "2015-04-06", "source": "microinverters", "status": "normal", "operational_at": 1201362300, "last_report_at": 1428362526}
@@ -0,0 +1,128 @@
1
+ require_relative 'test_helper'
2
+ require 'date'
3
+
4
+ describe Enlighten::System do
5
+ include Enlighten
6
+
7
+ let(:system){ Enlighten::System.new(67)}
8
+ before do
9
+ #my key with the test user id
10
+ Enlighten::System.config(key: '0960c4df1203f3079489fa8ccc251b59', user_id: '4d7a45774e6a41320a')
11
+ end
12
+ it "should initalize with default params" do
13
+ Enlighten::System.url.must_equal "https://api.enphaseenergy.com/api/v2/systems"
14
+ end
15
+ it "should should override the default params" do
16
+ Enlighten::System.config(host: 'bogus.enphaseenergy.com', path: '/bogus/v2/bogus')
17
+ Enlighten::System.url.must_equal "https://bogus.enphaseenergy.com/bogus/v2/bogus"
18
+ Enlighten::System.config(host: 'api.enphaseenergy.com', path: '/api/v2/systems')
19
+ end
20
+
21
+ describe "Function Calls" do
22
+
23
+
24
+ describe 'format_url' do
25
+ it "should format the url" do
26
+ system.send(:format_url,:summary).must_equal('https://api.enphaseenergy.com/api/v2/systems/67/summary?key=0960c4df1203f3079489fa8ccc251b59&user_id=4d7a45774e6a41320a')
27
+ end
28
+ it "should format the url with parameters" do
29
+ system.send(:format_url,:energy_lifetime,start_date: '2010-01-01',end_date: '2010-12-31').must_equal(
30
+ "https://api.enphaseenergy.com/api/v2/systems/67/energy_lifetime?key=0960c4df1203f3079489fa8ccc251b59&user_id=4d7a45774e6a41320a&start_date=2010-01-01&end_date=2010-12-31"
31
+ )
32
+ end
33
+ it "should format the url with Time parameters" do
34
+ start_date = DateTime.parse('2010-01-01')
35
+ end_date = DateTime.parse('2010-12-31')
36
+
37
+ system.send(:format_url,:energy_lifetime,start_date: start_date,end_date: end_date).must_equal(
38
+ "https://api.enphaseenergy.com/api/v2/systems/67/energy_lifetime?key=0960c4df1203f3079489fa8ccc251b59&user_id=4d7a45774e6a41320a&start_date=2010-01-01&end_date=2010-12-31"
39
+ )
40
+ end
41
+ it "should format the url with 'start_at', and 'end_at' parameters" do
42
+ system.send(:format_url,:stats,start_at: DateTime.strptime('2015-01-01 00:00','%Y-%m-%d %H:%M').to_time,end_at: DateTime.strptime('2015-01-02 00:00', '%Y-%m-%d %H:%M').to_time).must_equal(
43
+ "https://api.enphaseenergy.com/api/v2/systems/67/stats?key=0960c4df1203f3079489fa8ccc251b59&user_id=4d7a45774e6a41320a&start_at=1420070400&end_at=1420156800"
44
+ )
45
+ end
46
+ end
47
+
48
+ describe 'date_format' do
49
+ it "should format a date" do
50
+ date = DateTime.parse('2014-12-31')
51
+ system.send(:date_format, date).must_equal('2014-12-31')
52
+ end
53
+ it "should pass through a string" do
54
+ system.send(:date_format, '2014-12-31').must_equal('2014-12-31')
55
+ end
56
+ end
57
+
58
+ describe 'query_string' do
59
+ it "should return a valid query string if given a valid hash" do
60
+ system.send(:query_string,{:a=>'1',:b=>'2',:c=>'3'}).must_equal('a=1&b=2&c=3')
61
+ end
62
+
63
+ it "should CGI Encode the query string" do
64
+ system.send(:query_string,{:a=>'1',:b=>'2&2',:c=>'3/3'}).must_equal('a=1&b=2%262&c=3%2F3')
65
+ end
66
+ end
67
+ end
68
+
69
+
70
+ describe 'REST end points' do
71
+ it "should return a system summary upon creation" do
72
+ system.stub(:api_response, load_fixture(:summary)) do
73
+ system.summary.system_id.must_equal 67
74
+ end
75
+ end
76
+
77
+ it "should return system stats upon request" do
78
+ system.stub(:api_response, load_fixture(:stats)) do
79
+ system.stats.total_devices.must_equal 35
80
+ end
81
+ end
82
+
83
+ it "should return system inventory upon request" do
84
+ system.stub(:api_response, load_fixture(:inventory)) do
85
+ system.inventory.envoys[0]['sn'].must_equal "121112607295"
86
+ end
87
+ end
88
+ it "should return energy_lifetime upon request" do
89
+ system.stub(:api_response, load_fixture(:energy_lifetime)) do
90
+ system.energy_lifetime.start_date.must_equal "2010-01-01"
91
+ end
92
+ end
93
+ it "should return cached energy_lifetime upon request" do
94
+ system.stub(:api_response, load_fixture(:energy_lifetime)) do
95
+ system.energy_lifetime.start_date.must_equal "2010-01-01"
96
+ end
97
+ system.energy_lifetime.start_date.must_equal "2010-01-01"
98
+ end
99
+ it "should 'find' a system" do
100
+ system = Enlighten::System.find(67)
101
+ system.stub(:api_response, load_fixture(:summary)) do
102
+ system.summary.system_id.must_equal 67
103
+ end
104
+ end
105
+
106
+ it "should return a date range for enery lifetime." do
107
+ system.stub(:api_response, load_fixture(:energy_lifetime)) do
108
+ start_date = DateTime.parse("2010-01-01")
109
+ end_date = DateTime.parse("2010-12-31")
110
+ system.energy_lifetime(start_date: start_date, end_date: end_date).start_date.must_equal "2010-01-01"
111
+ end
112
+ end
113
+
114
+ it "should return a date range for enery lifetime if passed strings." do
115
+ system.stub(:api_response, load_fixture(:energy_lifetime)) do
116
+ system.energy_lifetime(start_date: "2010-01-01", end_date: "2010-12-31").start_date.must_equal "2010-01-01"
117
+ end
118
+ end
119
+
120
+ it "should raise an exception if an error code is returned." do
121
+ system.stub(:api_response, load_fixture(:error)) do
122
+ proc{system.summary}.must_raise Enlighten::EnlightenApiError
123
+ end
124
+ end
125
+ end
126
+ end
127
+
128
+
@@ -0,0 +1,9 @@
1
+ require 'minitest/spec'
2
+ require 'minitest/autorun'
3
+ require 'minitest/mock'
4
+ require_relative '../lib/enlighten'
5
+ FIXTURE_DIR = File.expand_path('../fixtures', __FILE__).freeze
6
+
7
+ def load_fixture(method_name)
8
+ File.read(FIXTURE_DIR + '/' + method_name.to_s + '.json')
9
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: enlighten
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Robert Martin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: Docs at https://developer.enphase.com/docs
42
+ email:
43
+ - ''
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.md
52
+ - Rakefile
53
+ - enlighten.gemspec
54
+ - lib/enlighten.rb
55
+ - lib/enlighten/version.rb
56
+ - test/fixtures/energy_lifetime.json
57
+ - test/fixtures/envoys.json
58
+ - test/fixtures/error.json
59
+ - test/fixtures/inventory.json
60
+ - test/fixtures/monthly_production.json
61
+ - test/fixtures/rgm_stats.json
62
+ - test/fixtures/stats.json
63
+ - test/fixtures/summary.json
64
+ - test/test_enlighten_system.rb
65
+ - test/test_helper.rb
66
+ homepage: https://www.github.com/datadude/enlighten
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.4.5
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Use this gem to connect to the enphase 'enlighten' API.
90
+ test_files:
91
+ - test/fixtures/energy_lifetime.json
92
+ - test/fixtures/envoys.json
93
+ - test/fixtures/error.json
94
+ - test/fixtures/inventory.json
95
+ - test/fixtures/monthly_production.json
96
+ - test/fixtures/rgm_stats.json
97
+ - test/fixtures/stats.json
98
+ - test/fixtures/summary.json
99
+ - test/test_enlighten_system.rb
100
+ - test/test_helper.rb