amee 2.6.0 → 2.7.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/Gemfile +18 -0
- data/README +2 -2
- data/Rakefile +31 -0
- data/VERSION +1 -0
- data/amee-ruby.gemspec +147 -0
- data/examples/view_profile_item.rb +32 -0
- data/lib/amee.rb +0 -1
- data/lib/amee/profile_item.rb +27 -6
- data/spec/amee_spec.rb +25 -0
- data/spec/cache_spec.rb +152 -0
- data/spec/connection_spec.rb +295 -0
- data/spec/data_category_spec.rb +259 -0
- data/spec/data_item_spec.rb +224 -0
- data/spec/data_item_value_history_spec.rb +311 -0
- data/spec/data_item_value_spec.rb +231 -0
- data/spec/data_object_spec.rb +9 -0
- data/spec/drill_down_spec.rb +163 -0
- data/spec/fixtures/AD63A83B4D41.json +1 -0
- data/spec/fixtures/AD63A83B4D41.xml +1 -0
- data/spec/fixtures/create_item.json +1 -0
- data/spec/fixtures/create_item.xml +1 -0
- data/spec/fixtures/data.json +1 -0
- data/spec/fixtures/data.xml +1 -0
- data/spec/fixtures/data_home_energy_quantity.xml +146 -0
- data/spec/fixtures/data_home_energy_quantity_biodiesel.xml +177 -0
- data/spec/fixtures/data_transport_car_generic_drill_fuel_diesel.xml +33 -0
- data/spec/fixtures/empty.json +1 -0
- data/spec/fixtures/empty.xml +1 -0
- data/spec/fixtures/parse_test.xml +22 -0
- data/spec/fixtures/v0_data_transport_transport_drill_transportType_Car1.xml +20 -0
- data/spec/item_definition_spec.rb +313 -0
- data/spec/item_value_definition_spec.rb +253 -0
- data/spec/logger_spec.rb +16 -0
- data/spec/object_spec.rb +44 -0
- data/spec/parse_helper_spec.rb +72 -0
- data/spec/profile_category_spec.rb +565 -0
- data/spec/profile_item_spec.rb +451 -0
- data/spec/profile_item_value_spec.rb +196 -0
- data/spec/profile_object_spec.rb +24 -0
- data/spec/profile_spec.rb +88 -0
- data/spec/rails_spec.rb +48 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +56 -0
- data/spec/user_spec.rb +249 -0
- metadata +189 -55
- data/lib/amee/version.rb +0 -10
@@ -0,0 +1,253 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe AMEE::Admin::ItemValueDefinition do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@item_definition = AMEE::Admin::ItemValueDefinition.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should have common AMEE object properties" do
|
10
|
+
@item_definition.is_a?(AMEE::Object).should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have a name" do
|
14
|
+
@item_definition.should respond_to(:name)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should initialize AMEE::Object data on creation" do
|
18
|
+
uid = 'ABCD1234'
|
19
|
+
@item_definition = AMEE::Admin::ItemValueDefinition.new(:uid => uid)
|
20
|
+
@item_definition.uid.should == uid
|
21
|
+
end
|
22
|
+
|
23
|
+
it "can be created with hash of data" do
|
24
|
+
name = "test"
|
25
|
+
@item_definition = AMEE::Admin::ItemValueDefinition.new(:name => name)
|
26
|
+
@item_definition.name.should == name
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
describe AMEE::Admin::ItemValueDefinitionList, "with an authenticated connection" do
|
32
|
+
it "should parse XML correctly" do
|
33
|
+
connection = flexmock "connection"
|
34
|
+
connection.should_receive(:retries).and_return(0).once
|
35
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8" standalone="no"?><Resources><ItemValueDefinitionsResource><Environment uid="5F5887BCF726"/><ItemDefinition uid="BD88D30D1214"/><ItemValueDefinitions><ItemValueDefinition uid="A8A212610A57"><Path>distancePerJourney</Path><Name>Distance per journey</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>km</Unit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="D2AB505D2D91"><Path>type</Path><Name>Type</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>true</DrillDown></ItemValueDefinition><ItemValueDefinition uid="41EC337E5C79"><Path>numberOfJourneys</Path><Name>Number of journeys</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="9BAFC976044B"><Path>source</Path><Name>Source</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="9813267B616E"><Path>country</Path><Name>Country</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="263DE76AF8AA"><Path>kgCO2PerPassengerKmIE</Path><Name>kgCO2 Per Passenger Km IE</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="996AE5477B3F"><Name>kgCO2PerKm</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="F5550D71085F"><Path>kgCO2PerKmPassenger</Path><Name>kgCO2 Per Passenger Km</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="996AE5477B3F"><Name>kgCO2PerKm</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="FE166C7602BB"><Path>typicalJourneyDistance</Path><Name>Typical journey distance</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="2F76AB4E3C0F"><Path>journeyFrequency</Path><Name>Journey frequency</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="B0F02E544603"><Path>numberOfPassengers</Path><Name>Number of passengers</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="28D0B8C4F52A"><Path>useTypicalDistance</Path><Name>Use typical distance</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="6334117D28A0"><Path>distanceKmPerMonth</Path><Name>Distance Km Per Month</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="B691497F1CF2"><Name>kM</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>km</Unit><PerUnit>month</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="98EA75911467"><Path>distancePerJourney</Path><Name>Distance per journey</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>km</Unit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="584BEA802996"><Path>isReturn</Path><Name>Is return</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="6CBF739E12F0"><Path>distance</Path><Name>Distance</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>km</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValueDefinitions></ItemValueDefinitionsResource></Resources>'))
|
36
|
+
@data = AMEE::Admin::ItemValueDefinitionList.new(connection,"BD88D30D1214")
|
37
|
+
@data.length.should==15
|
38
|
+
@data.first.uid.should=='A8A212610A57'
|
39
|
+
@data.first.name.should == "Distance per journey"
|
40
|
+
@data.first.path.should == "distancePerJourney"
|
41
|
+
@data.first.unit.should == "km"
|
42
|
+
@data.first.perunit.should == nil
|
43
|
+
@data.first.profile?.should == true
|
44
|
+
@data.first.drill?.should == false
|
45
|
+
@data.first.data?.should == false
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should apply block filter correctly" do
|
49
|
+
connection = flexmock "connection"
|
50
|
+
connection.should_receive(:retries).and_return(0).once
|
51
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8" standalone="no"?><Resources><ItemValueDefinitionsResource><Environment uid="5F5887BCF726"/><ItemDefinition uid="BD88D30D1214"/><ItemValueDefinitions><ItemValueDefinition uid="A8A212610A57"><Path>distancePerJourney</Path><Name>Distance per journey</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>km</Unit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="D2AB505D2D91"><Path>type</Path><Name>Type</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>true</DrillDown></ItemValueDefinition><ItemValueDefinition uid="41EC337E5C79"><Path>numberOfJourneys</Path><Name>Number of journeys</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="9BAFC976044B"><Path>source</Path><Name>Source</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="9813267B616E"><Path>country</Path><Name>Country</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="263DE76AF8AA"><Path>kgCO2PerPassengerKmIE</Path><Name>kgCO2 Per Passenger Km IE</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="996AE5477B3F"><Name>kgCO2PerKm</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="F5550D71085F"><Path>kgCO2PerKmPassenger</Path><Name>kgCO2 Per Passenger Km</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="996AE5477B3F"><Name>kgCO2PerKm</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="FE166C7602BB"><Path>typicalJourneyDistance</Path><Name>Typical journey distance</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="2F76AB4E3C0F"><Path>journeyFrequency</Path><Name>Journey frequency</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="B0F02E544603"><Path>numberOfPassengers</Path><Name>Number of passengers</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="28D0B8C4F52A"><Path>useTypicalDistance</Path><Name>Use typical distance</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="6334117D28A0"><Path>distanceKmPerMonth</Path><Name>Distance Km Per Month</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="B691497F1CF2"><Name>kM</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>km</Unit><PerUnit>month</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="98EA75911467"><Path>distancePerJourney</Path><Name>Distance per journey</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>km</Unit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="584BEA802996"><Path>isReturn</Path><Name>Is return</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition><ItemValueDefinition uid="6CBF739E12F0"><Path>distance</Path><Name>Distance</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>km</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValueDefinitions></ItemValueDefinitionsResource></Resources>'))
|
52
|
+
@data = AMEE::Admin::ItemValueDefinitionList.new(connection,"BD88D30D1214") do |x|
|
53
|
+
x.uid == 'A8A212610A57' ? x.uid : nil
|
54
|
+
end
|
55
|
+
@data.length.should==1
|
56
|
+
@data.first.should=='A8A212610A57'
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should parse JSON correctly" do
|
60
|
+
connection = flexmock "connection"
|
61
|
+
connection.should_receive(:retries).and_return(0).once
|
62
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions", {}).and_return(flexmock(:body => '{"environment":{"uid":"5F5887BCF726"},"itemValueDefinitions":[{"uid":"A8A212610A57","unit":"km","name":"Distance per journey","fromData":false,"path":"distancePerJourney","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"D2AB505D2D91","name":"Type","fromData":true,"path":"type","fromProfile":false,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 09:30:44.0"},"drillDown":true},{"uid":"41EC337E5C79","name":"Number of journeys","fromData":false,"path":"numberOfJourneys","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"9BAFC976044B","name":"Source","fromData":true,"path":"source","fromProfile":false,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"9813267B616E","name":"Country","fromData":false,"path":"country","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"263DE76AF8AA","name":"kgCO2 Per Passenger Km IE","fromData":true,"path":"kgCO2PerPassengerKmIE","fromProfile":false,"valueDefinition":{"uid":"996AE5477B3F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"kgCO2PerKm","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"F5550D71085F","name":"kgCO2 Per Passenger Km","fromData":true,"path":"kgCO2PerKmPassenger","fromProfile":false,"valueDefinition":{"uid":"996AE5477B3F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"kgCO2PerKm","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"FE166C7602BB","name":"Typical journey distance","fromData":true,"path":"typicalJourneyDistance","fromProfile":false,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"2F76AB4E3C0F","name":"Journey frequency","fromData":false,"path":"journeyFrequency","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"B0F02E544603","name":"Number of passengers","fromData":false,"path":"numberOfPassengers","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"28D0B8C4F52A","name":"Use typical distance","fromData":false,"path":"useTypicalDistance","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"perUnit":"month","uid":"6334117D28A0","unit":"km","name":"Distance Km Per Month","fromData":false,"path":"distanceKmPerMonth","fromProfile":true,"valueDefinition":{"uid":"B691497F1CF2","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"kM","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"98EA75911467","unit":"km","name":"Distance per journey","fromData":false,"path":"distancePerJourney","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"uid":"584BEA802996","name":"Is return","fromData":false,"path":"isReturn","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 09:30:44.0"},"drillDown":false},{"perUnit":"year","uid":"6CBF739E12F0","unit":"km","name":"Distance","fromData":false,"path":"distance","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"drillDown":false}],"itemDefinition":{"uid":"BD88D30D1214"}}'))
|
63
|
+
@data = AMEE::Admin::ItemValueDefinitionList.new(connection,"BD88D30D1214")
|
64
|
+
@data.length.should==15
|
65
|
+
@data.first.uid.should=='A8A212610A57'
|
66
|
+
@data.first.name.should == "Distance per journey"
|
67
|
+
@data.first.path.should == "distancePerJourney"
|
68
|
+
@data.first.unit.should == "km"
|
69
|
+
@data.first.perunit.should == nil
|
70
|
+
@data.first.profile?.should == true
|
71
|
+
@data.first.drill?.should == false
|
72
|
+
@data.first.data?.should == false
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should fail gracefully with incorrect XML data" do
|
76
|
+
connection = flexmock "connection"
|
77
|
+
connection.should_receive(:retries).and_return(0).once
|
78
|
+
xml = '<?xml version="1.0" encoding="UTF-8"?><Resources></Resources>'
|
79
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions", {}).and_return(flexmock(:body => xml))
|
80
|
+
connection.should_receive(:expire).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions").once
|
81
|
+
lambda{AMEE::Admin::ItemValueDefinitionList.new(connection, "BD88D30D1214")}.should raise_error(AMEE::BadData)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should fail gracefully with incorrect JSON data" do
|
85
|
+
connection = flexmock "connection"
|
86
|
+
connection.should_receive(:retries).and_return(0).once
|
87
|
+
json = '{}'
|
88
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions", {}).and_return(flexmock(:body => json))
|
89
|
+
connection.should_receive(:expire).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions").once
|
90
|
+
lambda{AMEE::Admin::ItemValueDefinitionList.new(connection, "BD88D30D1214")}.should raise_error(AMEE::BadData)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should fail gracefully on other errors" do
|
94
|
+
connection = flexmock "connection"
|
95
|
+
connection.should_receive(:retries).and_return(0).once
|
96
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions", {}).and_raise(Timeout::Error)
|
97
|
+
lambda{AMEE::Admin::ItemValueDefinitionList.new(connection, "BD88D30D1214")}.should raise_error(Timeout::Error)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe AMEE::Admin::ItemValueDefinition, "with an authenticated connection" do
|
102
|
+
|
103
|
+
it "should parse profile item XML correctly" do
|
104
|
+
connection = flexmock "connection"
|
105
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions/A8A212610A57", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8" standalone="no"?><Resources><ItemValueDefinitionResource><ItemValueDefinition created="2009-03-20 00:00:00.0" modified="2009-03-20 00:00:00.0" uid="A8A212610A57"><Path>distancePerJourney</Path><Name>Distance per journey</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>km</Unit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown><Value/><Choices/><AllowedRoles/><Environment uid="5F5887BCF726"/><ItemDefinition uid="BD88D30D1214"/><AliasedTo/><APIVersions><APIVersion>2.0</APIVersion></APIVersions></ItemValueDefinition></ItemValueDefinitionResource></Resources>'))
|
106
|
+
@data = AMEE::Admin::ItemValueDefinition.load(connection,"BD88D30D1214","A8A212610A57")
|
107
|
+
@data.uid.should == "A8A212610A57"
|
108
|
+
@data.itemdefuid.should == 'BD88D30D1214'
|
109
|
+
@data.created.should == DateTime.new(2009,3,20)
|
110
|
+
@data.modified.should == DateTime.new(2009,3,20)
|
111
|
+
@data.name.should == "Distance per journey"
|
112
|
+
@data.path.should == "distancePerJourney"
|
113
|
+
@data.unit.should == "km"
|
114
|
+
@data.perunit.should == nil
|
115
|
+
@data.profile?.should == true
|
116
|
+
@data.drill?.should == false
|
117
|
+
@data.data?.should == false
|
118
|
+
@data.valuetype.should == 'DECIMAL'
|
119
|
+
@data.default.should == nil
|
120
|
+
@data.choices.should == []
|
121
|
+
@data.versions.should == ['2.0']
|
122
|
+
@data.full_path.should == '/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions/A8A212610A57'
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should parse data item XML correctly" do
|
126
|
+
connection = flexmock "connection"
|
127
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions/9BAFC976044B", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8" standalone="no"?><Resources><ItemValueDefinitionResource><ItemValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="9BAFC976044B"><Path>source</Path><Name>Source</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>false</DrillDown><Value>42</Value><Choices>foo,bar</Choices><AllowedRoles/><Environment uid="5F5887BCF726"/><ItemDefinition uid="BD88D30D1214"/><AliasedTo/><APIVersions><APIVersion>1.0</APIVersion><APIVersion>2.0</APIVersion></APIVersions></ItemValueDefinition></ItemValueDefinitionResource></Resources>'))
|
128
|
+
|
129
|
+
@data = AMEE::Admin::ItemValueDefinition.load(connection,"BD88D30D1214","9BAFC976044B")
|
130
|
+
@data.uid.should == "9BAFC976044B"
|
131
|
+
@data.itemdefuid.should == 'BD88D30D1214'
|
132
|
+
@data.created.should == DateTime.new(2007,7,27,9,30,44)
|
133
|
+
@data.modified.should == DateTime.new(2007,7,27,9,30,44)
|
134
|
+
@data.name.should == "Source"
|
135
|
+
@data.path.should == "source"
|
136
|
+
@data.unit.should == nil
|
137
|
+
@data.perunit.should == nil
|
138
|
+
@data.profile?.should == false
|
139
|
+
@data.drill?.should == false
|
140
|
+
@data.data?.should == true
|
141
|
+
@data.valuetype.should == 'TEXT'
|
142
|
+
@data.default.should == "42"
|
143
|
+
@data.choices.should == ['foo', 'bar']
|
144
|
+
@data.versions.should == ['1.0', '2.0']
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should parse drill item XML correctly" do
|
148
|
+
connection = flexmock "connection"
|
149
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions/D2AB505D2D91", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8" standalone="no"?><Resources><ItemValueDefinitionResource><ItemValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="D2AB505D2D91"><Path>type</Path><Name>Type</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>false</FromProfile><FromData>true</FromData><DrillDown>true</DrillDown><Value/><Choices/><AllowedRoles/><Environment uid="5F5887BCF726"/><ItemDefinition uid="BD88D30D1214"/><AliasedTo/><APIVersions><APIVersion>1.0</APIVersion><APIVersion>2.0</APIVersion></APIVersions></ItemValueDefinition></ItemValueDefinitionResource></Resources>'))
|
150
|
+
@data = AMEE::Admin::ItemValueDefinition.load(connection,"BD88D30D1214","D2AB505D2D91")
|
151
|
+
@data.uid.should == "D2AB505D2D91"
|
152
|
+
@data.itemdefuid.should == 'BD88D30D1214'
|
153
|
+
@data.created.should == DateTime.new(2007,7,27,9,30,44)
|
154
|
+
@data.modified.should == DateTime.new(2007,7,27,9,30,44)
|
155
|
+
@data.name.should == "Type"
|
156
|
+
@data.path.should == "type"
|
157
|
+
@data.unit.should == nil
|
158
|
+
@data.perunit.should == nil
|
159
|
+
@data.profile?.should == false
|
160
|
+
@data.drill?.should == true
|
161
|
+
@data.data?.should == false
|
162
|
+
@data.valuetype.should == 'TEXT'
|
163
|
+
@data.default.should == nil
|
164
|
+
@data.choices.should == []
|
165
|
+
@data.versions.should == ['1.0', '2.0']
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should parse profile item JSON correctly" do
|
169
|
+
connection = flexmock "connection"
|
170
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions/A8A212610A57", {}).and_return(flexmock(:body => '{"itemValueDefinition":{"uid":"A8A212610A57","choices":"","itemDefinition":{"uid":"BD88D30D1214"},"fromProfile":true,"drillDown":false,"modified":"2009-03-20 00:00:00.0","unit":"km","apiVersions":[{"apiVersion":"2.0"}],"environment":{"uid":"5F5887BCF726"},"created":"2009-03-20 00:00:00.0","name":"Distance per journey","path":"distancePerJourney","fromData":false,"value":"","aliasedTo":null,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 09:30:44.0"},"allowedRoles":""}}'))
|
171
|
+
@data = AMEE::Admin::ItemValueDefinition.load(connection,"BD88D30D1214","A8A212610A57")
|
172
|
+
@data.uid.should == "A8A212610A57"
|
173
|
+
@data.itemdefuid.should == 'BD88D30D1214'
|
174
|
+
@data.created.should == DateTime.new(2009,3,20)
|
175
|
+
@data.modified.should == DateTime.new(2009,3,20)
|
176
|
+
@data.name.should == "Distance per journey"
|
177
|
+
@data.path.should == "distancePerJourney"
|
178
|
+
@data.unit.should == "km"
|
179
|
+
@data.perunit.should == nil
|
180
|
+
@data.profile?.should == true
|
181
|
+
@data.drill?.should == false
|
182
|
+
@data.data?.should == false
|
183
|
+
@data.valuetype.should == 'DECIMAL'
|
184
|
+
@data.default.should == nil
|
185
|
+
@data.choices.should == []
|
186
|
+
@data.versions.should == ['2.0']
|
187
|
+
@data.full_path.should == '/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions/A8A212610A57'
|
188
|
+
end
|
189
|
+
|
190
|
+
it "should parse data item JSON correctly" do
|
191
|
+
connection = flexmock "connection"
|
192
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions/9BAFC976044B", {}).and_return(flexmock(:body => '{"itemValueDefinition":{"uid":"9BAFC976044B","choices":"foo,bar","itemDefinition":{"uid":"BD88D30D1214"},"fromProfile":false,"drillDown":false,"modified":"2007-07-27 09:30:44.0","apiVersions":[{"apiVersion":"1.0"},{"apiVersion":"2.0"}],"environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","name":"Source","path":"source","fromData":true,"value":"42","aliasedTo":null,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 09:30:44.0"},"allowedRoles":""}}'))
|
193
|
+
|
194
|
+
@data = AMEE::Admin::ItemValueDefinition.load(connection,"BD88D30D1214","9BAFC976044B")
|
195
|
+
@data.uid.should == "9BAFC976044B"
|
196
|
+
@data.itemdefuid.should == 'BD88D30D1214'
|
197
|
+
@data.created.should == DateTime.new(2007,7,27,9,30,44)
|
198
|
+
@data.modified.should == DateTime.new(2007,7,27,9,30,44)
|
199
|
+
@data.name.should == "Source"
|
200
|
+
@data.path.should == "source"
|
201
|
+
@data.unit.should == nil
|
202
|
+
@data.perunit.should == nil
|
203
|
+
@data.profile?.should == false
|
204
|
+
@data.drill?.should == false
|
205
|
+
@data.data?.should == true
|
206
|
+
@data.valuetype.should == 'TEXT'
|
207
|
+
@data.default.should == "42"
|
208
|
+
@data.choices.should == ['foo', 'bar']
|
209
|
+
@data.versions.should == ['1.0', '2.0']
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should parse drill item JSON correctly" do
|
213
|
+
connection = flexmock "connection"
|
214
|
+
connection.should_receive(:get).with("/definitions/itemDefinitions/BD88D30D1214/itemValueDefinitions/D2AB505D2D91", {}).and_return(flexmock(:body => '{"itemValueDefinition":{"uid":"D2AB505D2D91","choices":"","itemDefinition":{"uid":"BD88D30D1214"},"fromProfile":false,"drillDown":true,"modified":"2007-07-27 09:30:44.0","apiVersions":[{"apiVersion":"1.0"},{"apiVersion":"2.0"}],"environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","name":"Type","path":"type","fromData":true,"value":"","aliasedTo":null,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 09:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 09:30:44.0"},"allowedRoles":""}}'))
|
215
|
+
@data = AMEE::Admin::ItemValueDefinition.load(connection,"BD88D30D1214","D2AB505D2D91")
|
216
|
+
@data.uid.should == "D2AB505D2D91"
|
217
|
+
@data.itemdefuid.should == 'BD88D30D1214'
|
218
|
+
@data.created.should == DateTime.new(2007,7,27,9,30,44)
|
219
|
+
@data.modified.should == DateTime.new(2007,7,27,9,30,44)
|
220
|
+
@data.name.should == "Type"
|
221
|
+
@data.path.should == "type"
|
222
|
+
@data.unit.should == nil
|
223
|
+
@data.perunit.should == nil
|
224
|
+
@data.profile?.should == false
|
225
|
+
@data.drill?.should == true
|
226
|
+
@data.data?.should == false
|
227
|
+
@data.valuetype.should == 'TEXT'
|
228
|
+
@data.default.should == nil
|
229
|
+
@data.choices.should == []
|
230
|
+
@data.versions.should == ['1.0', '2.0']
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should fail gracefully with incorrect data" do
|
234
|
+
connection = flexmock "connection"
|
235
|
+
xml = '<?xml version="1.0" encoding="UTF-8"?><Resources></Resources>'
|
236
|
+
connection.should_receive(:get).with("/admin", {}).and_return(flexmock(:body => xml))
|
237
|
+
lambda{AMEE::Admin::ItemValueDefinition.get(connection, "/admin")}.should raise_error(AMEE::BadData)
|
238
|
+
end
|
239
|
+
|
240
|
+
it "should fail gracefully with incorrect JSON data" do
|
241
|
+
connection = flexmock "connection"
|
242
|
+
json = '{}'
|
243
|
+
connection.should_receive(:get).with("/admin", {}).and_return(flexmock(:body => json))
|
244
|
+
lambda{AMEE::Admin::ItemValueDefinition.get(connection, "/admin")}.should raise_error(AMEE::BadData)
|
245
|
+
end
|
246
|
+
|
247
|
+
it "should fail gracefully on other errors" do
|
248
|
+
connection = flexmock "connection"
|
249
|
+
connection.should_receive(:get).with("/admin", {}).and_raise("unidentified error")
|
250
|
+
lambda{AMEE::Admin::ItemValueDefinition.get(connection, "/admin")}.should raise_error(AMEE::BadData)
|
251
|
+
end
|
252
|
+
|
253
|
+
end
|
data/spec/logger_spec.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# To change this template, choose Tools | Templates
|
2
|
+
# and open the template in the editor.
|
3
|
+
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
5
|
+
|
6
|
+
describe Logger do
|
7
|
+
it "Should create default error log" do
|
8
|
+
AMEE::Logger::log.should be_a Log4r::Logger
|
9
|
+
AMEE::Logger::log.debug("Test log message")
|
10
|
+
end
|
11
|
+
it "Can log to a different logger" do
|
12
|
+
AMEE::Logger.to Log4r::Logger.new('Mylogger')
|
13
|
+
AMEE::Logger::log.debug("Test log message 2")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
data/spec/object_spec.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe AMEE::Object do
|
4
|
+
|
5
|
+
it "can be created from hash of data" do
|
6
|
+
data = {}
|
7
|
+
data[:uid] = @uid = 'AB69E4AE213B'
|
8
|
+
data[:created] = @creation_time = Time.now - 10000
|
9
|
+
data[:modified] = @modification_time = Time.now - 1000
|
10
|
+
data[:path] = @path = "/transport/plane/generic/ABCD1234"
|
11
|
+
data[:name] = @name = "kgPerPassengerJourney"
|
12
|
+
o = AMEE::Object.new(data)
|
13
|
+
o.uid.should == @uid
|
14
|
+
o.created.should == @creation_time
|
15
|
+
o.modified.should == @modification_time
|
16
|
+
o.path.should == @path
|
17
|
+
o.name.should == @name
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should have a uid" do
|
21
|
+
AMEE::Object.new.should respond_to(:uid)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should have a created time" do
|
25
|
+
AMEE::Object.new.should respond_to(:created)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should have a modified time" do
|
29
|
+
AMEE::Object.new.should respond_to(:modified)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should have a name" do
|
33
|
+
AMEE::Object.new.should respond_to(:name)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "can be created without data" do
|
37
|
+
o = AMEE::Object.new
|
38
|
+
o.uid.should be_nil
|
39
|
+
o.created.should == o.modified
|
40
|
+
o.path.should be_nil
|
41
|
+
o.name.should be_nil
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
test_set = {
|
4
|
+
'attrib_test/@attrib' => 'attribute_value',
|
5
|
+
'attrib_test/@non_existent_attrib' => nil,
|
6
|
+
'attrib_test/@empty_attrib' => '',
|
7
|
+
'content_test' => 'content',
|
8
|
+
'whitespace_content_test' => "\n ",
|
9
|
+
'empty_content_test' => nil,
|
10
|
+
'self_closing_content_test' => nil,
|
11
|
+
'multi_attrib_test/attrib_test/@attrib' => [
|
12
|
+
'attribute_value',
|
13
|
+
'attribute_value_1',
|
14
|
+
''
|
15
|
+
],
|
16
|
+
'multi_content_test/content' => [
|
17
|
+
'content',
|
18
|
+
"\n ",
|
19
|
+
nil,
|
20
|
+
nil
|
21
|
+
],
|
22
|
+
}
|
23
|
+
|
24
|
+
class REXMLTestObject
|
25
|
+
include ParseHelper
|
26
|
+
def xmlpathpreamble
|
27
|
+
'/root/'
|
28
|
+
end
|
29
|
+
def initialize
|
30
|
+
@doc = REXML::Document.new(fixture('parse_test.xml'))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe ParseHelper, 'using REXML' do
|
35
|
+
|
36
|
+
before :all do
|
37
|
+
@obj = REXMLTestObject.new
|
38
|
+
end
|
39
|
+
|
40
|
+
test_set.each_pair do |xpath, res|
|
41
|
+
it "should parse #{xpath} to #{res}" do
|
42
|
+
@obj.send(:x, xpath).should eql res
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
class NokogiriTestObject
|
50
|
+
include ParseHelper
|
51
|
+
def xmlpathpreamble
|
52
|
+
'/root/'
|
53
|
+
end
|
54
|
+
def initialize
|
55
|
+
@doc = load_xml_doc(fixture('parse_test.xml'))
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe ParseHelper, 'using Nokogiri' do
|
60
|
+
|
61
|
+
before :all do
|
62
|
+
@obj = NokogiriTestObject.new
|
63
|
+
end
|
64
|
+
|
65
|
+
test_set.each_pair do |xpath, res|
|
66
|
+
it "should parse #{xpath} to #{res}" do
|
67
|
+
@obj.send(:x, xpath).should eql res
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
end
|
@@ -0,0 +1,565 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe AMEE::Profile::Category do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@cat = AMEE::Profile::Category.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should have common AMEE object properties" do
|
10
|
+
@cat.is_a?(AMEE::Profile::Object).should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have a total co2 amount and unit" do
|
14
|
+
@cat.should respond_to(:total_amount)
|
15
|
+
@cat.should respond_to(:total_amount_unit)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have children" do
|
19
|
+
@cat.should respond_to(:children)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have items" do
|
23
|
+
@cat.should respond_to(:items)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should initialize AMEE::Object data on creation" do
|
27
|
+
uid = 'ABCD1234'
|
28
|
+
@cat = AMEE::Profile::Category.new(:uid => uid)
|
29
|
+
@cat.uid.should == uid
|
30
|
+
end
|
31
|
+
|
32
|
+
it "can be created with hash of data" do
|
33
|
+
children = ["one", "two"]
|
34
|
+
items = ["three", "four"]
|
35
|
+
@cat = AMEE::Profile::Category.new(:children => children, :items => items)
|
36
|
+
@cat.children.should == children
|
37
|
+
@cat.items.should == items
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
describe AMEE::Profile::Category, "accessing AMEE V0" do
|
43
|
+
|
44
|
+
it "should load Profile Category" do
|
45
|
+
connection = flexmock "connection"
|
46
|
+
connection.should_receive(:version).and_return(1.0)
|
47
|
+
connection.should_receive(:get).with("/profiles/D4B9755F671D/home", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?><Resources><ProfileCategoryResource><DataCategory created="2007-04-16 17:50:43.0" modified="2007-04-16 17:50:43.0" uid="248D8617A389"><name>Home</name><path>home</path></DataCategory><Profile uid="D4B9755F671D"/><Children><DataCategories><DataCategory uid="3A72CC3F2AC9"><name>Television</name><path>television</path></DataCategory><DataCategory uid="51FF7A9A1D84"><name>Seasonal Billing</name><path>seasonal_billing</path></DataCategory><DataCategory uid="83B7E4488D34"><name>Heating</name><path>heating</path></DataCategory><DataCategory uid="8B5A3EF67252"><name>Fuel</name><path>fuel</path></DataCategory><DataCategory uid="97888F42B5D6"><name>Lighting</name><path>lighting</path></DataCategory><DataCategory uid="0D260A2B9E56"><name>Fuel Price</name><path>fuel_price</path></DataCategory><DataCategory uid="2A018E464460"><name>Appliances</name><path>appliances</path></DataCategory><DataCategory uid="A937C019FA6F"><name>Cooking</name><path>cooking</path></DataCategory></DataCategories></Children><ProfileDate>200902</ProfileDate></ProfileCategoryResource></Resources>'))
|
48
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/D4B9755F671D/home")
|
49
|
+
@cat.profile_uid.should == "D4B9755F671D"
|
50
|
+
@cat.profile_date.should == DateTime.new(2009, 2)
|
51
|
+
@cat.name.should == "Home"
|
52
|
+
@cat.path.should == "/home"
|
53
|
+
@cat.full_path.should == "/profiles/D4B9755F671D/home"
|
54
|
+
@cat.children.size.should be(8)
|
55
|
+
@cat.children[0][:uid].should == "3A72CC3F2AC9"
|
56
|
+
@cat.children[0][:name].should == "Television"
|
57
|
+
@cat.children[0][:path].should == "television"
|
58
|
+
@cat.pager.should be_nil
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should parse data items" do
|
62
|
+
connection = flexmock "connection"
|
63
|
+
connection.should_receive(:version).and_return(1.0)
|
64
|
+
connection.should_receive(:get).with("/profiles/D4B9755F671D/transport/transport", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?><Resources><ProfileCategoryResource><DataCategory created="2007-04-16 17:50:43.0" modified="2007-04-16 17:50:43.0" uid="CD13B9174A6A"><name>Transport</name><path>transport</path></DataCategory><Profile uid="D4B9755F671D"/><Children><DataCategories/><ProfileItems><ProfileItem created="2009-02-19 16:50:26.0" modified="2009-02-19 16:50:27.0" uid="05BB9D4AF86D"><validFrom>20090201</validFrom><end>false</end><transportAdhereToSpeedLimit>false</transportAdhereToSpeedLimit><transportTyresUnderInflated>false</transportTyresUnderInflated><transportAirConAverage>false</transportAirConAverage><transportKmPerLitre>1</transportKmPerLitre><transportEcoDriving>false</transportEcoDriving><transportDistance>0</transportDistance><amountPerMonth>21.42</amountPerMonth><transportAirConFull>false</transportAirConFull><dataItemUid>25A341E24BCE</dataItemUid><transportNumberOfJourneys>0.0833333333333333</transportNumberOfJourneys><name/><dataItemLabel>Flights, Short haul, Return</dataItemLabel></ProfileItem><ProfileItem created="2009-02-19 16:48:47.0" modified="2009-02-19 16:48:47.0" uid="D6FE02356302"><validFrom>20090201</validFrom><end>false</end><transportAdhereToSpeedLimit>false</transportAdhereToSpeedLimit><transportTyresUnderInflated>false</transportTyresUnderInflated><transportAirConAverage>false</transportAirConAverage><transportKmPerLitre>14.16</transportKmPerLitre><transportEcoDriving>false</transportEcoDriving><transportDistance>1340.83333333333</transportDistance><amountPerMonth>286.39</amountPerMonth><transportAirConFull>false</transportAirConFull><dataItemUid>3CAFBEA600F4</dataItemUid><transportNumberOfJourneys>0</transportNumberOfJourneys><name/><dataItemLabel>Car1, Fuel manufacturer consumption, Diesel</dataItemLabel></ProfileItem></ProfileItems></Children><ProfileDate>200902</ProfileDate><TotalAmountPerMonth>307.81</TotalAmountPerMonth></ProfileCategoryResource></Resources>'))
|
65
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/D4B9755F671D/transport/transport")
|
66
|
+
@cat.total_amount.should be_close(307.81, 1e-9)
|
67
|
+
@cat.total_amount_unit.should == "kg/month"
|
68
|
+
@cat.items.size.should be(2)
|
69
|
+
@cat.items[0][:uid].should == "05BB9D4AF86D"
|
70
|
+
@cat.items[0][:name].should be_nil
|
71
|
+
@cat.items[0][:path].should == "05BB9D4AF86D"
|
72
|
+
@cat.items[0][:dataItemLabel].should == "Flights, Short haul, Return"
|
73
|
+
@cat.items[0][:dataItemUid].should == "25A341E24BCE"
|
74
|
+
@cat.items[0][:validFrom].should == DateTime.new(2009, 2, 1)
|
75
|
+
@cat.items[0][:end].should == false
|
76
|
+
@cat.items[0][:amountPerMonth].should be_close(21.42, 1e-9)
|
77
|
+
@cat.items[0][:values].size.should be(8)
|
78
|
+
@cat.items[0][:values][:transportNumberOfJourneys].should == "0.0833333333333333"
|
79
|
+
@cat.items[0][:values][:transportEcoDriving].should == "false"
|
80
|
+
@cat.pager.should be_nil
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
describe AMEE::Profile::Category, "with an authenticated XML connection" do
|
86
|
+
|
87
|
+
it "should load Profile Category" do
|
88
|
+
connection = flexmock "connection"
|
89
|
+
connection.should_receive(:version).and_return(1.0)
|
90
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E/home", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?><Resources><ProfileCategoryResource><Path>/home</Path><ProfileDate>200809</ProfileDate><Profile uid="E54C5525AA3E"/><DataCategory uid="BBA3AC3E795E"><Name>Home</Name><Path>home</Path></DataCategory><Children><ProfileCategories><DataCategory uid="427DFCC65E52"><Name>Appliances</Name><Path>appliances</Path></DataCategory><DataCategory uid="30BA55A0C472"><Name>Energy</Name><Path>energy</Path></DataCategory><DataCategory uid="A46ECFA19333"><Name>Heating</Name><Path>heating</Path></DataCategory><DataCategory uid="150266DD4434"><Name>Lighting</Name><Path>lighting</Path></DataCategory></ProfileCategories></Children></ProfileCategoryResource></Resources>'))
|
91
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E/home")
|
92
|
+
@cat.profile_uid.should == "E54C5525AA3E"
|
93
|
+
@cat.profile_date.should == DateTime.new(2008, 9)
|
94
|
+
@cat.name.should == "Home"
|
95
|
+
@cat.path.should == "/home"
|
96
|
+
@cat.full_path.should == "/profiles/E54C5525AA3E/home"
|
97
|
+
@cat.children.size.should be(4)
|
98
|
+
@cat.children[0][:uid].should == "427DFCC65E52"
|
99
|
+
@cat.children[0][:name].should == "Appliances"
|
100
|
+
@cat.children[0][:path].should == "appliances"
|
101
|
+
@cat.pager.should be_nil
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should provide access to child objects" do
|
105
|
+
connection = flexmock "connection"
|
106
|
+
connection.should_receive(:version).and_return(1.0)
|
107
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E/home", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?><Resources><ProfileCategoryResource><Path>/home</Path><ProfileDate>200809</ProfileDate><Profile uid="E54C5525AA3E"/><DataCategory uid="BBA3AC3E795E"><Name>Home</Name><Path>home</Path></DataCategory><Children><ProfileCategories><DataCategory uid="427DFCC65E52"><Name>Appliances</Name><Path>appliances</Path></DataCategory><DataCategory uid="30BA55A0C472"><Name>Energy</Name><Path>energy</Path></DataCategory><DataCategory uid="A46ECFA19333"><Name>Heating</Name><Path>heating</Path></DataCategory><DataCategory uid="150266DD4434"><Name>Lighting</Name><Path>lighting</Path></DataCategory></ProfileCategories></Children></ProfileCategoryResource></Resources>'))
|
108
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E/home/appliances", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?><Resources><ProfileCategoryResource><Path>/home/appliances</Path><ProfileDate>200809</ProfileDate><Profile uid="E54C5525AA3E"/><DataCategory uid="427DFCC65E52"><Name>Appliances</Name><Path>appliances</Path></DataCategory><Children><ProfileCategories><DataCategory uid="3FE23FDC8CEA"><Name>Computers</Name><Path>computers</Path></DataCategory><DataCategory uid="54C8A44254AA"><Name>Cooking</Name><Path>cooking</Path></DataCategory><DataCategory uid="75AD9B83B7BF"><Name>Entertainment</Name><Path>entertainment</Path></DataCategory><DataCategory uid="4BD595E1873A"><Name>Kitchen</Name><Path>kitchen</Path></DataCategory><DataCategory uid="700D0771870A"><Name>Televisions</Name><Path>televisions</Path></DataCategory></ProfileCategories></Children></ProfileCategoryResource></Resources>'))
|
109
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E/home")
|
110
|
+
@child = @cat.child('appliances')
|
111
|
+
@child.path.should == "/home/appliances"
|
112
|
+
@child.full_path.should == "/profiles/E54C5525AA3E/home/appliances"
|
113
|
+
@child.children.size.should be(5)
|
114
|
+
@child.pager.should be_nil
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should parse data items" do
|
118
|
+
connection = flexmock "connection"
|
119
|
+
connection.should_receive(:version).and_return(1.0)
|
120
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E/home/energy/quantity", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?><Resources><ProfileCategoryResource><Path>/home/energy/quantity</Path><ProfileDate>200809</ProfileDate><Profile uid="E54C5525AA3E"/><DataCategory uid="A92693A99BAD"><Name>Quantity</Name><Path>quantity</Path></DataCategory><Children><ProfileCategories/><ProfileItems><ProfileItem created="2008-09-03 11:37:35.0" modified="2008-09-03 11:38:12.0" uid="FB07247AD937"><validFrom>20080902</validFrom><end>false</end><kWhPerMonth>12</kWhPerMonth><amountPerMonth>2.472</amountPerMonth><dataItemUid>66056991EE23</dataItemUid><kgPerMonth>0</kgPerMonth><path>FB07247AD937</path><litresPerMonth>0</litresPerMonth><name>gas</name><dataItemLabel>gas</dataItemLabel></ProfileItem><ProfileItem created="2008-09-03 11:40:44.0" modified="2008-09-03 11:41:54.0" uid="D9CBCDED44C5"><validFrom>20080901</validFrom><end>false</end><kWhPerMonth>500</kWhPerMonth><amountPerMonth>103.000</amountPerMonth><dataItemUid>66056991EE23</dataItemUid><kgPerMonth>0</kgPerMonth><path>D9CBCDED44C5</path><litresPerMonth>0</litresPerMonth><name>gas2</name><dataItemLabel>gas</dataItemLabel></ProfileItem></ProfileItems><Pager><Start>0</Start><From>1</From><To>2</To><Items>2</Items><CurrentPage>1</CurrentPage><RequestedPage>1</RequestedPage><NextPage>-1</NextPage><PreviousPage>-1</PreviousPage><LastPage>1</LastPage><ItemsPerPage>10</ItemsPerPage><ItemsFound>2</ItemsFound></Pager></Children><TotalAmountPerMonth>105.472</TotalAmountPerMonth></ProfileCategoryResource></Resources>'))
|
121
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E/home/energy/quantity")
|
122
|
+
@cat.total_amount.should be_close(105.472, 1e-9)
|
123
|
+
@cat.total_amount_unit.should == "kg/month"
|
124
|
+
@cat.items.size.should be(2)
|
125
|
+
@cat.items[0][:uid].should == "FB07247AD937"
|
126
|
+
@cat.items[0][:name].should == "gas"
|
127
|
+
@cat.items[0][:path].should == "FB07247AD937"
|
128
|
+
@cat.items[0][:dataItemLabel].should == "gas"
|
129
|
+
@cat.items[0][:dataItemUid].should == "66056991EE23"
|
130
|
+
@cat.items[0][:validFrom].should == DateTime.new(2008, 9, 2)
|
131
|
+
@cat.items[0][:end].should == false
|
132
|
+
@cat.items[0][:amountPerMonth].should be_close(2.472, 1e-9)
|
133
|
+
@cat.items[0][:values].size.should be(3)
|
134
|
+
@cat.items[0][:values][:kWhPerMonth].should == "12"
|
135
|
+
@cat.items[0][:values][:kgPerMonth].should == "0"
|
136
|
+
@cat.items[0][:values][:litresPerMonth].should == "0"
|
137
|
+
@cat.pager.should_not be_nil
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should fail gracefully with incorrect data" do
|
141
|
+
connection = flexmock "connection"
|
142
|
+
connection.should_receive(:version).and_return(1.0)
|
143
|
+
xml = '<?xml version="1.0" encoding="UTF-8"?><Resources></Resources>'
|
144
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E", {}).and_return(flexmock(:body => xml))
|
145
|
+
lambda{AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E")}.should raise_error(AMEE::BadData)
|
146
|
+
end
|
147
|
+
|
148
|
+
it "parses recursive GET requests" do
|
149
|
+
connection = flexmock "connection"
|
150
|
+
connection.should_receive(:version).and_return(1.0)
|
151
|
+
connection.should_receive(:get).with("/profiles/BE22C1732952/transport/car", {:recurse=>true}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?><Resources><ProfileCategoryResource><Path>/transport/car</Path><ProfileDate>200901</ProfileDate><Profile uid="BE22C1732952"/><DataCategory uid="1D95119FB149"><Name>Car</Name><Path>car</Path></DataCategory><Children><ProfileCategories><ProfileCategory><Path>/transport/car/bands</Path><DataCategory uid="883ADD27228F"><Name>Bands</Name><Path>bands</Path></DataCategory></ProfileCategory><ProfileCategory><Path>/transport/car/generic</Path><DataCategory uid="87E55DA88017"><Name>Generic</Name><Path>generic</Path></DataCategory><Children><ProfileCategories><ProfileCategory><Path>/transport/car/generic/electric</Path><DataCategory uid="417DD367E9AA"><Name>Electric</Name><Path>electric</Path></DataCategory></ProfileCategory></ProfileCategories><ProfileItems><ProfileItem created="2009-01-05 13:58:52.0" modified="2009-01-05 13:59:05.0" uid="8450D6D97D2D"><distanceKmPerMonth>1</distanceKmPerMonth><validFrom>20090101</validFrom><end>false</end><airconTypical>true</airconTypical><ecoDriving>false</ecoDriving><airconFull>false</airconFull><kmPerLitreOwn>0</kmPerLitreOwn><country/><tyresUnderinflated>false</tyresUnderinflated><amountPerMonth>0.265</amountPerMonth><occupants>-1</occupants><kmPerLitre>0</kmPerLitre><dataItemUid>4F6CBCEE95F7</dataItemUid><regularlyServiced>true</regularlyServiced><path>8450D6D97D2D</path><name/><dataItemLabel>diesel, large</dataItemLabel></ProfileItem></ProfileItems></Children><TotalAmountPerMonth>0.265</TotalAmountPerMonth></ProfileCategory><ProfileCategory><Path>/transport/car/specific</Path><DataCategory uid="95E76249584D"><Name>Specific</Name><Path>specific</Path></DataCategory></ProfileCategory></ProfileCategories></Children></ProfileCategoryResource></Resources>'))
|
152
|
+
cat = AMEE::Profile::Category.get(connection, "/profiles/BE22C1732952/transport/car", :recurse => true)
|
153
|
+
cat.items.size.should == 0
|
154
|
+
cat.children.size.should == 3
|
155
|
+
cat.children[1][:name].should == "Generic"
|
156
|
+
cat.children[1][:path].should == "generic"
|
157
|
+
cat.children[1][:uid].should == "87E55DA88017"
|
158
|
+
cat.children[1][:totalAmountPerMonth].should == 0.265
|
159
|
+
cat.children[1][:children].size.should == 1
|
160
|
+
cat.children[1][:children][0][:name].should == "Electric"
|
161
|
+
cat.children[1][:children][0][:path].should == "electric"
|
162
|
+
cat.children[1][:children][0][:uid].should == "417DD367E9AA"
|
163
|
+
cat.children[1][:items].size.should == 1
|
164
|
+
cat.children[1][:items][0][:amountPerMonth].should == 0.265
|
165
|
+
cat.children[1][:items][0][:dataItemLabel].should == "diesel, large"
|
166
|
+
cat.children[1][:items][0][:dataItemUid].should == "4F6CBCEE95F7"
|
167
|
+
cat.children[1][:items][0][:values][:airconTypical].should == "true"
|
168
|
+
cat.children[1][:items][0][:uid].should == "8450D6D97D2D"
|
169
|
+
cat.pager.should be_nil
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
describe AMEE::Profile::Category, "with an authenticated version 2 XML connection" do
|
175
|
+
|
176
|
+
it "should load Profile Category" do
|
177
|
+
connection = flexmock "connection"
|
178
|
+
connection.should_receive(:version).and_return(2.0)
|
179
|
+
connection.should_receive(:get).with("/profiles/26532D8EFA9D/home", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?> <Resources xmlns="http://schemas.amee.cc/2.0"><ProfileCategoryResource><Path>/home</Path><Profile uid="26532D8EFA9D"/><Environment created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="5F5887BCF726"><Name>AMEE</Name><Path/><Description/><Owner/><ItemsPerPage>10</ItemsPerPage><ItemsPerFeed>10</ItemsPerFeed></Environment><DataCategory uid="BBA3AC3E795E"><Name>Home</Name><Path>home</Path></DataCategory><ProfileCategories><DataCategory uid="427DFCC65E52"><Name>Appliances</Name><Path>appliances</Path></DataCategory><DataCategory uid="30BA55A0C472"><Name>Energy</Name><Path>energy</Path></DataCategory><DataCategory uid="A46ECFA19333"><Name>Heating</Name><Path>heating</Path></DataCategory><DataCategory uid="150266DD4434"><Name>Lighting</Name><Path>lighting</Path></DataCategory><DataCategory uid="6553150F96CE"><Name>Waste</Name><Path>waste</Path></DataCategory><DataCategory uid="07362DCC9E7B"><Name>Water</Name><Path>water</Path></DataCategory></ProfileCategories></ProfileCategoryResource></Resources>'))
|
180
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/26532D8EFA9D/home")
|
181
|
+
@cat.profile_uid.should == "26532D8EFA9D"
|
182
|
+
@cat.name.should == "Home"
|
183
|
+
@cat.path.should == "/home"
|
184
|
+
@cat.full_path.should == "/profiles/26532D8EFA9D/home"
|
185
|
+
@cat.children.size.should be(6)
|
186
|
+
@cat.children[0][:uid].should == "427DFCC65E52"
|
187
|
+
@cat.children[0][:name].should == "Appliances"
|
188
|
+
@cat.children[0][:path].should == "appliances"
|
189
|
+
@cat.pager.should be_nil
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should parse data items" do
|
193
|
+
connection = flexmock "connection"
|
194
|
+
connection.should_receive(:version).and_return(2.0)
|
195
|
+
connection.should_receive(:get).with("/profiles/26532D8EFA9D/home/energy/quantity", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?> <Resources xmlns="http://schemas.amee.cc/2.0"><ProfileCategoryResource><Path>/home/energy/quantity</Path><Profile uid="9BFB0C1CD78A"/><Environment created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="5F5887BCF726"><Name>AMEE</Name><Path/><Description/><Owner/><ItemsPerPage>10</ItemsPerPage><ItemsPerFeed>10</ItemsPerFeed></Environment><DataCategory uid="A92693A99BAD"><Name>Quantity</Name><Path>quantity</Path></DataCategory><ProfileCategories/><ProfileItems><ProfileItem created="2009-02-11T13:50+0000" modified="2009-02-11T13:50+0000" uid="30C00AD33033"><Name>gas</Name><ItemValues><ItemValue uid="570843C78E93"><Path>paymentFrequency</Path><Name>Payment frequency</Name><Value/><Unit/><PerUnit/><ItemValueDefinition uid="E0EFED6FD7E6"><Path>paymentFrequency</Path><Name>Payment frequency</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="C71B646F8502"><Path>greenTariff</Path><Name>Green tariff</Name><Value/><Unit/><PerUnit/><ItemValueDefinition uid="63005554AE8A"><Path>greenTariff</Path><Name>Green tariff</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="8231B25E416F"><Path>season</Path><Name>Season</Name><Value/><Unit/><PerUnit/><ItemValueDefinition uid="527AADFB3B65"><Path>season</Path><Name>Season</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="AE5413F7A459"><Path>includesHeating</Path><Name>Includes Heating</Name><Value>false</Value><Unit/><PerUnit/><ItemValueDefinition uid="1740E500BDAB"><Path>includesHeating</Path><Name>Includes Heating</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="20FC928B045A"><Path>massPerTime</Path><Name>Mass Per Time</Name><Value/><Unit>kg</Unit><PerUnit>year</PerUnit><ItemValueDefinition uid="80F561BE56E2"><Path>massPerTime</Path><Name>Mass Per Time</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kg</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="3835DF705F9D"><Path>energyConsumption</Path><Name>Energy Consumption</Name><Value>13</Value><Unit>kWh</Unit><PerUnit>month</PerUnit><ItemValueDefinition uid="9801C6552128"><Path>energyConsumption</Path><Name>Energy Consumption</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kWh</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="064C0DB99F75"><Path>currentReading</Path><Name>Current Reading</Name><Value/><Unit>kWh</Unit><PerUnit/><ItemValueDefinition uid="6EF1FF3361F0"><Path>currentReading</Path><Name>Current Reading</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kWh</Unit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="06B35B089155"><Path>lastReading</Path><Name>Last Reading</Name><Value/><Unit>kWh</Unit><PerUnit/><ItemValueDefinition uid="7DDB0BB0B6CA"><Path>lastReading</Path><Name>Last Reading</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kWh</Unit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="CEBEA6C086B8"><Path>volumePerTime</Path><Name>Volume Per Time</Name><Value/><Unit>L</Unit><PerUnit>year</PerUnit><ItemValueDefinition uid="CDA01AFCF91B"><Path>volumePerTime</Path><Name>Volume Per Time</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>L</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="0E77ACB084A5"><Path>deliveries</Path><Name>Number of deliveries</Name><Value/><Unit>year</Unit><PerUnit/><ItemValueDefinition uid="DEB369A7AD4E"><Path>deliveries</Path><Name>Number of deliveries</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>year</Unit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue></ItemValues><Amount unit="kg/year">29.664</Amount><Amounts><Amount default="true" perUnit="year" type="CO2" unit="kg">29.664</Amount></Amounts><StartDate>2008-09-02T01:00+0100</StartDate><EndDate/><DataItem uid="66056991EE23"><Label>gas</Label></DataItem></ProfileItem><ProfileItem created="2009-02-11T14:13+0000" modified="2009-02-11T14:13+0000" uid="BC0B730255FB"><Name>BC0B730255FB</Name><ItemValues><ItemValue uid="C3DEE5535925"><Path>paymentFrequency</Path><Name>Payment frequency</Name><Value/><Unit/><PerUnit/><ItemValueDefinition uid="E0EFED6FD7E6"><Path>paymentFrequency</Path><Name>Payment frequency</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="DFBD9254685A"><Path>greenTariff</Path><Name>Green tariff</Name><Value/><Unit/><PerUnit/><ItemValueDefinition uid="63005554AE8A"><Path>greenTariff</Path><Name>Green tariff</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="CB8705EB55C5"><Path>season</Path><Name>Season</Name><Value/><Unit/><PerUnit/><ItemValueDefinition uid="527AADFB3B65"><Path>season</Path><Name>Season</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="A282A7875AEB"><Path>includesHeating</Path><Name>Includes Heating</Name><Value>false</Value><Unit/><PerUnit/><ItemValueDefinition uid="1740E500BDAB"><Path>includesHeating</Path><Name>Includes Heating</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="2624A9954F17"><Path>massPerTime</Path><Name>Mass Per Time</Name><Value/><Unit>kg</Unit><PerUnit>year</PerUnit><ItemValueDefinition uid="80F561BE56E2"><Path>massPerTime</Path><Name>Mass Per Time</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kg</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="44518F8EC8DC"><Path>energyConsumption</Path><Name>Energy Consumption</Name><Value/><Unit>kWh</Unit><PerUnit>year</PerUnit><ItemValueDefinition uid="9801C6552128"><Path>energyConsumption</Path><Name>Energy Consumption</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kWh</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="C97FDB7CE8DF"><Path>currentReading</Path><Name>Current Reading</Name><Value/><Unit>kWh</Unit><PerUnit/><ItemValueDefinition uid="6EF1FF3361F0"><Path>currentReading</Path><Name>Current Reading</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kWh</Unit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="B540FB4C05C7"><Path>lastReading</Path><Name>Last Reading</Name><Value/><Unit>kWh</Unit><PerUnit/><ItemValueDefinition uid="7DDB0BB0B6CA"><Path>lastReading</Path><Name>Last Reading</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kWh</Unit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="32A873ED2142"><Path>volumePerTime</Path><Name>Volume Per Time</Name><Value/><Unit>L</Unit><PerUnit>year</PerUnit><ItemValueDefinition uid="CDA01AFCF91B"><Path>volumePerTime</Path><Name>Volume Per Time</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>L</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue><ItemValue uid="88C0DC759E16"><Path>deliveries</Path><Name>Number of deliveries</Name><Value/><Unit>year</Unit><PerUnit/><ItemValueDefinition uid="DEB369A7AD4E"><Path>deliveries</Path><Name>Number of deliveries</Name><ValueDefinition created="2007-07-27 09:30:44.0" modified="2007-07-27 09:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DOUBLE</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>year</Unit><FromProfile>true</FromProfile><FromData>false</FromData></ItemValueDefinition></ItemValue></ItemValues><Amount unit="kg/year">0.000</Amount><StartDate>2009-02-11T14:13+0000</StartDate><EndDate/><DataItem uid="A70149AF0F26"><Label>coal</Label></DataItem></ProfileItem></ProfileItems><Pager><Start>0</Start><From>1</From><To>2</To><Items>2</Items><CurrentPage>1</CurrentPage><RequestedPage>1</RequestedPage><NextPage>-1</NextPage><PreviousPage>-1</PreviousPage><LastPage>1</LastPage><ItemsPerPage>10</ItemsPerPage><ItemsFound>2</ItemsFound></Pager><TotalAmount unit="kg/year">1265.664</TotalAmount></ProfileCategoryResource></Resources>'))
|
196
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/26532D8EFA9D/home/energy/quantity")
|
197
|
+
@cat.total_amount.should be_close(1265.664, 1e-9)
|
198
|
+
@cat.total_amount_unit.should == "kg/year"
|
199
|
+
@cat.items.size.should be(2)
|
200
|
+
@cat.items[0][:uid].should == "30C00AD33033"
|
201
|
+
@cat.items[0][:name].should == "gas"
|
202
|
+
@cat.items[0][:path].should == "30C00AD33033"
|
203
|
+
@cat.items[0][:dataItemLabel].should == "gas"
|
204
|
+
@cat.items[0][:dataItemUid].should == "66056991EE23"
|
205
|
+
@cat.items[0][:startDate].should == DateTime.new(2008, 9, 2)
|
206
|
+
@cat.items[0][:endDate].should be_nil
|
207
|
+
@cat.items[0][:amount].should be_close(29.664, 1e-9)
|
208
|
+
@cat.items[0][:amount_unit].should == "kg/year"
|
209
|
+
@cat.items[0][:values].size.should be(10)
|
210
|
+
@cat.items[0][:values][:energyConsumption][:value].should == "13"
|
211
|
+
@cat.items[0][:values][:energyConsumption][:unit].should == "kWh"
|
212
|
+
@cat.items[0][:values][:energyConsumption][:per_unit].should == "month"
|
213
|
+
@cat.items[0][:values][:massPerTime][:value].should == "0"
|
214
|
+
@cat.items[0][:values][:volumePerTime][:value].should == "0"
|
215
|
+
@cat.pager.should_not be_nil
|
216
|
+
end
|
217
|
+
|
218
|
+
it "should parse multiple return values" do
|
219
|
+
connection = flexmock "connection"
|
220
|
+
connection.should_receive(:version).and_return(2.0)
|
221
|
+
connection.should_receive(:get).with("/profiles/F8C2D1052BF7/home/energy/quantity", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8" standalone="no"?><Resources xmlns="http://schemas.amee.cc/2.0"><ProfileCategoryResource><Path>/home/energy/quantity</Path><Profile uid="F8C2D1052BF7"/><Environment created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="5F5887BCF726"><Name>AMEE</Name><Path/><Description/><Owner/><ItemsPerPage>10</ItemsPerPage><ItemsPerFeed>10</ItemsPerFeed></Environment><DataCategory uid="A92693A99BAD"><Name>Quantity</Name><Path>quantity</Path><Deprecated>false</Deprecated></DataCategory><ProfileCategories/><ProfileItems><ProfileItem created="2010-07-16T14:44:43Z" modified="2010-07-16T14:45:03Z" uid="3BCDB0BB2B96"><Name>gas</Name><ItemValues><ItemValue uid="06F553CED9F7"><Path>currentReading</Path><Name>Current Reading</Name><Value>0</Value><Unit>kWh</Unit><PerUnit>year</PerUnit><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="67B7476423C0"><Path>currentReading</Path><Name>Current Reading</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kWh</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue><ItemValue uid="4CF7691084DB"><Path>energyConsumption</Path><Name>Energy Consumption</Name><Value>13</Value><Unit>kWh</Unit><PerUnit>month</PerUnit><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="068A0D6D03F7"><Path>energyConsumption</Path><Name>Energy Consumption</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kWh</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue><ItemValue uid="1CA0D40208F0"><Path>includesHeating</Path><Name>Includes Heating</Name><Value>false</Value><Unit/><PerUnit/><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="1740E500BDAB"><Path>includesHeating</Path><Name>Includes Heating</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue><ItemValue uid="1ACEB4784A42"><Path>season</Path><Name>Season</Name><Value/><Unit/><PerUnit/><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="527AADFB3B65"><Path>season</Path><Name>Season</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue><ItemValue uid="036262B5D69D"><Path>greenTariff</Path><Name>Green tariff</Name><Value/><Unit/><PerUnit/><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="63005554AE8A"><Path>greenTariff</Path><Name>Green tariff</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue><ItemValue uid="A568643CD1D7"><Path>paymentFrequency</Path><Name>Payment frequency</Name><Value/><Unit/><PerUnit/><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="E0EFED6FD7E6"><Path>paymentFrequency</Path><Name>Payment frequency</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="CCEB59CACE1B"><Name>text</Name><ValueType>TEXT</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue><ItemValue uid="990F69A6BD48"><Path>massPerTime</Path><Name>Mass Per Time</Name><Value>0</Value><Unit>kg</Unit><PerUnit>year</PerUnit><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="CF12B3EBAD02"><Path>massPerTime</Path><Name>Mass Per Time</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kg</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue><ItemValue uid="A5BB73E6CBD2"><Path>lastReading</Path><Name>Last Reading</Name><Value>0</Value><Unit>kWh</Unit><PerUnit>year</PerUnit><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="40AB7E90980C"><Path>lastReading</Path><Name>Last Reading</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>kWh</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue><ItemValue uid="DA93374B62C2"><Path>volumePerTime</Path><Name>Volume Per Time</Name><Value>0</Value><Unit>L</Unit><PerUnit>year</PerUnit><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="324EC808AC30"><Path>volumePerTime</Path><Name>Volume Per Time</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><Unit>L</Unit><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue><ItemValue uid="FA09F1FF043D"><Path>deliveries</Path><Name>Number of deliveries</Name><Value/><Unit/><PerUnit>year</PerUnit><StartDate>2010-07-16T10:44:00-04:00</StartDate><ItemValueDefinition uid="177D4642A07A"><Path>deliveries</Path><Name>Number of deliveries</Name><ValueDefinition created="2007-07-27 08:30:44.0" modified="2007-07-27 08:30:44.0" uid="45433E48B39F"><Name>amount</Name><ValueType>DECIMAL</ValueType><Description/><Environment uid="5F5887BCF726"/></ValueDefinition><PerUnit>year</PerUnit><FromProfile>true</FromProfile><FromData>false</FromData><DrillDown>false</DrillDown></ItemValueDefinition></ItemValue></ItemValues><Amount unit="kg/year">31.7772</Amount><Amounts><Amount default="true" perUnit="year" type="CO2" unit="kg">31.7772</Amount><Amount type="CH4" unit="kg">4.2</Amount><Note type="comment">This is a text node</Note><Note type="comment">This is another text node</Note></Amounts><StartDate>2010-07-16T10:44:00-04:00</StartDate><EndDate/><DataItem uid="66056991EE23"><Label>gas</Label></DataItem></ProfileItem></ProfileItems><Pager><Start>0</Start><From>1</From><To>1</To><Items>1</Items><CurrentPage>1</CurrentPage><RequestedPage>1</RequestedPage><NextPage>-1</NextPage><PreviousPage>-1</PreviousPage><LastPage>1</LastPage><ItemsPerPage>10</ItemsPerPage><ItemsFound>1</ItemsFound></Pager><TotalAmount unit="kg/year">31.7772</TotalAmount></ProfileCategoryResource></Resources>'))
|
222
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/F8C2D1052BF7/home/energy/quantity")
|
223
|
+
@cat.total_amount.should be_close(31.7772, 1e-4)
|
224
|
+
@cat.total_amount_unit.should == 'kg/year'
|
225
|
+
item = @cat.items[0]
|
226
|
+
item[:amounts].size.should be(2)
|
227
|
+
item[:amounts][0][:type].should == "CO2"
|
228
|
+
item[:amounts][0][:value].should be_close(31.7772, 1e-4)
|
229
|
+
item[:amounts][0][:unit].should == 'kg'
|
230
|
+
item[:amounts][0][:per_unit].should == 'year'
|
231
|
+
item[:amounts][0][:default].should be_true
|
232
|
+
item[:amounts][1][:type].should == "CH4"
|
233
|
+
item[:amounts][1][:value].should be_close(4.2, 1e-2)
|
234
|
+
item[:amounts][1][:unit].should == 'kg'
|
235
|
+
item[:amounts][1][:per_unit].should be_nil
|
236
|
+
item[:notes].size.should be(2)
|
237
|
+
item[:notes][0][:type].should == 'comment'
|
238
|
+
item[:notes][0][:value].should == 'This is a text node'
|
239
|
+
item[:notes][1][:type].should == 'comment'
|
240
|
+
item[:notes][1][:value].should == 'This is another text node'
|
241
|
+
end
|
242
|
+
|
243
|
+
it "should fail gracefully with incorrect data" do
|
244
|
+
connection = flexmock "connection"
|
245
|
+
connection.should_receive(:version).and_return(2.0)
|
246
|
+
xml = '<?xml version="1.0" encoding="UTF-8"?><Resources xmlns="http://schemas.amee.cc/2.0"></Resources>'
|
247
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E", {}).and_return(flexmock(:body => xml))
|
248
|
+
lambda{AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E")}.should raise_error(AMEE::BadData)
|
249
|
+
end
|
250
|
+
|
251
|
+
# it "parses recursive GET requests" do
|
252
|
+
# connection = flexmock "connection"
|
253
|
+
# connection.should_receive(:version).and_return(2.0)
|
254
|
+
# connection.should_receive(:get).with("/profiles/BE22C1732952/transport/car", {:recurse=>true}).and_return('')
|
255
|
+
# cat = AMEE::Profile::Category.get(connection, "/profiles/BE22C1732952/transport/car", :recurse => true)
|
256
|
+
# cat.items.size.should == 0
|
257
|
+
# cat.children.size.should == 3
|
258
|
+
# cat.children[1][:name].should == "Generic"
|
259
|
+
# cat.children[1][:path].should == "generic"
|
260
|
+
# cat.children[1][:uid].should == "87E55DA88017"
|
261
|
+
# cat.children[1][:totalAmountPerMonth].should == 0.265
|
262
|
+
# cat.children[1][:children].size.should == 1
|
263
|
+
# cat.children[1][:children][0][:name].should == "Electric"
|
264
|
+
# cat.children[1][:children][0][:path].should == "electric"
|
265
|
+
# cat.children[1][:children][0][:uid].should == "417DD367E9AA"
|
266
|
+
# cat.children[1][:items].size.should == 1
|
267
|
+
# cat.children[1][:items][0][:amountPerMonth].should == 0.265
|
268
|
+
# cat.children[1][:items][0][:dataItemLabel].should == "diesel, large"
|
269
|
+
# cat.children[1][:items][0][:dataItemUid].should == "4F6CBCEE95F7"
|
270
|
+
# cat.children[1][:items][0][:values][:airconTypical].should == "true"
|
271
|
+
# cat.children[1][:items][0][:uid].should == "8450D6D97D2D"
|
272
|
+
# end
|
273
|
+
|
274
|
+
end
|
275
|
+
|
276
|
+
describe AMEE::Profile::Category, "with an authenticated version 2 Atom connection" do
|
277
|
+
|
278
|
+
it "should load Profile Category" do
|
279
|
+
connection = flexmock "connection"
|
280
|
+
connection.should_receive(:version).and_return(2.0)
|
281
|
+
connection.should_receive(:get).with("/profiles/FD89B8D07D4F/home", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:amee="http://schemas.amee.cc/2.0" xml:lang="en-US" xml:base="http://dev.amee.com/profiles/FD89B8D07D4F/home"> <title type="text">Profile FD89B8D07D4F, Category Home</title> <id>urn:dataCategory:BBA3AC3E795E</id> <generator version="2.0" uri="http://www.amee.cc">AMEE</generator> <link href="" type="application/atom+xml" rel="edit" /> <link href="" type="application/json" rel="alternate" /> <link href="" type="application/xml" rel="alternate" /> <author> <name>FD89B8D07D4F</name> </author> <amee:name>Home</amee:name> <amee:totalAmount unit="kg/year">0.000000</amee:totalAmount> <updated>1970-01-01T00:00:00.000Z</updated> </feed>'))
|
282
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/FD89B8D07D4F/home")
|
283
|
+
@cat.profile_uid.should == "FD89B8D07D4F"
|
284
|
+
@cat.name.should == "Home"
|
285
|
+
@cat.path.should == "/home"
|
286
|
+
@cat.full_path.should == "/profiles/FD89B8D07D4F/home"
|
287
|
+
#@cat.children.size.should be(6)
|
288
|
+
#@cat.children[0][:uid].should == "427DFCC65E52"
|
289
|
+
#@cat.children[0][:name].should == "Appliances"
|
290
|
+
#@cat.children[0][:path].should == "appliances"
|
291
|
+
end
|
292
|
+
|
293
|
+
it "should parse data items" do
|
294
|
+
connection = flexmock "connection"
|
295
|
+
connection.should_receive(:version).and_return(2.0)
|
296
|
+
connection.should_receive(:get).with("/profiles/9BFB0C1CD78A/home/energy/quantity", {}).and_return(flexmock(:body => '<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:amee="http://schemas.amee.cc/2.0" xml:lang="en-US" xml:base="http://dev.amee.com/profiles/9BFB0C1CD78A/home/energy/quantity"><title type="text">Profile 9BFB0C1CD78A, Category /home/energy/quantity</title><id>urn:dataCategory:A92693A99BAD</id><generator version="2.0" uri="http://www.amee.cc">AMEE</generator><link href="" type="application/atom+xml" rel="edit" /><link href="" type="application/json" rel="alternate" /><link href="" type="application/xml" rel="alternate" /><author><name>9BFB0C1CD78A</name></author><amee:name>Quantity</amee:name><amee:totalAmount unit="kg/year">1265.664</amee:totalAmount><updated>2009-02-11T14:13:28.000Z</updated><entry><title type="text">gas</title><subtitle type="text">Tue, 2 Sep 2008 01:00:00 BST</subtitle><link href="30C00AD33033" type="application/atom+xml" rel="edit" /><link href="30C00AD33033" type="application/json" rel="alternate" /><link href="30C00AD33033" type="application/xml" rel="alternate" /><id>urn:item:30C00AD33033</id><published>2008-09-02T00:00:00.000Z</published><updated>2008-09-02T00:00:00.000Z</updated><amee:startDate>2008-09-02T01:00+0100</amee:startDate><amee:amount unit="kg/year">29.664</amee:amount><amee:itemValue><amee:name>Payment frequency</amee:name><amee:value>N/A</amee:value><link href="30C00AD33033/paymentFrequency" rel="http://schemas.amee.cc/2.0#itemValue" /></amee:itemValue><amee:itemValue><amee:name>Green tariff</amee:name><amee:value>N/A</amee:value><link href="30C00AD33033/greenTariff" rel="http://schemas.amee.cc/2.0#itemValue" /></amee:itemValue><amee:itemValue><amee:name>Season</amee:name><amee:value>N/A</amee:value><link href="30C00AD33033/season" rel="http://schemas.amee.cc/2.0#itemValue" /></amee:itemValue><amee:itemValue><amee:name>Includes Heating</amee:name><amee:value>false</amee:value><link href="30C00AD33033/includesHeating" rel="http://schemas.amee.cc/2.0#itemValue" /></amee:itemValue><amee:itemValue><amee:name>Mass Per Time</amee:name><amee:value>N/A</amee:value><link href="30C00AD33033/massPerTime" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>kg</amee:unit><amee:perUnit>year</amee:perUnit></amee:itemValue><amee:itemValue><amee:name>Energy Consumption</amee:name><amee:value>13</amee:value><link href="30C00AD33033/energyConsumption" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>kWh</amee:unit><amee:perUnit>month</amee:perUnit></amee:itemValue><amee:itemValue><amee:name>Current Reading</amee:name><amee:value>N/A</amee:value><link href="30C00AD33033/currentReading" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>kWh</amee:unit></amee:itemValue><amee:itemValue><amee:name>Last Reading</amee:name><amee:value>N/A</amee:value><link href="30C00AD33033/lastReading" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>kWh</amee:unit></amee:itemValue><amee:itemValue><amee:name>Volume Per Time</amee:name><amee:value>N/A</amee:value><link href="30C00AD33033/volumePerTime" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>L</amee:unit><amee:perUnit>year</amee:perUnit></amee:itemValue><amee:itemValue><amee:name>Number of deliveries</amee:name><amee:value>N/A</amee:value><link href="30C00AD33033/deliveries" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>year</amee:unit></amee:itemValue><amee:name>gas</amee:name><content type="html"><div class="vevent"><div class="summary">0.000 kg/year</div><abbr class="dtstart" title="2008-09-02T01:00+0100"> Tue, 2 Sep 2008 01:00:00 BST</abbr></div></content><category scheme="http://schemas.amee.cc/2.0#item" term="66056991EE23" label="Energy Quantity" /></entry><entry><title type="text">BC0B730255FB</title><subtitle type="text">Wed, 11 Feb 2009 14:13:00 GMT</subtitle><link href="BC0B730255FB" type="application/atom+xml" rel="edit" /><link href="BC0B730255FB" type="application/json" rel="alternate" /><link href="BC0B730255FB" type="application/xml" rel="alternate" /><id>urn:item:BC0B730255FB</id><published>2009-02-11T14:13:00.000Z</published><updated>2009-02-11T14:13:00.000Z</updated><amee:startDate>2009-02-11T14:13+0000</amee:startDate><amee:amount unit="kg/year">0.000</amee:amount><amee:itemValue><amee:name>Payment frequency</amee:name><amee:value>N/A</amee:value><link href="BC0B730255FB/paymentFrequency" rel="http://schemas.amee.cc/2.0#itemValue" /></amee:itemValue><amee:itemValue><amee:name>Green tariff</amee:name><amee:value>N/A</amee:value><link href="BC0B730255FB/greenTariff" rel="http://schemas.amee.cc/2.0#itemValue" /></amee:itemValue><amee:itemValue><amee:name>Season</amee:name><amee:value>N/A</amee:value><link href="BC0B730255FB/season" rel="http://schemas.amee.cc/2.0#itemValue" /></amee:itemValue><amee:itemValue><amee:name>Includes Heating</amee:name><amee:value>false</amee:value><link href="BC0B730255FB/includesHeating" rel="http://schemas.amee.cc/2.0#itemValue" /></amee:itemValue><amee:itemValue><amee:name>Mass Per Time</amee:name><amee:value>N/A</amee:value><link href="BC0B730255FB/massPerTime" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>kg</amee:unit><amee:perUnit>year</amee:perUnit></amee:itemValue><amee:itemValue><amee:name>Energy Consumption</amee:name><amee:value>N/A</amee:value><link href="BC0B730255FB/energyConsumption" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>kWh</amee:unit><amee:perUnit>year</amee:perUnit></amee:itemValue><amee:itemValue><amee:name>Current Reading</amee:name><amee:value>N/A</amee:value><link href="BC0B730255FB/currentReading" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>kWh</amee:unit></amee:itemValue><amee:itemValue><amee:name>Last Reading</amee:name><amee:value>N/A</amee:value><link href="BC0B730255FB/lastReading" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>kWh</amee:unit></amee:itemValue><amee:itemValue><amee:name>Volume Per Time</amee:name><amee:value>N/A</amee:value><link href="BC0B730255FB/volumePerTime" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>L</amee:unit><amee:perUnit>year</amee:perUnit></amee:itemValue><amee:itemValue><amee:name>Number of deliveries</amee:name><amee:value>N/A</amee:value><link href="BC0B730255FB/deliveries" rel="http://schemas.amee.cc/2.0#itemValue" /><amee:unit>year</amee:unit></amee:itemValue><amee:name></amee:name><content type="html"><div class="vevent"><div class="summary">0.000 kg/year</div><abbr class="dtstart" title="2009-02-11T14:13+0000"> Wed, 11 Feb 2009 14:13:00 GMT</abbr></div></content><category scheme="http://schemas.amee.cc/2.0#item" term="A70149AF0F26" label="Energy Quantity" /></entry></feed>'))
|
297
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/9BFB0C1CD78A/home/energy/quantity")
|
298
|
+
@cat.total_amount.should be_close(1265.664, 1e-9)
|
299
|
+
@cat.total_amount_unit.should == "kg/year"
|
300
|
+
@cat.items.size.should be(2)
|
301
|
+
@cat.items[0][:uid].should == "30C00AD33033"
|
302
|
+
@cat.items[0][:name].should == "gas"
|
303
|
+
@cat.items[0][:path].should == "30C00AD33033"
|
304
|
+
#@cat.items[0][:dataItemLabel].should == "gas"
|
305
|
+
#@cat.items[0][:dataItemUid].should == "66056991EE23"
|
306
|
+
@cat.items[0][:startDate].should == DateTime.new(2008, 9, 2)
|
307
|
+
@cat.items[0][:endDate].should be_nil
|
308
|
+
@cat.items[0][:amount].should be_close(29.664, 1e-9)
|
309
|
+
@cat.items[0][:amount_unit].should == "kg/year"
|
310
|
+
@cat.items[0][:values].size.should be(10)
|
311
|
+
@cat.items[0][:values][:energyConsumption][:value].should == "13"
|
312
|
+
@cat.items[0][:values][:energyConsumption][:unit].should == "kWh"
|
313
|
+
@cat.items[0][:values][:energyConsumption][:per_unit].should == "month"
|
314
|
+
@cat.items[0][:values][:massPerTime][:value].should == "0"
|
315
|
+
@cat.items[0][:values][:volumePerTime][:value].should == "0"
|
316
|
+
end
|
317
|
+
|
318
|
+
it "should fail gracefully with incorrect data" do
|
319
|
+
connection = flexmock "connection"
|
320
|
+
connection.should_receive(:version).and_return(2.0)
|
321
|
+
atom = '<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:amee="http://schemas.amee.cc/2.0"></feed>'
|
322
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E", {}).and_return(flexmock(:body => atom))
|
323
|
+
lambda{AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E")}.should raise_error(AMEE::BadData)
|
324
|
+
end
|
325
|
+
|
326
|
+
# it "parses recursive GET requests" do
|
327
|
+
# connection = flexmock "connection"
|
328
|
+
# connection.should_receive(:version).and_return(2.0)
|
329
|
+
# connection.should_receive(:get).with("/profiles/BE22C1732952/transport/car", {:recurse=>true}).and_return(flexmock(:body => ''))
|
330
|
+
# cat = AMEE::Profile::Category.get(connection, "/profiles/BE22C1732952/transport/car", :recurse => true)
|
331
|
+
# cat.items.size.should == 0
|
332
|
+
# cat.children.size.should == 3
|
333
|
+
# cat.children[1][:name].should == "Generic"
|
334
|
+
# cat.children[1][:path].should == "generic"
|
335
|
+
# cat.children[1][:uid].should == "87E55DA88017"
|
336
|
+
# cat.children[1][:totalAmountPerMonth].should == 0.265
|
337
|
+
# cat.children[1][:children].size.should == 1
|
338
|
+
# cat.children[1][:children][0][:name].should == "Electric"
|
339
|
+
# cat.children[1][:children][0][:path].should == "electric"
|
340
|
+
# cat.children[1][:children][0][:uid].should == "417DD367E9AA"
|
341
|
+
# cat.children[1][:items].size.should == 1
|
342
|
+
# cat.children[1][:items][0][:amountPerMonth].should == 0.265
|
343
|
+
# cat.children[1][:items][0][:dataItemLabel].should == "diesel, large"
|
344
|
+
# cat.children[1][:items][0][:dataItemUid].should == "4F6CBCEE95F7"
|
345
|
+
# cat.children[1][:items][0][:values][:airconTypical].should == "true"
|
346
|
+
# cat.children[1][:items][0][:uid].should == "8450D6D97D2D"
|
347
|
+
# end
|
348
|
+
|
349
|
+
end
|
350
|
+
|
351
|
+
describe AMEE::Profile::Category, "with an authenticated JSON connection" do
|
352
|
+
|
353
|
+
it "should load Profile Category" do
|
354
|
+
connection = flexmock "connection"
|
355
|
+
connection.should_receive(:version).and_return(1.0)
|
356
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E/home", {}).and_return(flexmock(:body => '{"totalAmountPerMonth":"0","dataCategory":{"uid":"BBA3AC3E795E","path":"home","name":"Home"},"profileDate":"200809","path":"/home","profile":{"uid":"E54C5525AA3E"},"children":{"pager":{},"dataCategories":[{"uid":"427DFCC65E52","path":"appliances","name":"Appliances"},{"uid":"30BA55A0C472","path":"energy","name":"Energy"},{"uid":"A46ECFA19333","path":"heating","name":"Heating"},{"uid":"150266DD4434","path":"lighting","name":"Lighting"}],"profileItems":{}}}'))
|
357
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E/home")
|
358
|
+
@cat.profile_uid.should == "E54C5525AA3E"
|
359
|
+
@cat.profile_date.should == DateTime.new(2008, 9)
|
360
|
+
@cat.name.should == "Home"
|
361
|
+
@cat.path.should == "/home"
|
362
|
+
@cat.full_path.should == "/profiles/E54C5525AA3E/home"
|
363
|
+
@cat.children.size.should be(4)
|
364
|
+
@cat.children[0][:uid].should == "427DFCC65E52"
|
365
|
+
@cat.children[0][:name].should == "Appliances"
|
366
|
+
@cat.children[0][:path].should == "appliances"
|
367
|
+
@cat.pager.should be_nil
|
368
|
+
end
|
369
|
+
|
370
|
+
it "should provide access to child objects" do
|
371
|
+
connection = flexmock "connection"
|
372
|
+
connection.should_receive(:version).and_return(1.0)
|
373
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E/home", {}).and_return(flexmock(:body => '{"totalAmountPerMonth":"0","dataCategory":{"uid":"BBA3AC3E795E","path":"home","name":"Home"},"profileDate":"200809","path":"/home","profile":{"uid":"E54C5525AA3E"},"children":{"pager":{},"dataCategories":[{"uid":"427DFCC65E52","path":"appliances","name":"Appliances"},{"uid":"30BA55A0C472","path":"energy","name":"Energy"},{"uid":"A46ECFA19333","path":"heating","name":"Heating"},{"uid":"150266DD4434","path":"lighting","name":"Lighting"}],"profileItems":{}}}'))
|
374
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E/home/appliances", {}).and_return(flexmock(:body => '{"totalAmountPerMonth":"0","dataCategory":{"uid":"427DFCC65E52","path":"appliances","name":"Appliances"},"profileDate":"200809","path":"/home/appliances","profile":{"uid":"E54C5525AA3E"},"children":{"pager":{},"dataCategories":[{"uid":"3FE23FDC8CEA","path":"computers","name":"Computers"},{"uid":"54C8A44254AA","path":"cooking","name":"Cooking"},{"uid":"75AD9B83B7BF","path":"entertainment","name":"Entertainment"},{"uid":"4BD595E1873A","path":"kitchen","name":"Kitchen"},{"uid":"700D0771870A","path":"televisions","name":"Televisions"}],"profileItems":{}}}'))
|
375
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E/home")
|
376
|
+
@child = @cat.child('appliances')
|
377
|
+
@child.path.should == "/home/appliances"
|
378
|
+
@child.full_path.should == "/profiles/E54C5525AA3E/home/appliances"
|
379
|
+
@child.children.size.should be(5)
|
380
|
+
@child.pager.should be_nil
|
381
|
+
end
|
382
|
+
|
383
|
+
it "should parse data items" do
|
384
|
+
connection = flexmock "connection"
|
385
|
+
connection.should_receive(:version).and_return(1.0)
|
386
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E/home/energy/quantity", {}).and_return(flexmock(:body => '{"totalAmountPerMonth":105.472,"dataCategory":{"uid":"A92693A99BAD","path":"quantity","name":"Quantity"},"profileDate":"200809","path":"/home/energy/quantity","profile":{"uid":"E54C5525AA3E"},"children":{"pager":{"to":2,"lastPage":1,"start":0,"nextPage":-1,"items":2,"itemsPerPage":10,"from":1,"previousPage":-1,"requestedPage":1,"currentPage":1,"itemsFound":2},"dataCategories":[],"profileItems":{"rows":[{"created":"2008-09-03 11:37:35.0","kgPerMonth":"0","dataItemLabel":"gas","end":"false","uid":"FB07247AD937","modified":"2008-09-03 11:38:12.0","dataItemUid":"66056991EE23","validFrom":"20080902","amountPerMonth":"2.472","label":"ProfileItem","litresPerMonth":"0","path":"FB07247AD937","kWhPerMonth":"12","name":"gas"},{"created":"2008-09-03 11:40:44.0","kgPerMonth":"0","dataItemLabel":"gas","end":"false","uid":"D9CBCDED44C5","modified":"2008-09-03 11:41:54.0","dataItemUid":"66056991EE23","validFrom":"20080901","amountPerMonth":"103.000","label":"ProfileItem","litresPerMonth":"0","path":"D9CBCDED44C5","kWhPerMonth":"500","name":"gas2"}],"label":"ProfileItems"}}}'))
|
387
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E/home/energy/quantity")
|
388
|
+
@cat.total_amount.should be_close(105.472, 1e-9)
|
389
|
+
@cat.total_amount_unit.should == "kg/month"
|
390
|
+
@cat.items.size.should be(2)
|
391
|
+
@cat.items[0][:uid].should == "FB07247AD937"
|
392
|
+
@cat.items[0][:name].should == "gas"
|
393
|
+
@cat.items[0][:path].should == "FB07247AD937"
|
394
|
+
@cat.items[0][:dataItemLabel].should == "gas"
|
395
|
+
@cat.items[0][:dataItemUid].should == "66056991EE23"
|
396
|
+
@cat.items[0][:validFrom].should == DateTime.new(2008, 9, 2)
|
397
|
+
@cat.items[0][:end].should == false
|
398
|
+
@cat.items[0][:amountPerMonth].should be_close(2.472, 1e-9)
|
399
|
+
@cat.items[0][:values].size.should be(3)
|
400
|
+
@cat.items[0][:values][:kWhPerMonth].should == "12"
|
401
|
+
@cat.items[0][:values][:kgPerMonth].should == "0"
|
402
|
+
@cat.items[0][:values][:litresPerMonth].should == "0"
|
403
|
+
@cat.pager.should_not be_nil
|
404
|
+
end
|
405
|
+
|
406
|
+
it "should fail gracefully with incorrect data" do
|
407
|
+
connection = flexmock "connection"
|
408
|
+
json = '{"apiVersion":"2.0"}'
|
409
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E", {}).and_return(flexmock(:body => json))
|
410
|
+
lambda{AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E")}.should raise_error(AMEE::BadData)
|
411
|
+
end
|
412
|
+
|
413
|
+
it "parses recursive GET requests" do
|
414
|
+
connection = flexmock "connection"
|
415
|
+
connection.should_receive(:version).and_return(1.0)
|
416
|
+
connection.should_receive(:get).with("/profiles/BE22C1732952/transport/car", {:recurse => true}).and_return(flexmock(:body => '{"totalAmountPerMonth":"0","dataCategory":{"uid":"1D95119FB149","path":"car","name":"Car"},"profileDate":"200901","path":"/transport/car","profile":{"uid":"BE22C1732952"},"children":{"pager":{},"dataCategories":[{"dataCategory":{"modified":"2008-04-21 16:42:10.0","created":"2008-04-21 16:42:10.0","itemDefinition":{"uid":"C6BC60C55678"},"dataCategory":{"uid":"1D95119FB149","path":"car","name":"Car"},"uid":"883ADD27228F","environment":{"uid":"5F5887BCF726"},"path":"bands","name":"Bands"},"path":"/transport/car/bands"},{"totalAmountPerMonth":0.265,"dataCategory":{"modified":"2007-07-27 09:30:44.0","created":"2007-07-27 09:30:44.0","itemDefinition":{"uid":"123C4A18B5D6"},"dataCategory":{"uid":"1D95119FB149","path":"car","name":"Car"},"uid":"87E55DA88017","environment":{"uid":"5F5887BCF726"},"path":"generic","name":"Generic"},"path":"/transport/car/generic","children":{"dataCategories":[{"dataCategory":{"modified":"2008-09-23 12:18:03.0","created":"2008-09-23 12:18:03.0","itemDefinition":{"uid":"E6D0BB09578A"},"dataCategory":{"uid":"87E55DA88017","path":"generic","name":"Generic"},"uid":"417DD367E9AA","environment":{"uid":"5F5887BCF726"},"path":"electric","name":"Electric"},"path":"/transport/car/generic/electric"}],"profileItems":{"rows":[{"created":"2009-01-05 13:58:52.0","ecoDriving":"false","tyresUnderinflated":"false","dataItemLabel":"diesel, large","kmPerLitre":"0","distanceKmPerMonth":"1","end":"false","uid":"8450D6D97D2D","modified":"2009-01-05 13:59:05.0","airconFull":"false","dataItemUid":"4F6CBCEE95F7","validFrom":"20090101","amountPerMonth":"0.265","kmPerLitreOwn":"0","country":"","label":"ProfileItem","occupants":"-1","airconTypical":"true","path":"8450D6D97D2D","name":"","regularlyServiced":"true"}],"label":"ProfileItems"}}},{"dataCategory":{"modified":"2007-07-27 09:30:44.0","created":"2007-07-27 09:30:44.0","itemDefinition":{"uid":"07EBA32512DF"},"dataCategory":{"uid":"1D95119FB149","path":"car","name":"Car"},"uid":"95E76249584D","environment":{"uid":"5F5887BCF726"},"path":"specific","name":"Specific"},"path":"/transport/car/specific"}],"profileItems":{}}}'))
|
417
|
+
cat = AMEE::Profile::Category.get(connection, "/profiles/BE22C1732952/transport/car", :recurse => true)
|
418
|
+
cat.items.size.should == 0
|
419
|
+
cat.children.size.should == 3
|
420
|
+
cat.children[1][:name].should == "Generic"
|
421
|
+
cat.children[1][:path].should == "generic"
|
422
|
+
cat.children[1][:uid].should == "87E55DA88017"
|
423
|
+
cat.children[1][:totalAmountPerMonth].should == 0.265
|
424
|
+
cat.children[1][:children].size.should == 1
|
425
|
+
cat.children[1][:children][0][:name].should == "Electric"
|
426
|
+
cat.children[1][:children][0][:path].should == "electric"
|
427
|
+
cat.children[1][:children][0][:uid].should == "417DD367E9AA"
|
428
|
+
cat.children[1][:items].size.should == 1
|
429
|
+
cat.children[1][:items][0][:amountPerMonth].should == 0.265
|
430
|
+
cat.children[1][:items][0][:dataItemLabel].should == "diesel, large"
|
431
|
+
cat.children[1][:items][0][:dataItemUid].should == "4F6CBCEE95F7"
|
432
|
+
cat.children[1][:items][0][:values][:airconTypical].should == "true"
|
433
|
+
cat.children[1][:items][0][:uid].should == "8450D6D97D2D"
|
434
|
+
cat.pager.should be_nil
|
435
|
+
end
|
436
|
+
|
437
|
+
end
|
438
|
+
|
439
|
+
describe AMEE::Profile::Category, "with an authenticated V2 JSON connection" do
|
440
|
+
|
441
|
+
it "should load Profile Category" do
|
442
|
+
connection = flexmock "connection"
|
443
|
+
connection.should_receive(:version).and_return(2.0)
|
444
|
+
connection.should_receive(:get).with("/profiles/447C40EB29FB/home", {}).and_return(flexmock(:body => '{"apiVersion":"2.0","pager":{},"profileCategories":[{"uid":"427DFCC65E52","name":"Appliances","path":"appliances"},{"uid":"30BA55A0C472","name":"Energy","path":"energy"},{"uid":"A46ECFA19333","name":"Heating","path":"heating"},{"uid":"150266DD4434","name":"Lighting","path":"lighting"},{"uid":"6553150F96CE","name":"Waste","path":"waste"},{"uid":"07362DCC9E7B","name":"Water","path":"water"}],"dataCategory":{"uid":"BBA3AC3E795E","dataCategory":{"uid":"CD310BEBAC52","name":"Root","path":""},"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10},"created":"2007-07-27 09:30:44.0","name":"Home","path":"home","modified":"2007-07-27 09:30:44.0"},"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"created":"2007-07-27 09:30:44.0","description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10,"modified":"2007-07-27 09:30:44.0"},"totalAmount":"0","path":"/home","profileItemActions":{"allowCreate":true,"allowView":true,"allowList":true,"allowModify":true,"allowDelete":true},"actions":{"allowCreate":true,"allowView":true,"allowList":true,"allowModify":true,"allowDelete":true},"profileItems":{},"profile":{"uid":"447C40EB29FB"}}'))
|
445
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/447C40EB29FB/home")
|
446
|
+
@cat.profile_uid.should == "447C40EB29FB"
|
447
|
+
@cat.name.should == "Home"
|
448
|
+
@cat.path.should == "/home"
|
449
|
+
@cat.full_path.should == "/profiles/447C40EB29FB/home"
|
450
|
+
@cat.children.size.should be(6)
|
451
|
+
@cat.children[0][:uid].should == "427DFCC65E52"
|
452
|
+
@cat.children[0][:name].should == "Appliances"
|
453
|
+
@cat.children[0][:path].should == "appliances"
|
454
|
+
@cat.pager.should be_nil
|
455
|
+
end
|
456
|
+
|
457
|
+
it "should provide access to child objects" do
|
458
|
+
connection = flexmock "connection"
|
459
|
+
connection.should_receive(:version).and_return(2.0)
|
460
|
+
connection.should_receive(:get).with("/profiles/447C40EB29FB/home", {}).and_return(flexmock(:body => '{"apiVersion":"2.0","pager":{},"profileCategories":[{"uid":"427DFCC65E52","name":"Appliances","path":"appliances"},{"uid":"30BA55A0C472","name":"Energy","path":"energy"},{"uid":"A46ECFA19333","name":"Heating","path":"heating"},{"uid":"150266DD4434","name":"Lighting","path":"lighting"},{"uid":"6553150F96CE","name":"Waste","path":"waste"},{"uid":"07362DCC9E7B","name":"Water","path":"water"}],"dataCategory":{"uid":"BBA3AC3E795E","dataCategory":{"uid":"CD310BEBAC52","name":"Root","path":""},"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10},"created":"2007-07-27 09:30:44.0","name":"Home","path":"home","modified":"2007-07-27 09:30:44.0"},"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"created":"2007-07-27 09:30:44.0","description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10,"modified":"2007-07-27 09:30:44.0"},"totalAmount":"0","path":"/home","profileItemActions":{"allowCreate":true,"allowView":true,"allowList":true,"allowModify":true,"allowDelete":true},"actions":{"allowCreate":true,"allowView":true,"allowList":true,"allowModify":true,"allowDelete":true},"profileItems":{},"profile":{"uid":"447C40EB29FB"}}'))
|
461
|
+
connection.should_receive(:get).with("/profiles/447C40EB29FB/home/appliances", {}).and_return(flexmock(:body => '{"apiVersion":"2.0","pager":{},"profileCategories":[{"uid":"3FE23FDC8CEA","name":"Computers","path":"computers"},{"uid":"54C8A44254AA","name":"Cooking","path":"cooking"},{"uid":"75AD9B83B7BF","name":"Entertainment","path":"entertainment"},{"uid":"4BD595E1873A","name":"Kitchen","path":"kitchen"},{"uid":"700D0771870A","name":"Televisions","path":"televisions"}],"dataCategory":{"uid":"427DFCC65E52","dataCategory":{"uid":"BBA3AC3E795E","name":"Home","path":"home"},"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10},"created":"2007-07-27 09:30:44.0","name":"Appliances","path":"appliances","modified":"2007-07-27 09:30:44.0"},"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"created":"2007-07-27 09:30:44.0","description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10,"modified":"2007-07-27 09:30:44.0"},"totalAmount":"0","path":"/home/appliances","profileItemActions":{"allowCreate":true,"allowView":true,"allowList":true,"allowModify":true,"allowDelete":true},"actions":{"allowCreate":true,"allowView":true,"allowList":true,"allowModify":true,"allowDelete":true},"profileItems":{},"profile":{"uid":"447C40EB29FB"}}'))
|
462
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/447C40EB29FB/home")
|
463
|
+
@child = @cat.child('appliances')
|
464
|
+
@child.path.should == "/home/appliances"
|
465
|
+
@child.full_path.should == "/profiles/447C40EB29FB/home/appliances"
|
466
|
+
@child.children.size.should be(5)
|
467
|
+
@child.pager.should be_nil
|
468
|
+
end
|
469
|
+
|
470
|
+
it "should parse data items" do
|
471
|
+
connection = flexmock "connection"
|
472
|
+
connection.should_receive(:version).and_return(2.0)
|
473
|
+
connection.should_receive(:get).with("/profiles/447C40EB29FB/home/energy/quantity", {}).and_return(flexmock(:body => '{"apiVersion":"2.0","pager":{"to":1,"lastPage":1,"nextPage":-1,"items":1,"start":0,"itemsFound":1,"requestedPage":1,"currentPage":1,"from":1,"itemsPerPage":10,"previousPage":-1},"profileCategories":[],"dataCategory":{"uid":"A92693A99BAD","dataCategory":{"uid":"30BA55A0C472","deprecated":false,"name":"Energy","path":"energy"},"deprecated":false,"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10},"created":"2007-07-27 08:30:44.0","name":"Quantity","path":"quantity","itemDefinition":{"uid":"212C818D8F16","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","name":"Energy Quantity","drillDown":"type","modified":"2007-07-27 08:30:44.0"},"modified":"2007-07-27 08:30:44.0"},"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"created":"2007-07-27 08:30:44.0","description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10,"modified":"2007-07-27 08:30:44.0"},"totalAmount":{"unit":"kg/year","value":"31.7772"},"path":"/home/energy/quantity","profileItems":[{"amount":{"unit":"kg/year","value":31.7772},"uid":"B3D15D776EB9","startDate":"2010-06-28T13:14:00-04:00","itemValues":[{"itemValueDefinition":{"perUnit":"year","uid":"67B7476423C0","unit":"kWh","name":"Current Reading","fromData":false,"path":"currentReading","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"048EE4994F5B","startDate":"2010-06-28T13:14:00-04:00","unit":"kWh","name":"Current Reading","value":"0","path":"currentReading","displayPath":"currentReading","displayName":"Current Reading"},{"itemValueDefinition":{"perUnit":"year","uid":"068A0D6D03F7","unit":"kWh","name":"Energy Consumption","fromData":false,"path":"energyConsumption","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"month","uid":"2E52C3842819","startDate":"2010-06-28T13:14:00-04:00","unit":"kWh","name":"Energy Consumption","value":"13","path":"energyConsumption","displayPath":"energyConsumption","displayName":"Energy Consumption"},{"itemValueDefinition":{"uid":"1740E500BDAB","choices":"true=true,false=false","name":"Includes Heating","fromData":false,"path":"includesHeating","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"","uid":"98D6B86F928E","startDate":"2010-06-28T13:14:00-04:00","unit":"","name":"Includes Heating","value":"false","path":"includesHeating","displayPath":"includesHeating","displayName":"Includes Heating"},{"itemValueDefinition":{"uid":"527AADFB3B65","name":"Season","fromData":false,"path":"season","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"","uid":"142422F25D4E","startDate":"2010-06-28T13:14:00-04:00","unit":"","name":"Season","value":"","path":"season","displayPath":"season","displayName":"Season"},{"itemValueDefinition":{"uid":"63005554AE8A","name":"Green tariff","fromData":false,"path":"greenTariff","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"","uid":"3BBD254BA9BA","startDate":"2010-06-28T13:14:00-04:00","unit":"","name":"Green tariff","value":"","path":"greenTariff","displayPath":"greenTariff","displayName":"Green tariff"},{"itemValueDefinition":{"uid":"E0EFED6FD7E6","name":"Payment frequency","fromData":false,"path":"paymentFrequency","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"","uid":"4E57D4DEFC2A","startDate":"2010-06-28T13:14:00-04:00","unit":"","name":"Payment frequency","value":"","path":"paymentFrequency","displayPath":"paymentFrequency","displayName":"Payment frequency"},{"itemValueDefinition":{"perUnit":"year","uid":"CF12B3EBAD02","unit":"kg","name":"Mass Per Time","fromData":false,"path":"massPerTime","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"F0AE74C87EEE","startDate":"2010-06-28T13:14:00-04:00","unit":"kg","name":"Mass Per Time","value":"0","path":"massPerTime","displayPath":"massPerTime","displayName":"Mass Per Time"},{"itemValueDefinition":{"perUnit":"year","uid":"40AB7E90980C","unit":"kWh","name":"Last Reading","fromData":false,"path":"lastReading","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"99B9FDA5D1A8","startDate":"2010-06-28T13:14:00-04:00","unit":"kWh","name":"Last Reading","value":"0","path":"lastReading","displayPath":"lastReading","displayName":"Last Reading"},{"itemValueDefinition":{"perUnit":"year","uid":"177D4642A07A","name":"Number of deliveries","fromData":false,"path":"deliveries","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"EE0151C2C22C","startDate":"2010-06-28T13:14:00-04:00","unit":"","name":"Number of deliveries","value":"","path":"deliveries","displayPath":"deliveries","displayName":"Number of deliveries"},{"itemValueDefinition":{"perUnit":"year","uid":"324EC808AC30","unit":"L","name":"Volume Per Time","fromData":false,"path":"volumePerTime","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"35B94788B050","startDate":"2010-06-28T13:14:00-04:00","unit":"L","name":"Volume Per Time","value":"0","path":"volumePerTime","displayPath":"volumePerTime","displayName":"Volume Per Time"}],"amounts":{"amount":[{"perUnit":"year","unit":"kg","default":"true","value":31.7772,"type":"CO2"}]},"created":"2010-06-28T17:14:18Z","name":"gas","endDate":"","dataItem":{"uid":"66056991EE23","Label":"gas"},"modified":"2010-06-28T17:40:35Z"}],"profile":{"uid":"B6FB1C01BAA7"}}'))
|
474
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/447C40EB29FB/home/energy/quantity")
|
475
|
+
@cat.total_amount.should be_close(31.7772, 1e-9)
|
476
|
+
@cat.total_amount_unit.should == "kg/year"
|
477
|
+
@cat.items.size.should be(1)
|
478
|
+
@cat.items[0][:uid].should == "B3D15D776EB9"
|
479
|
+
@cat.items[0][:name].should == "gas"
|
480
|
+
@cat.items[0][:path].should == "B3D15D776EB9"
|
481
|
+
@cat.items[0][:dataItemLabel].should == "gas"
|
482
|
+
@cat.items[0][:dataItemUid].should == "66056991EE23"
|
483
|
+
@cat.items[0][:startDate].should == DateTime.new(2010, 6, 28, 17, 14)
|
484
|
+
@cat.items[0][:endDate].should be_nil
|
485
|
+
@cat.items[0][:amount].should be_close(31.7772, 1e-9)
|
486
|
+
@cat.items[0][:amount_unit].should == "kg/year"
|
487
|
+
@cat.items[0][:values].size.should be(10)
|
488
|
+
@cat.items[0][:values][:energyConsumption][:value].should == "13"
|
489
|
+
@cat.items[0][:values][:energyConsumption][:unit].should == "kWh"
|
490
|
+
@cat.items[0][:values][:energyConsumption][:per_unit].should == "month"
|
491
|
+
@cat.items[0][:values][:massPerTime][:value].should == "0"
|
492
|
+
@cat.items[0][:values][:volumePerTime][:value].should == "0"
|
493
|
+
@cat.pager.should_not be_nil
|
494
|
+
end
|
495
|
+
|
496
|
+
it "should parse multiple return values" do
|
497
|
+
connection = flexmock "connection"
|
498
|
+
connection.should_receive(:version).and_return(2.0)
|
499
|
+
connection.should_receive(:get).with("/profiles/F8C2D1052BF7/home/energy/quantity", {}).and_return(flexmock(:body => '{"apiVersion":"2.0","pager":{"to":1,"lastPage":1,"nextPage":-1,"items":1,"start":0,"itemsFound":1,"requestedPage":1,"currentPage":1,"from":1,"itemsPerPage":10,"previousPage":-1},"profileCategories":[],"dataCategory":{"uid":"A92693A99BAD","dataCategory":{"uid":"30BA55A0C472","deprecated":false,"name":"Energy","path":"energy"},"deprecated":false,"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10},"created":"2007-07-27 08:30:44.0","name":"Quantity","path":"quantity","itemDefinition":{"uid":"212C818D8F16","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","name":"Energy Quantity","drillDown":"type","modified":"2007-07-27 08:30:44.0"},"modified":"2007-07-27 08:30:44.0"},"environment":{"uid":"5F5887BCF726","itemsPerFeed":10,"created":"2007-07-27 08:30:44.0","description":"","name":"AMEE","owner":"","path":"","itemsPerPage":10,"modified":"2007-07-27 08:30:44.0"},"totalAmount":{"unit":"kg/year","value":"31.7772"},"path":"/home/energy/quantity","profileItems":[{"amount":{"unit":"kg/year","value":31.7772},"uid":"3BCDB0BB2B96","startDate":"2010-07-16T10:44:00-04:00","itemValues":[{"itemValueDefinition":{"perUnit":"year","uid":"67B7476423C0","unit":"kWh","name":"Current Reading","fromData":false,"path":"currentReading","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"06F553CED9F7","startDate":"2010-07-16T10:44:00-04:00","unit":"kWh","name":"Current Reading","value":"0","path":"currentReading","displayPath":"currentReading","displayName":"Current Reading"},{"itemValueDefinition":{"perUnit":"year","uid":"068A0D6D03F7","unit":"kWh","name":"Energy Consumption","fromData":false,"path":"energyConsumption","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"month","uid":"4CF7691084DB","startDate":"2010-07-16T10:44:00-04:00","unit":"kWh","name":"Energy Consumption","value":"13","path":"energyConsumption","displayPath":"energyConsumption","displayName":"Energy Consumption"},{"itemValueDefinition":{"uid":"1740E500BDAB","choices":"true=true,false=false","name":"Includes Heating","fromData":false,"path":"includesHeating","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"","uid":"1CA0D40208F0","startDate":"2010-07-16T10:44:00-04:00","unit":"","name":"Includes Heating","value":"false","path":"includesHeating","displayPath":"includesHeating","displayName":"Includes Heating"},{"itemValueDefinition":{"uid":"527AADFB3B65","name":"Season","fromData":false,"path":"season","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"","uid":"1ACEB4784A42","startDate":"2010-07-16T10:44:00-04:00","unit":"","name":"Season","value":"","path":"season","displayPath":"season","displayName":"Season"},{"itemValueDefinition":{"uid":"63005554AE8A","name":"Green tariff","fromData":false,"path":"greenTariff","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"","uid":"036262B5D69D","startDate":"2010-07-16T10:44:00-04:00","unit":"","name":"Green tariff","value":"","path":"greenTariff","displayPath":"greenTariff","displayName":"Green tariff"},{"itemValueDefinition":{"uid":"E0EFED6FD7E6","name":"Payment frequency","fromData":false,"path":"paymentFrequency","fromProfile":true,"valueDefinition":{"uid":"CCEB59CACE1B","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"text","valueType":"TEXT","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"","uid":"A568643CD1D7","startDate":"2010-07-16T10:44:00-04:00","unit":"","name":"Payment frequency","value":"","path":"paymentFrequency","displayPath":"paymentFrequency","displayName":"Payment frequency"},{"itemValueDefinition":{"perUnit":"year","uid":"CF12B3EBAD02","unit":"kg","name":"Mass Per Time","fromData":false,"path":"massPerTime","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"990F69A6BD48","startDate":"2010-07-16T10:44:00-04:00","unit":"kg","name":"Mass Per Time","value":"0","path":"massPerTime","displayPath":"massPerTime","displayName":"Mass Per Time"},{"itemValueDefinition":{"perUnit":"year","uid":"40AB7E90980C","unit":"kWh","name":"Last Reading","fromData":false,"path":"lastReading","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"A5BB73E6CBD2","startDate":"2010-07-16T10:44:00-04:00","unit":"kWh","name":"Last Reading","value":"0","path":"lastReading","displayPath":"lastReading","displayName":"Last Reading"},{"itemValueDefinition":{"perUnit":"year","uid":"324EC808AC30","unit":"L","name":"Volume Per Time","fromData":false,"path":"volumePerTime","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"DA93374B62C2","startDate":"2010-07-16T10:44:00-04:00","unit":"L","name":"Volume Per Time","value":"0","path":"volumePerTime","displayPath":"volumePerTime","displayName":"Volume Per Time"},{"itemValueDefinition":{"perUnit":"year","uid":"177D4642A07A","name":"Number of deliveries","fromData":false,"path":"deliveries","fromProfile":true,"valueDefinition":{"uid":"45433E48B39F","environment":{"uid":"5F5887BCF726"},"created":"2007-07-27 08:30:44.0","description":"","name":"amount","valueType":"DECIMAL","modified":"2007-07-27 08:30:44.0"},"drillDown":false},"perUnit":"year","uid":"FA09F1FF043D","startDate":"2010-07-16T10:44:00-04:00","unit":"","name":"Number of deliveries","value":"","path":"deliveries","displayPath":"deliveries","displayName":"Number of deliveries"}],"amounts":{"amount":[{"perUnit":"year","unit":"kg","default":"true","value":31.7772,"type":"CO2"},{"type":"CH4","unit":"kg","value":4.2}],"note":[{"type" : "comment","value" : "This is a text node"},{"type" : "comment","value" : "This is another text node"}]},"created":"2010-07-16T14:44:43Z","name":"gas","endDate":"","dataItem":{"uid":"66056991EE23","Label":"gas"},"modified":"2010-07-16T14:45:03Z"}],"profile":{"uid":"F8C2D1052BF7"}}'))
|
500
|
+
@cat = AMEE::Profile::Category.get(connection, "/profiles/F8C2D1052BF7/home/energy/quantity")
|
501
|
+
@cat.total_amount.should be_close(31.7772, 1e-4)
|
502
|
+
@cat.total_amount_unit.should == 'kg/year'
|
503
|
+
item = @cat.items[0]
|
504
|
+
item[:amounts].size.should be(2)
|
505
|
+
item[:amounts][0][:type].should == "CO2"
|
506
|
+
item[:amounts][0][:value].should be_close(31.7772, 1e-4)
|
507
|
+
item[:amounts][0][:unit].should == 'kg'
|
508
|
+
item[:amounts][0][:per_unit].should == 'year'
|
509
|
+
item[:amounts][0][:default].should be_true
|
510
|
+
item[:amounts][1][:type].should == "CH4"
|
511
|
+
item[:amounts][1][:value].should be_close(4.2, 1e-2)
|
512
|
+
item[:amounts][1][:unit].should == 'kg'
|
513
|
+
item[:amounts][1][:per_unit].should be_nil
|
514
|
+
item[:notes].size.should be(2)
|
515
|
+
item[:notes][0][:type].should == 'comment'
|
516
|
+
item[:notes][0][:value].should == 'This is a text node'
|
517
|
+
item[:notes][1][:type].should == 'comment'
|
518
|
+
item[:notes][1][:value].should == 'This is another text node'
|
519
|
+
end
|
520
|
+
|
521
|
+
#
|
522
|
+
# it "should fail gracefully with incorrect data" do
|
523
|
+
# connection = flexmock "connection"
|
524
|
+
# connection.should_receive(:get).with("/profiles/E54C5525AA3E", {}).and_return('{}'))
|
525
|
+
# lambda{AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E")}.should raise_error(AMEE::BadData)
|
526
|
+
# end
|
527
|
+
|
528
|
+
# it "parses recursive GET requests" do
|
529
|
+
# connection = flexmock "connection"
|
530
|
+
# connection.should_receive(:version).and_return(2.0)
|
531
|
+
# connection.should_receive(:get).with("/profiles/BE22C1732952/transport/car", {:recurse => true}).and_return('{"totalAmountPerMonth":"0","dataCategory":{"uid":"1D95119FB149","path":"car","name":"Car"},"profileDate":"200901","path":"/transport/car","profile":{"uid":"BE22C1732952"},"children":{"pager":{},"dataCategories":[{"dataCategory":{"modified":"2008-04-21 16:42:10.0","created":"2008-04-21 16:42:10.0","itemDefinition":{"uid":"C6BC60C55678"},"dataCategory":{"uid":"1D95119FB149","path":"car","name":"Car"},"uid":"883ADD27228F","environment":{"uid":"5F5887BCF726"},"path":"bands","name":"Bands"},"path":"/transport/car/bands"},{"totalAmountPerMonth":0.265,"dataCategory":{"modified":"2007-07-27 09:30:44.0","created":"2007-07-27 09:30:44.0","itemDefinition":{"uid":"123C4A18B5D6"},"dataCategory":{"uid":"1D95119FB149","path":"car","name":"Car"},"uid":"87E55DA88017","environment":{"uid":"5F5887BCF726"},"path":"generic","name":"Generic"},"path":"/transport/car/generic","children":{"dataCategories":[{"dataCategory":{"modified":"2008-09-23 12:18:03.0","created":"2008-09-23 12:18:03.0","itemDefinition":{"uid":"E6D0BB09578A"},"dataCategory":{"uid":"87E55DA88017","path":"generic","name":"Generic"},"uid":"417DD367E9AA","environment":{"uid":"5F5887BCF726"},"path":"electric","name":"Electric"},"path":"/transport/car/generic/electric"}],"profileItems":{"rows":[{"created":"2009-01-05 13:58:52.0","ecoDriving":"false","tyresUnderinflated":"false","dataItemLabel":"diesel, large","kmPerLitre":"0","distanceKmPerMonth":"1","end":"false","uid":"8450D6D97D2D","modified":"2009-01-05 13:59:05.0","airconFull":"false","dataItemUid":"4F6CBCEE95F7","validFrom":"20090101","amountPerMonth":"0.265","kmPerLitreOwn":"0","country":"","label":"ProfileItem","occupants":"-1","airconTypical":"true","path":"8450D6D97D2D","name":"","regularlyServiced":"true"}],"label":"ProfileItems"}}},{"dataCategory":{"modified":"2007-07-27 09:30:44.0","created":"2007-07-27 09:30:44.0","itemDefinition":{"uid":"07EBA32512DF"},"dataCategory":{"uid":"1D95119FB149","path":"car","name":"Car"},"uid":"95E76249584D","environment":{"uid":"5F5887BCF726"},"path":"specific","name":"Specific"},"path":"/transport/car/specific"}],"profileItems":{}}}'))
|
532
|
+
# cat = AMEE::Profile::Category.get(connection, "/profiles/BE22C1732952/transport/car", :recurse => true)
|
533
|
+
# cat.items.size.should == 0
|
534
|
+
# cat.children.size.should == 3
|
535
|
+
# cat.children[1][:name].should == "Generic"
|
536
|
+
# cat.children[1][:path].should == "generic"
|
537
|
+
# cat.children[1][:uid].should == "87E55DA88017"
|
538
|
+
# cat.children[1][:totalAmountPerMonth].should == 0.265
|
539
|
+
# cat.children[1][:children].size.should == 1
|
540
|
+
# cat.children[1][:children][0][:name].should == "Electric"
|
541
|
+
# cat.children[1][:children][0][:path].should == "electric"
|
542
|
+
# cat.children[1][:children][0][:uid].should == "417DD367E9AA"
|
543
|
+
# cat.children[1][:items].size.should == 1
|
544
|
+
# cat.children[1][:items][0][:amountPerMonth].should == 0.265
|
545
|
+
# cat.children[1][:items][0][:dataItemLabel].should == "diesel, large"
|
546
|
+
# cat.children[1][:items][0][:dataItemUid].should == "4F6CBCEE95F7"
|
547
|
+
# cat.children[1][:items][0][:values][:airconTypical].should == "true"
|
548
|
+
# cat.children[1][:items][0][:uid].should == "8450D6D97D2D"
|
549
|
+
# end
|
550
|
+
|
551
|
+
end
|
552
|
+
|
553
|
+
describe AMEE::Profile::Category, "with an authenticated connection" do
|
554
|
+
|
555
|
+
it "allows direct access to ProfileItems" do
|
556
|
+
|
557
|
+
end
|
558
|
+
|
559
|
+
it "should fail gracefully on other GET errors" do
|
560
|
+
connection = flexmock "connection"
|
561
|
+
connection.should_receive(:get).with("/profiles/E54C5525AA3E", {}).and_raise("unidentified error")
|
562
|
+
lambda{AMEE::Profile::Category.get(connection, "/profiles/E54C5525AA3E")}.should raise_error(AMEE::BadData)
|
563
|
+
end
|
564
|
+
|
565
|
+
end
|