lodging 0.0.2 → 0.0.5
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/features/lodging_committees.feature +61 -3
- data/features/lodging_emissions.feature +24 -6
- data/features/support/env.rb +1 -1
- data/lib/lodging/carbon_model.rb +38 -4
- data/lib/lodging/characterization.rb +5 -2
- data/lib/lodging/data.rb +5 -0
- data/lib/test_support/db/schema.rb +4 -1
- data/lib/test_support/lodging_record.rb +5 -2
- metadata +7 -23
@@ -1,12 +1,32 @@
|
|
1
1
|
Feature: Lodging Committee Calculations
|
2
2
|
The lodging model should generate correct committee calculations
|
3
3
|
|
4
|
-
Scenario:
|
4
|
+
Scenario: Rooms committee from default
|
5
5
|
Given a lodging emitter
|
6
|
-
When the "
|
6
|
+
When the "rooms" committee is calculated
|
7
7
|
Then the committee should have used quorum "default"
|
8
8
|
And the conclusion of the committee should be "1"
|
9
9
|
|
10
|
+
Scenario: Nights committee from default
|
11
|
+
Given a lodging emitter
|
12
|
+
When the "nights" committee is calculated
|
13
|
+
Then the committee should have used quorum "default"
|
14
|
+
And the conclusion of the committee should be "1"
|
15
|
+
|
16
|
+
Scenario: State committee from zip code
|
17
|
+
Given a lodging emitter
|
18
|
+
And a characteristic "zip_code.name" of "94122"
|
19
|
+
When the "state" committee is calculated
|
20
|
+
Then the committee should have used quorum "from zip code"
|
21
|
+
And the conclusion of the committee should have "postal_abbreviation" of "CA"
|
22
|
+
|
23
|
+
Scenario: Census division committee from state
|
24
|
+
Given a lodging emitter
|
25
|
+
And a characteristic "state.postal_abbreviation" of "CA"
|
26
|
+
When the "census_division" committee is calculated
|
27
|
+
Then the committee should have used quorum "from state"
|
28
|
+
And the conclusion of the committee should have "number" of "9"
|
29
|
+
|
10
30
|
Scenario: Lodging class committee from nothing
|
11
31
|
Given a lodging emitter
|
12
32
|
When the "lodging_class" committee is calculated
|
@@ -27,6 +47,13 @@ Feature: Lodging Committee Calculations
|
|
27
47
|
Then the committee should have used quorum "from lodging class"
|
28
48
|
And the conclusion of the committee should be "20000000"
|
29
49
|
|
50
|
+
Scenario: District heat intensity committee from census division
|
51
|
+
Given a lodging emitter
|
52
|
+
And a characteristic "census_division.number" of "9"
|
53
|
+
When the "district_heat_intensity" committee is calculated
|
54
|
+
Then the committee should have used quorum "from census division"
|
55
|
+
And the conclusion of the committee should be "1000"
|
56
|
+
|
30
57
|
Scenario: Electricity intensity committee from nothing
|
31
58
|
Given a lodging emitter
|
32
59
|
When the "lodging_class" committee is calculated
|
@@ -41,6 +68,13 @@ Feature: Lodging Committee Calculations
|
|
41
68
|
Then the committee should have used quorum "from lodging class"
|
42
69
|
And the conclusion of the committee should be "10"
|
43
70
|
|
71
|
+
Scenario: Electricity intensity committee from census division
|
72
|
+
Given a lodging emitter
|
73
|
+
And a characteristic "census_division.number" of "9"
|
74
|
+
When the "electricity_intensity" committee is calculated
|
75
|
+
Then the committee should have used quorum "from census division"
|
76
|
+
And the conclusion of the committee should be "3"
|
77
|
+
|
44
78
|
Scenario: Fuel oil intensity committee from nothing
|
45
79
|
Given a lodging emitter
|
46
80
|
When the "lodging_class" committee is calculated
|
@@ -55,6 +89,13 @@ Feature: Lodging Committee Calculations
|
|
55
89
|
Then the committee should have used quorum "from lodging class"
|
56
90
|
And the conclusion of the committee should be "1"
|
57
91
|
|
92
|
+
Scenario: Fuel oil intensity committee from census division
|
93
|
+
Given a lodging emitter
|
94
|
+
And a characteristic "census_division.number" of "9"
|
95
|
+
When the "fuel_oil_intensity" committee is calculated
|
96
|
+
Then the committee should have used quorum "from census division"
|
97
|
+
And the conclusion of the committee should be "2"
|
98
|
+
|
58
99
|
Scenario: Natural gas intensity committee from nothing
|
59
100
|
Given a lodging emitter
|
60
101
|
When the "lodging_class" committee is calculated
|
@@ -69,6 +110,13 @@ Feature: Lodging Committee Calculations
|
|
69
110
|
Then the committee should have used quorum "from lodging class"
|
70
111
|
And the conclusion of the committee should be "2"
|
71
112
|
|
113
|
+
Scenario: Natural gas intensity committee from census division
|
114
|
+
Given a lodging emitter
|
115
|
+
And a characteristic "census_division.number" of "9"
|
116
|
+
When the "natural_gas_intensity" committee is calculated
|
117
|
+
Then the committee should have used quorum "from census division"
|
118
|
+
And the conclusion of the committee should be "1"
|
119
|
+
|
72
120
|
Scenario: Emission factor committee from nothing
|
73
121
|
Given a lodging emitter
|
74
122
|
When the "lodging_class" committee is calculated
|
@@ -88,6 +136,16 @@ Feature: Lodging Committee Calculations
|
|
88
136
|
And the "fuel_oil_intensity" committee is calculated
|
89
137
|
And the "natural_gas_intensity" committee is calculated
|
90
138
|
And the "emission_factor" committee is calculated
|
91
|
-
And the "emission_factor" committee is calculated
|
92
139
|
Then the committee should have used quorum "from fuel intensities"
|
93
140
|
And the conclusion of the committee should be "22.48991"
|
141
|
+
|
142
|
+
Scenario: Emission factor committee from census division
|
143
|
+
Given a lodging emitter
|
144
|
+
And a characteristic "census_division.number" of "9"
|
145
|
+
When the "district_heat_intensity" committee is calculated
|
146
|
+
And the "electricity_intensity" committee is calculated
|
147
|
+
And the "fuel_oil_intensity" committee is calculated
|
148
|
+
And the "natural_gas_intensity" committee is calculated
|
149
|
+
And the "emission_factor" committee is calculated
|
150
|
+
Then the committee should have used quorum "from fuel intensities"
|
151
|
+
And the conclusion of the committee should be "8.50002"
|
@@ -6,8 +6,13 @@ Feature: Lodging Emissions Calculations
|
|
6
6
|
When emissions are calculated
|
7
7
|
Then the emission value should be within "0.00001" kgs of "11.24496"
|
8
8
|
|
9
|
-
Scenario: Calculations starting from
|
10
|
-
Given a lodging has "
|
9
|
+
Scenario: Calculations starting from rooms
|
10
|
+
Given a lodging has "rooms" of "5"
|
11
|
+
When emissions are calculated
|
12
|
+
Then the emission value should be within "0.00001" kgs of "56.22478"
|
13
|
+
|
14
|
+
Scenario: Calculations starting from nights
|
15
|
+
Given a lodging has "nights" of "5"
|
11
16
|
When emissions are calculated
|
12
17
|
Then the emission value should be within "0.00001" kgs of "56.22478"
|
13
18
|
|
@@ -16,8 +21,21 @@ Feature: Lodging Emissions Calculations
|
|
16
21
|
When emissions are calculated
|
17
22
|
Then the emission value should be within "0.00001" kgs of "22.48991"
|
18
23
|
|
19
|
-
Scenario: Calculations starting from
|
20
|
-
Given a lodging has "
|
21
|
-
|
24
|
+
Scenario: Calculations starting from state
|
25
|
+
Given a lodging has "state.postal_abbreviation" of "CA"
|
26
|
+
When emissions are calculated
|
27
|
+
Then the emission value should be within "0.00001" kgs of "8.50002"
|
28
|
+
|
29
|
+
Scenario: Calculations starting from rooms, nights, and lodging class
|
30
|
+
Given a lodging has "rooms" of "2"
|
31
|
+
And it has "nights" of "2"
|
32
|
+
And it has "lodging_class.name" of "Luxury Hotel"
|
33
|
+
When emissions are calculated
|
34
|
+
Then the emission value should be within "0.00001" kgs of "89.95965"
|
35
|
+
|
36
|
+
Scenario: Calculations starting from rooms, nights, and state
|
37
|
+
Given a lodging has "rooms" of "2"
|
38
|
+
And it has "nights" of "2"
|
39
|
+
And it has "state.postal_abbreviation" of "CA"
|
22
40
|
When emissions are calculated
|
23
|
-
Then the emission value should be within "0.00001" kgs of "
|
41
|
+
Then the emission value should be within "0.00001" kgs of "34.00010"
|
data/features/support/env.rb
CHANGED
@@ -5,4 +5,4 @@ require 'cucumber'
|
|
5
5
|
require 'cucumber/formatter/unicode'
|
6
6
|
|
7
7
|
require 'sniff'
|
8
|
-
Sniff.init File.join(File.dirname(__FILE__), '..', '..'), :earth => [:hospitality, :residence, :fuel], :cucumber => true
|
8
|
+
Sniff.init File.join(File.dirname(__FILE__), '..', '..'), :earth => [:hospitality, :residence, :fuel, :locality], :cucumber => true
|
data/lib/lodging/carbon_model.rb
CHANGED
@@ -8,8 +8,8 @@ module BrighterPlanet
|
|
8
8
|
base.extend ::Leap::Subject
|
9
9
|
base.decide :emission, :with => :characteristics do
|
10
10
|
committee :emission do # returns kg CO2e
|
11
|
-
quorum 'from
|
12
|
-
characteristics[:
|
11
|
+
quorum 'from rooms, nights, and emission factor', :needs => [:rooms, :nights, :emission_factor] do |characteristics|
|
12
|
+
characteristics[:rooms] * characteristics[:nights] * characteristics[:emission_factor]
|
13
13
|
end
|
14
14
|
|
15
15
|
quorum 'default' do
|
@@ -45,24 +45,40 @@ module BrighterPlanet
|
|
45
45
|
end
|
46
46
|
|
47
47
|
committee :natural_gas_intensity do # returns cubic metres per room-night
|
48
|
+
quorum 'from census division', :needs => :census_division do |characteristics|
|
49
|
+
characteristics[:census_division].lodging_building_natural_gas_intensity
|
50
|
+
end
|
51
|
+
|
48
52
|
quorum 'from lodging class', :needs => :lodging_class do |characteristics|
|
49
53
|
characteristics[:lodging_class].natural_gas_intensity
|
50
54
|
end
|
51
55
|
end
|
52
56
|
|
53
57
|
committee :fuel_oil_intensity do # returns litres per room-night
|
58
|
+
quorum 'from census division', :needs => :census_division do |characteristics|
|
59
|
+
characteristics[:census_division].lodging_building_fuel_oil_intensity
|
60
|
+
end
|
61
|
+
|
54
62
|
quorum 'from lodging class', :needs => :lodging_class do |characteristics|
|
55
63
|
characteristics[:lodging_class].fuel_oil_intensity
|
56
64
|
end
|
57
65
|
end
|
58
66
|
|
59
67
|
committee :electricity_intensity do # returns kilowatt hours per room-night
|
68
|
+
quorum 'from census division', :needs => :census_division do |characteristics|
|
69
|
+
characteristics[:census_division].lodging_building_electricity_intensity
|
70
|
+
end
|
71
|
+
|
60
72
|
quorum 'from lodging class', :needs => :lodging_class do |characteristics|
|
61
73
|
characteristics[:lodging_class].electricity_intensity
|
62
74
|
end
|
63
75
|
end
|
64
76
|
|
65
77
|
committee :district_heat_intensity do # returns joules per room-night
|
78
|
+
quorum 'from census division', :needs => :census_division do |characteristics|
|
79
|
+
characteristics[:census_division].lodging_building_district_heat_intensity
|
80
|
+
end
|
81
|
+
|
66
82
|
quorum 'from lodging class', :needs => :lodging_class do |characteristics|
|
67
83
|
characteristics[:lodging_class].district_heat_intensity
|
68
84
|
end
|
@@ -74,9 +90,27 @@ module BrighterPlanet
|
|
74
90
|
end
|
75
91
|
end
|
76
92
|
|
77
|
-
committee :
|
93
|
+
committee :census_division do # returns census division
|
94
|
+
quorum 'from state', :needs => :state do |characteristics|
|
95
|
+
characteristics[:state].census_division
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
committee :state do # returns state
|
100
|
+
quorum 'from zip code', :needs => :zip_code do |characteristics|
|
101
|
+
characteristics[:zip_code].state
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
committee :nights do # returns nights
|
106
|
+
quorum 'default' do
|
107
|
+
base.fallback.nights
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
committee :rooms do # return rooms
|
78
112
|
quorum 'default' do
|
79
|
-
base.fallback.
|
113
|
+
base.fallback.rooms
|
80
114
|
end
|
81
115
|
end
|
82
116
|
end
|
@@ -6,8 +6,11 @@ module BrighterPlanet
|
|
6
6
|
def self.included(base)
|
7
7
|
base.send :include, Characterizable
|
8
8
|
base.characterize do
|
9
|
-
has :lodging_class
|
10
|
-
has :
|
9
|
+
has :lodging_class
|
10
|
+
has :zip_code
|
11
|
+
has :state
|
12
|
+
has :rooms
|
13
|
+
has :nights
|
11
14
|
end
|
12
15
|
base.add_implicit_characteristics
|
13
16
|
end
|
data/lib/lodging/data.rb
CHANGED
@@ -6,6 +6,11 @@ module BrighterPlanet
|
|
6
6
|
def self.included(base)
|
7
7
|
base.data_miner do
|
8
8
|
schema do
|
9
|
+
string 'lodging_class_name'
|
10
|
+
string 'zip_code_name'
|
11
|
+
string 'state_postal_abbreviation'
|
12
|
+
integer 'rooms'
|
13
|
+
integer 'nights'
|
9
14
|
end
|
10
15
|
|
11
16
|
process :run_data_miner_on_belongs_to_associations
|
@@ -3,6 +3,9 @@ require 'sniff/database'
|
|
3
3
|
Sniff::Database.define_schema do
|
4
4
|
create_table "lodging_records", :force => true do |t|
|
5
5
|
t.string 'lodging_class_name'
|
6
|
-
t.
|
6
|
+
t.string 'zip_code_name'
|
7
|
+
t.string 'state_postal_abbreviation'
|
8
|
+
t.integer 'rooms'
|
9
|
+
t.integer 'nights'
|
7
10
|
end
|
8
11
|
end
|
@@ -7,7 +7,10 @@ class LodgingRecord < ActiveRecord::Base
|
|
7
7
|
include Sniff::Emitter
|
8
8
|
include BrighterPlanet::Lodging
|
9
9
|
|
10
|
-
belongs_to :lodging_class
|
10
|
+
belongs_to :lodging_class, :foreign_key => 'lodging_class_name'
|
11
|
+
belongs_to :zip_code, :foreign_key => 'zip_code_name'
|
12
|
+
belongs_to :state, :foreign_key => 'state_postal_abbreviation'
|
11
13
|
|
12
|
-
falls_back_on :
|
14
|
+
falls_back_on :rooms => 1,
|
15
|
+
:nights => 1
|
13
16
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lodging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 5
|
10
|
+
version: 0.0.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andy Rossmeissl
|
@@ -19,7 +19,7 @@ autorequire:
|
|
19
19
|
bindir: bin
|
20
20
|
cert_chain: []
|
21
21
|
|
22
|
-
date: 2010-09-
|
22
|
+
date: 2010-09-20 00:00:00 -04:00
|
23
23
|
default_executable:
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
@@ -157,29 +157,13 @@ dependencies:
|
|
157
157
|
requirements:
|
158
158
|
- - ~>
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
hash:
|
160
|
+
hash: 5
|
161
161
|
segments:
|
162
162
|
- 0
|
163
163
|
- 0
|
164
|
-
-
|
165
|
-
version: 0.0.
|
164
|
+
- 13
|
165
|
+
version: 0.0.13
|
166
166
|
requirement: *id009
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
type: :runtime
|
169
|
-
prerelease: false
|
170
|
-
name: earth
|
171
|
-
version_requirements: &id010 !ruby/object:Gem::Requirement
|
172
|
-
none: false
|
173
|
-
requirements:
|
174
|
-
- - ~>
|
175
|
-
- !ruby/object:Gem::Version
|
176
|
-
hash: 83
|
177
|
-
segments:
|
178
|
-
- 0
|
179
|
-
- 0
|
180
|
-
- 38
|
181
|
-
version: 0.0.38
|
182
|
-
requirement: *id010
|
183
167
|
description: A software model in Ruby for the greenhouse gas emissions of a lodging
|
184
168
|
email: andy@rossmeissl.net
|
185
169
|
executables: []
|