fossil 0.4.17 → 0.4.18

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.17
1
+ 0.4.18
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fossil}
8
- s.version = "0.4.17"
8
+ s.version = "0.4.18"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Patrick Lardin, Daniel Sudol"]
12
- s.date = %q{2010-08-05}
12
+ s.date = %q{2010-09-13}
13
13
  s.description = %q{Access FOS/betrieve db with this Sequel based orm wrapper}
14
14
  s.email = %q{plardin@xojet.com}
15
15
  s.files = [
@@ -2,6 +2,9 @@ class FlightLogExpense < Sequel::Model(:'flight log expenses')
2
2
 
3
3
  code_association :expense_type_value, :'type', :flight_log_expense_type
4
4
 
5
+ #Many to one association with composite keys
6
+ n_to_o :trip_leg, :class=>:TripLeg, :prefix=>'trip leg'
7
+
5
8
  #### BEGIN GENERATED SECTION ####
6
9
  set_primary_key [:'kid - user', :'kid - mult', :'kid - comm', :'kid - date', :'kid - time']
7
10
 
@@ -89,4 +92,49 @@ class FlightLogExpense < Sequel::Model(:'flight log expenses')
89
92
  column_alias :key2, :'key2'
90
93
  #### END GENERATED SECTION ####
91
94
 
95
+ def fuel_rate # Takes a FlightLogExpense for fuel
96
+ return 0 if type != 1
97
+ my_type = (arrival_airport == 1 ? "ARRIVAL" : "DEPART")
98
+ airport_fuel = airport_fuel_lookup vendor_id, my_type
99
+ (airport_fuel ? fuel_rate_by_quantity(quantity, airport_fuel) : 0)
100
+ end
101
+
102
+ def airport_fuel_lookup vendor_id, type #ARRIVAL or DEPART
103
+ str = (type == "DEPART" ? "DEPT" : "ARR")
104
+ prefix = (type == "DEPART" ? "FUELER" : "FBO")
105
+ sql = <<-SQL
106
+ SELECT TOP 1 TL."TRIP NUMBER",TL."LEG NUMBER", TL."#{type} AIRPORT ID",
107
+ AF."COST 1", AF."QTY 1", AF."COST 2", AF."QTY 2", AF."COST 3", AF."QTY 3", AF."COST 4", AF."QTY 4",
108
+ AF."COST 5", AF."QTY 5", AF."COST 6", AF."QTY 6", AF."COST 7", AF."QTY 7", AF."COST 8", AF."QTY 8",
109
+ AF."COST 9", AF."QTY 9", AF."COST 10", AF."QTY 10", AF."EFFECTIVE DATE"
110
+ FROM "TRIP LEGS" AS TL, "AIRPORT FUEL" AS AF
111
+ WHERE (AF."FBO KID - DATE" = TL."#{prefix} KID - DATE"
112
+ AND AF."FBO KID - TIME" = TL."#{prefix} KID - TIME"
113
+ AND AF."FBO KID - MULT" = TL."#{prefix} KID - MULT"
114
+ AND AF."FBO KID - COMM" = TL."#{prefix} KID - COMM"
115
+ AND AF."FBO KID - USER" = TL."#{prefix} KID - USER"
116
+ AND AF."VENDOR ID" = '#{vendor_id}'
117
+ AND (AF."EFFECTIVE DATE" <= TL."#{str} DATE ACT LOCAL" OR AF."EFFECTIVE DATE" <= TL."#{type} DATE - LOCAL"))
118
+ AND (TL."TRIP NUMBER" = ? AND TL."LEG NUMBER" = ?)
119
+ ORDER BY AF."EFFECTIVE DATE" DESC
120
+ SQL
121
+ return db.fetch(sql, trip_leg.trip_number, trip_leg.leg_number).first
122
+ end
123
+
124
+ def build_fuel_tier_hash airport_fuel # creates a hash table of the qty and fuel prices for each tier
125
+ h = Hash.new
126
+ (1..10).each do |n|
127
+ h[airport_fuel[:"qty #{n}"]] = airport_fuel[:"cost #{n}"]
128
+ end
129
+ h
130
+ end
131
+
132
+ def fuel_rate_by_quantity qty, airport_fuel # gives the cost associated with the qty of fuel purchased
133
+ return 0 if qty == nil or qty == 0 or airport_fuel == nil
134
+ h = build_fuel_tier_hash airport_fuel
135
+ h.keys.sort.reverse.each do |key|
136
+ return (h[key] / 100.0) if (qty and key) and qty >= key
137
+ end
138
+ 0
139
+ end
92
140
  end
@@ -8,6 +8,8 @@ class TripLeg < Sequel::Model(:'trip legs')
8
8
  many_to_one :locked_by, :class=>:User, :key=>:'locked by - user id', :primary_key=>:'users initials'
9
9
  many_to_one :leg_rate_aircraft, :class=>:Aircraft, :key=>:'leg rate ac id', :primary_key=>:'aircraft id'
10
10
  many_to_one :authorizer_name, :class=>:Personnel, :key=>:authorization, :primary_key=>:employee_id
11
+ many_to_one :departure_fuel_vendor, :class=>:Vendor, :key=>:dep_fuel_vendor, :primary_key=>:vendor_id
12
+ many_to_one :arrival_fuel_vendor, :class=>:Vendor, :key=>:arr_fuel_vendor, :primary_key=>:vendor_id
11
13
 
12
14
  # Many to one associations with composite primary keys
13
15
  n_to_o :trip, :class=>:Trip, :prefix=>'trips'
@@ -702,6 +704,7 @@ class TripLeg < Sequel::Model(:'trip legs')
702
704
  column_view :land_time_act_gmt, :time, :actual_land_time_gmt
703
705
  column_view :delay_1_time, :time, :delay_1_duration
704
706
  column_view :delay_2_time, :time, :delay_2_duration
707
+ column_view :ron, :boolean
705
708
 
706
709
 
707
710
  # get pic or sic or purser for this trip leg. type should be :pic or :sic or :pur
@@ -814,70 +817,62 @@ class TripLeg < Sequel::Model(:'trip legs')
814
817
  ((nautical_miles*1.150777*10).to_i)/10.0
815
818
  end
816
819
 
817
- # FUEL PASSDOWN STUFF
818
- def method_missing(method, *args, &block)
819
- if method.to_s =~ /^(dept_fuel|arr_fuel)/ then # looking for something like dept_fuel_quantity, dept_fuel_rate or arr_fuel_quantity, etc...
820
- arr = method.to_s.split('_')
821
- send(:get_fuel_value, arr[0], arr[2])
822
- else
823
- super(method, *args, &block)
824
- end
820
+ # Datamart Methods
821
+ def arrival_ap_id
822
+ arrival_airport_id ? "#{arrival_ap_prefix}#{arrival_airport_id}" : ""
825
823
  end
826
824
 
827
- def get_fuel_value type, item
828
- set_fuel_values type unless instance_variable_get "@#{type}_fuel"
829
- pow = instance_variable_get "@#{type}_fuel"
830
- pow[item.to_sym]
825
+ def depart_ap_id
826
+ depart_airport_id ? "#{depart_ap_prefix}#{depart_airport_id}" : ""
831
827
  end
832
828
 
833
- private
834
- def set_fuel_values type
835
- my_type = (type == "arr" ? "ARRIVAL" : "DEPART")
836
- pow = instance_variable_set "@#{type}_fuel", {}
837
- pow[:quantity], pow[:rate] = airport_fuel_quantity_and_rate(my_type)
838
- pow[:cost] = pow[:rate] * pow[:quantity]
829
+ def arrival_fbo_is_primary
830
+ arrival_fbo__primary == 1 ? 'Yes' : 'No'
839
831
  end
840
832
 
841
- def airport_fuel_quantity_and_rate type #ARRIVAL or DEPART
842
- airport_fuel = airport_fuel_lookup type
843
- (airport_fuel ? [airport_fuel[:quantity], fuel_cost_by_quantity(airport_fuel[:quantity], airport_fuel)]: [0,0])
833
+ def departure_fbo_is_primary
834
+ departure_fbo__primary == 1 ? 'Yes' : 'No'
844
835
  end
845
836
 
846
- def airport_fuel_lookup type #ARRIVAL or DEPART
847
- str = (type == "DEPART" ? "DEPT" : type)
848
- sql = <<-SQL
849
- SELECT TOP 1 TL."TRIP NUMBER",TL."LEG NUMBER", TL."#{str} DATE GMT", TL."#{type} AIRPORT ID",
850
- FLE."VENDOR ID", FLE."QUANTITY",
851
- AF."COST 1", AF."QTY 1", AF."COST 2", AF."QTY 2", AF."COST 3", AF."QTY 3", AF."COST 4", AF."QTY 4",
852
- AF."COST 5", AF."QTY 5", AF."COST 6", AF."QTY 6", AF."COST 7", AF."QTY 7", AF."COST 8", AF."QTY 8",
853
- AF."COST 9", AF."QTY 9", AF."COST 10", AF."QTY 10", AF."EFFECTIVE DATE"
854
- FROM "TRIP LEGS" AS TL inner join "FLIGHT LOG EXPENSES" AS FLE
855
- ON
856
- (FLE."TRIP LEG KID - DATE" = TL."KID - DATE" AND FLE."TRIP LEG KID - TIME" = TL."KID - TIME"
857
- AND FLE."TRIP LEG KID - USER" = TL."KID - USER" AND FLE."TRIP LEG KID - MULT"=TL."KID - MULT"
858
- AND FLE."TRIP LEG KID - COMM" = TL."KID - COMM" AND FLE."TYPE" = 1)
859
- LEFT OUTER JOIN "AIRPORT FUEL" AS AF
860
- ON (AF."VENDOR ID" = FLE."VENDOR ID" AND AF."AIRPORT ID" = TL."DEPART AIRPORT ID" AND AF."EFFECTIVE DATE" <= TL."#{str} DATE GMT")
861
- AND (TL."TRIP NUMBER" = ? AND TL."LEG NUMBER" = ?)
862
- ORDER BY AF."EFFECTIVE DATE" DESC
863
- SQL
864
- return db.fetch(sql, trip_number, leg_number).first
837
+ def departure_airport_zipcode
838
+ departure_airport__city_state_zip and
839
+ departure_airport__city_state_zip.match(/(\d{5}-\d{4}$|\d{5})$/) and
840
+ $1
865
841
  end
866
842
 
867
- def build_fuel_tier_hash airport_fuel # creates a hash table of the qty and fuel prices for each tier
868
- h = Hash.new
869
- (1..10).each do |n|
870
- h[airport_fuel[:"qty #{n}"]] = airport_fuel[:"cost #{n}"]
871
- end
872
- h
843
+ def arrival_airport_zipcode
844
+ arrival_airport__city_state_zip and
845
+ arrival_airport__city_state_zip.match(/(\d{5}-\d{4}$|\d{5})$/) and
846
+ $1
847
+ end
848
+
849
+ def fuel_expense
850
+ flight_log_expenses.find{|expense| expense.type == 1}
851
+ end
852
+
853
+ def departure_diff_in_minutes
854
+ (leg_status == "VERI" or leg_status == "FLOG") ? ((actual_departure_date_time_local - planned_departure_date_time_local)*1440).to_i : nil
873
855
  end
874
856
 
875
- def fuel_cost_by_quantity qty, airport_fuel # gives the cost associated with the qty of fuel purchased
876
- return 0 if qty == nil or qty == 0 or airport_fuel == nil
877
- h = build_fuel_tier_hash airport_fuel
878
- h.keys.sort.reverse.each do |key|
879
- return (h[key] / 100.0) if (qty and key) and qty >= key
857
+ def arrival_diff_in_minutes
858
+ (leg_status == "VERI" or leg_status == "FLOG") ? ((actual_arrival_date_time_local - planned_arrival_date_time_local)*1440).to_i : nil
859
+ end
860
+
861
+ def leg_class
862
+ my_class = case aircraft_type_id
863
+ when 'C750' then 'C750'
864
+ when 'CL30' then 'CL30'
865
+ # when 'Managed' then 'Managed' #TODO There is no way to know if the plane is managed other than being given specific tail numbers
866
+ when 'PRM1' then 'Premier'
867
+ when 'BE35' then 'King Air'
868
+ else 'NA'
880
869
  end
881
- 0
870
+
871
+ my_class = 'NA' if (aircraft__owner_name =~ /xojet/i) == nil
872
+ my_class
873
+ end
874
+
875
+ def fuel_expenses
876
+ flight_log_expenses.find_all {|expense| expense.type == 1}
882
877
  end
883
878
  end
@@ -8,11 +8,24 @@ class Sequel::Model
8
8
  # Passing in an array of attribute / method names, fills a hash with values from
9
9
  # the model. Can pass in attributes with __ like :passenger__name and the 'name'
10
10
  # value will be delegated to 'passenger' with the delegator being created on the fly.
11
+ # Can also pass in a hash of attributes, with the key being the key you want
12
+ # for the hash and the value being the value you want from the model. So you could
13
+ # pass in {:pax_name=>:passenger__name} and the hash returned will be {:pax_name=>'Bob'}
11
14
  def fill_hash(attributes)
12
- attributes.inject({}) do |hash, attribute|
13
- attribute_name = attribute.to_s.gsub('__','_').to_sym
14
- generate_delegator(attribute) unless respond_to? attribute_name
15
- hash[attribute_name] = send(attribute_name) if respond_to? attribute_name
15
+ if attributes.is_a? Array
16
+ attributes.inject({}) do |hash, attribute|
17
+ attribute_name = attribute.to_s.gsub('__', '_').to_sym
18
+ generate_delegator(attribute) unless respond_to? attribute_name
19
+ hash[attribute_name] = send(attribute_name) if respond_to? attribute_name
20
+ hash
21
+ end
22
+ elsif attributes.is_a? Hash
23
+ hash = {}
24
+ attributes.each do |key, attribute|
25
+ attribute_name = attribute.to_s.gsub('__', '_').to_sym
26
+ generate_delegator(attribute) unless respond_to? attribute_name
27
+ hash[key] = send(attribute_name) if respond_to? attribute_name
28
+ end
16
29
  hash
17
30
  end
18
31
  end
@@ -37,7 +37,7 @@ describe TripLeg do
37
37
  arr_date_act_gmt = Date.new(1900, 1, 2)
38
38
  arriv_time_act_gmt = 1420
39
39
  home_tz_gmt_offset = -70
40
- tl = TripLeg.new(:arr_date_act_gmt => arr_date_act_gmt.to_fos_days, :arriv_time_act_gmt => arriv_time_act_gmt,
40
+ tl = TripLeg.new(:arrival_date_gmt => arr_date_act_gmt.to_fos_days, :arriv_time_act_gmt => arriv_time_act_gmt,
41
41
  :home_tz_gmt_offset => home_tz_gmt_offset)
42
42
  tl.actual_arrival_date_time_base.should == DateTime.new(1900, 1, 2, 16, 40, 0)
43
43
  end
@@ -139,162 +139,187 @@ describe TripLeg do
139
139
  end
140
140
  end
141
141
 
142
- describe "fuel passdown data columns" do
143
-
144
- it "query fuel info from real trip leg actually works" do
145
- set_fos_db([TripLeg,AirportFuel,FlightLogExpense])
146
- # trip_leg = TripLeg.first(:trip_number=>67579,:leg_number=>3)
147
- trip_leg = TripLeg.select(:'trip legs__trip_number').
148
- filter(:trip_number=>67579,:leg_number=>3).
149
- inner_join(:flight_log_expense,)
150
- first
151
- p trip_leg.trip_number
152
- # p trip_leg.dept_fuel_quantity
153
- # p trip_leg.dept_fuel_cost
154
- # p trip_leg.dept_fuel_rate
155
- # p trip_leg.arr_fuel_quantity
156
- # p trip_leg.arr_fuel_cost
157
- # p trip_leg.arr_fuel_rate
158
- end
159
-
160
- describe "with airport fuel data" do
161
- before :each do
162
- #expect the method airport_fuel_lookup to be called and return a prepopulated hash
163
- hash_with_airport_fuel = {:"qty 1"=>1, :"cost 1"=>393,
164
- :"qty 2"=>1000, :"cost 2"=>373,
165
- :"qty 3"=>2000, :"cost 3"=>362,
166
- :"qty 4"=>0, :"cost 4"=>0,
167
- :"qty 5"=>0, :"cost 5"=>0,
168
- :"qty 6"=>0, :"cost 6"=>0,
169
- :"qty 7"=>0, :"cost 7"=>0,
170
- :"qty 8"=>0, :"cost 8"=>0,
171
- :"qty 9"=>0, :"cost 9"=>0,
172
- :"qty 10"=>0, :"cost 10"=>0,
173
- :quantity=>970}
174
- @tl = TripLeg.new
175
- mock(@tl).airport_fuel_lookup(is_a(String)).times(2) {hash_with_airport_fuel}
176
- end
177
-
178
- it "fuel quantity for leg with airport fuel" do
179
- @tl.dept_fuel_quantity.should == 970
180
- @tl.arr_fuel_quantity.should == 970
181
- end
182
-
183
- it "fuel rate for leg with airport fuel" do
184
- @tl.dept_fuel_rate.should == 3.93
185
- @tl.arr_fuel_rate.should == 3.93
186
- end
187
-
188
- it "fuel cost for leg with airport fuel" do
189
- @tl.dept_fuel_cost.to_s.should == "3812.1"
190
- @tl.arr_fuel_cost.to_s.should == "3812.1"
191
- end
192
- end
193
-
194
- describe "without airport fuel data" do
195
- before :each do
196
- #expect the method airport_fuel_lookup to be called and return a prepopulated hash
197
- hash_without_airport_fuel = {:quantity=>970}
198
- @tl = TripLeg.new
199
- mock(@tl).airport_fuel_lookup(is_a(String)).times(2) {hash_without_airport_fuel}
200
- end
201
-
202
- it "fuel quantity for leg without airport fuel" do
203
- @tl.dept_fuel_quantity.should == 970
204
- @tl.arr_fuel_quantity.should == 970
205
- end
206
-
207
- it "fuel rate for leg without airport fuel" do
208
- @tl.dept_fuel_rate.should == 0
209
- @tl.arr_fuel_rate.should == 0
210
- end
211
-
212
- it "fuel cost for leg without airport fuel" do
213
- @tl.dept_fuel_cost.should == 0
214
- @tl.arr_fuel_cost.should == 0
215
- end
216
- end
217
- end
218
-
219
- describe "without any data at all" do
220
- before :each do
221
- hash_without_any_data = nil
222
- @tl = TripLeg.new
223
- mock(@tl).airport_fuel_lookup(is_a(String)).times(2) {hash_without_any_data}
224
- end
225
-
226
- it "fuel quantity for leg without any data" do
227
- @tl.dept_fuel_quantity.should == 0
228
- @tl.arr_fuel_quantity.should == 0
229
- end
230
-
231
- it "fuel rate for leg without any data" do
232
- @tl.dept_fuel_rate.should == 0
233
- @tl.arr_fuel_rate.should == 0
234
- end
235
-
236
- it "fuel cost for leg without any data" do
237
- @tl.dept_fuel_cost.should == 0
238
- @tl.arr_fuel_cost.should == 0
239
- end
240
- end
241
-
242
- # FUEL PASSDOWN SPECS
243
- describe "different tier pricing selection" do
244
- it "has fuel qty <= second lowest tier" do
245
- fuel_data_hash = { :"qty 1"=>1, :"cost 1"=>393,
246
- :"qty 2"=>1000, :"cost 2"=>373,
247
- :"qty 3"=>2000, :"cost 3"=>362,
248
- :"qty 4"=>0, :"cost 4"=>0,
249
- :"qty 5"=>0, :"cost 5"=>0,
250
- :"qty 6"=>0, :"cost 6"=>0,
251
- :"qty 7"=>0, :"cost 7"=>0,
252
- :"qty 8"=>0, :"cost 8"=>0,
253
- :"qty 9"=>0, :"cost 9"=>0,
254
- :"qty 10"=>0, :"cost 10"=>0,
255
- :quantity=>970}
256
- tl = TripLeg.new
257
- mock(tl).airport_fuel_lookup(is_a(String)).times(2) {fuel_data_hash}
258
- tl.dept_fuel_cost.to_s.should == "3812.1"
259
- tl.arr_fuel_cost.to_s.should == "3812.1"
260
- end
261
-
262
- it "has fuel qty >= highest tier" do
263
- fuel_data_hash = { :"qty 1"=>1, :"cost 1"=>393,
264
- :"qty 2"=>1000, :"cost 2"=>373,
265
- :"qty 3"=>2000, :"cost 3"=>362,
266
- :"qty 4"=>3000, :"cost 4"=>352,
267
- :"qty 5"=>4000, :"cost 5"=>342,
268
- :"qty 6"=>5000, :"cost 6"=>332,
269
- :"qty 7"=>6000, :"cost 7"=>322,
270
- :"qty 8"=>7000, :"cost 8"=>312,
271
- :"qty 9"=>8000, :"cost 9"=>302,
272
- :"qty 10"=>9000, :"cost 10"=>292,
273
- :quantity=>10000}
274
- tl = TripLeg.new
275
- mock(tl).airport_fuel_lookup(is_a(String)).times(2) {fuel_data_hash}
276
- tl.dept_fuel_cost.should == 29200
277
- tl.arr_fuel_cost.should == 29200
278
- end
279
-
280
- it "has fuel qty in the middle of fuel tiers" do
281
- fuel_data_hash = { :"qty 1"=>1, :"cost 1"=>393,
282
- :"qty 2"=>1000, :"cost 2"=>373,
283
- :"qty 3"=>2000, :"cost 3"=>362,
284
- :"qty 4"=>0, :"cost 4"=>0,
285
- :"qty 5"=>0, :"cost 5"=>0,
286
- :"qty 6"=>0, :"cost 6"=>0,
287
- :"qty 7"=>0, :"cost 7"=>0,
288
- :"qty 8"=>0, :"cost 8"=>0,
289
- :"qty 9"=>0, :"cost 9"=>0,
290
- :"qty 10"=>0, :"cost 10"=>0,
291
- :quantity=>1100}
292
- tl = TripLeg.new
293
- mock(tl).airport_fuel_lookup(is_a(String)).times(2) {fuel_data_hash}
294
- tl.dept_fuel_cost.should == 4103
295
- tl.arr_fuel_cost.should == 4103
296
- end
297
- end
298
-
142
+ ## NEED TO REMOVE, TESTS SHOULD BE IN FlightLogExpense spec
143
+ # describe "fuel passdown data columns" do
144
+ #
145
+ # it "query fuel info from real trip leg actually works" do
146
+ # set_fos_db([TripLeg,AirportFuel,AirportFbo,FlightLogExpense])
147
+ ## trip_leg = TripLeg.first(:trip_number=>67579,:leg_number=>3)
148
+ # trip_leg = TripLeg.first(:trip_number=>79203,:leg_number=>1)
149
+ ## trip_leg = TripLeg.select(:'trip legs__trip_number').
150
+ ## filter(:trip_number=>67579,:leg_number=>3).
151
+ ## inner_join(:flight_log_expense,)
152
+ ## first
153
+ ## p trip_leg.trip_number
154
+ # trip_leg.dept_fuel_quantity.should == 433
155
+ # trip_leg.dept_fuel_cost.should == 1437.56
156
+ # trip_leg.dept_fuel_rate.should == 3.32
157
+ # trip_leg.arr_fuel_quantity.should == 0
158
+ # trip_leg.arr_fuel_cost.should == 0
159
+ # trip_leg.arr_fuel_rate.should == 0
160
+ # end
161
+ #
162
+ # describe "with airport fuel data" do
163
+ # before :each do
164
+ # #expect the method airport_fuel_lookup to be called and return a prepopulated hash
165
+ # hash_with_airport_fuel = {:"qty 1"=>1, :"cost 1"=>393,
166
+ # :"qty 2"=>1000, :"cost 2"=>373,
167
+ # :"qty 3"=>2000, :"cost 3"=>362,
168
+ # :"qty 4"=>0, :"cost 4"=>0,
169
+ # :"qty 5"=>0, :"cost 5"=>0,
170
+ # :"qty 6"=>0, :"cost 6"=>0,
171
+ # :"qty 7"=>0, :"cost 7"=>0,
172
+ # :"qty 8"=>0, :"cost 8"=>0,
173
+ # :"qty 9"=>0, :"cost 9"=>0,
174
+ # :"qty 10"=>0, :"cost 10"=>0,
175
+ # :quantity=>970}
176
+ # fe = FlightLogExpense.new(:type => 1,:arrival_airport => 0, :quantity => 970)
177
+ # @tl = TripLeg.new
178
+ # mock(@tl).airport_fuel_lookup(is_a(String)) {hash_with_airport_fuel}
179
+ # stub(@tl).fuel_expense {fe}
180
+ # end
181
+ #
182
+ # it "fuel quantity for leg with airport fuel" do
183
+ # @tl.dept_fuel_quantity.should == 970
184
+ # @tl.arr_fuel_quantity.should == 0
185
+ # end
186
+ #
187
+ # it "fuel rate for leg with airport fuel" do
188
+ # @tl.dept_fuel_rate.should == 3.93
189
+ # @tl.arr_fuel_rate.should == 0
190
+ # end
191
+ #
192
+ # it "fuel cost for leg with airport fuel" do
193
+ # @tl.dept_fuel_cost.to_s.should == "3812.1"
194
+ # @tl.arr_fuel_cost.to_s.should == "0"
195
+ # end
196
+ # end
197
+ #
198
+ # describe "without airport fuel data" do
199
+ # before :each do
200
+ # #expect the method airport_fuel_lookup to be called and return a prepopulated hash
201
+ # hash_without_airport_fuel = {:quantity=>970}
202
+ # @tl = TripLeg.new
203
+ # fe = FlightLogExpense.new(:type => 1,:arrival_airport => 0, :quantity => 970)
204
+ # mock(@tl).airport_fuel_lookup(is_a(String)) {hash_without_airport_fuel}
205
+ # stub(@tl).fuel_expense {fe}
206
+ # end
207
+ #
208
+ # it "fuel quantity for leg without airport fuel" do
209
+ # @tl.dept_fuel_quantity.should == 970
210
+ # @tl.arr_fuel_quantity.should == 0
211
+ # end
212
+ #
213
+ # it "fuel rate for leg without airport fuel" do
214
+ # @tl.dept_fuel_rate.should == 0
215
+ # @tl.arr_fuel_rate.should == 0
216
+ # end
217
+ #
218
+ # it "fuel cost for leg without airport fuel" do
219
+ # @tl.dept_fuel_cost.should == 0
220
+ # @tl.arr_fuel_cost.should == 0
221
+ # end
222
+ # end
223
+ # end
224
+ #
225
+ # describe "without any data at all" do
226
+ # before :each do
227
+ ## hash_without_any_data = nil
228
+ # @tl = TripLeg.new
229
+ # fe = nil
230
+ ## mock(@tl).airport_fuel_lookup(is_a(String)) {hash_without_any_data}
231
+ # stub(@tl).fuel_expense {fe}
232
+ # end
233
+ #
234
+ # it "fuel quantity for leg without any data" do
235
+ # @tl.dept_fuel_quantity.should == 0
236
+ # @tl.arr_fuel_quantity.should == 0
237
+ # end
238
+ #
239
+ # it "fuel rate for leg without any data" do
240
+ # @tl.dept_fuel_rate.should == 0
241
+ # @tl.arr_fuel_rate.should == 0
242
+ # end
243
+ #
244
+ # it "fuel cost for leg without any data" do
245
+ # @tl.dept_fuel_cost.should == 0
246
+ # @tl.arr_fuel_cost.should == 0
247
+ # end
248
+ # end
249
+ #
250
+ # # FUEL PASSDOWN SPECS
251
+ # describe "different tier pricing selection" do
252
+ # it "has fuel qty <= second lowest tier" do
253
+ # fuel_data_hash = { :"qty 1"=>1, :"cost 1"=>393,
254
+ # :"qty 2"=>1000, :"cost 2"=>373,
255
+ # :"qty 3"=>2000, :"cost 3"=>362,
256
+ # :"qty 4"=>0, :"cost 4"=>0,
257
+ # :"qty 5"=>0, :"cost 5"=>0,
258
+ # :"qty 6"=>0, :"cost 6"=>0,
259
+ # :"qty 7"=>0, :"cost 7"=>0,
260
+ # :"qty 8"=>0, :"cost 8"=>0,
261
+ # :"qty 9"=>0, :"cost 9"=>0,
262
+ # :"qty 10"=>0, :"cost 10"=>0,
263
+ # :quantity=>970}
264
+ # tl = TripLeg.new
265
+ # fe = FlightLogExpense.new(:type => 1,:arrival_airport => 0, :quantity => 970)
266
+ # mock(tl).airport_fuel_lookup(is_a(String)).times(2) {fuel_data_hash}
267
+ # stub(tl).fuel_expense {fe}
268
+ # tl.dept_fuel_cost.to_s.should == "3812.1"
269
+ #
270
+ # fe.arrival_airport = 1
271
+ # stub(tl).fuel_expense {fe}
272
+ # tl.arr_fuel_cost.to_s.should == "3812.1"
273
+ # end
274
+ #
275
+ # it "has fuel qty >= highest tier" do
276
+ # fuel_data_hash = { :"qty 1"=>1, :"cost 1"=>393,
277
+ # :"qty 2"=>1000, :"cost 2"=>373,
278
+ # :"qty 3"=>2000, :"cost 3"=>362,
279
+ # :"qty 4"=>3000, :"cost 4"=>352,
280
+ # :"qty 5"=>4000, :"cost 5"=>342,
281
+ # :"qty 6"=>5000, :"cost 6"=>332,
282
+ # :"qty 7"=>6000, :"cost 7"=>322,
283
+ # :"qty 8"=>7000, :"cost 8"=>312,
284
+ # :"qty 9"=>8000, :"cost 9"=>302,
285
+ # :"qty 10"=>9000, :"cost 10"=>292,
286
+ # :quantity=>10000}
287
+ # tl = TripLeg.new
288
+ # fe = FlightLogExpense.new(:type => 1,:arrival_airport => 0, :quantity=>10000)
289
+ # mock(tl).airport_fuel_lookup(is_a(String)).times(2) {fuel_data_hash}
290
+ # stub(tl).fuel_expense {fe}
291
+ #
292
+ # tl.dept_fuel_cost.should == 29200
293
+ #
294
+ # fe.arrival_airport = 1
295
+ # stub(tl).fuel_expense {fe}
296
+ # tl.arr_fuel_cost.should == 29200
297
+ # end
298
+ #
299
+ # it "has fuel qty in the middle of fuel tiers" do
300
+ # fuel_data_hash = { :"qty 1"=>1, :"cost 1"=>393,
301
+ # :"qty 2"=>1000, :"cost 2"=>373,
302
+ # :"qty 3"=>2000, :"cost 3"=>362,
303
+ # :"qty 4"=>0, :"cost 4"=>0,
304
+ # :"qty 5"=>0, :"cost 5"=>0,
305
+ # :"qty 6"=>0, :"cost 6"=>0,
306
+ # :"qty 7"=>0, :"cost 7"=>0,
307
+ # :"qty 8"=>0, :"cost 8"=>0,
308
+ # :"qty 9"=>0, :"cost 9"=>0,
309
+ # :"qty 10"=>0, :"cost 10"=>0,
310
+ # :quantity=>1100}
311
+ # tl = TripLeg.new
312
+ # fe = FlightLogExpense.new(:type => 1,:arrival_airport => 0, :quantity=>1100)
313
+ # mock(tl).airport_fuel_lookup(is_a(String)).times(2) {fuel_data_hash}
314
+ # stub(tl).fuel_expense {fe}
315
+ #
316
+ # tl.dept_fuel_cost.should == 4103
317
+ #
318
+ # fe.arrival_airport = 1
319
+ # stub(tl).fuel_expense {fe}
320
+ # tl.arr_fuel_cost.should == 4103
321
+ # end
322
+ # end
323
+ # END FUEL PASSDOWN RELATED TESTS ####
299
324
  end
300
325
 
@@ -5,11 +5,16 @@ describe "Sequel::Model extentions" do
5
5
 
6
6
  describe "fill_hash method" do
7
7
 
8
- it "works with attributes" do
8
+ it "works with attributes as array" do
9
9
  Dude.first.should respond_to(:fill_hash)
10
10
  Dude.first.fill_hash([:'kid - date']).should == {:'kid - date'=>1}
11
11
  end
12
12
 
13
+ it "works with attributes as hash" do
14
+ Dude.first.should respond_to(:fill_hash)
15
+ Dude.first.fill_hash({:date=>:'kid - date'}).should == {:date=>1}
16
+ end
17
+
13
18
  it "works with methods" do
14
19
  Dude.column_alias :doo, :'kid - date'
15
20
  Dude.first.fill_hash([:doo]).should == {:doo=>1}
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 4
8
- - 17
9
- version: 0.4.17
8
+ - 18
9
+ version: 0.4.18
10
10
  platform: ruby
11
11
  authors:
12
12
  - Patrick Lardin, Daniel Sudol
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-08-05 00:00:00 -07:00
17
+ date: 2010-09-13 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency