fossil 0.4.13 → 0.4.14
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 +1 -1
- data/fossil.gemspec +4 -2
- data/lib/models/airport.rb +11 -8
- data/lib/models/airport_fbo.rb +1 -0
- data/lib/models/trip_leg.rb +77 -5
- data/spec/models/airport_fbo_spec.rb +17 -0
- data/spec/models/trip_leg_spec.rb +142 -6
- data/spec/spec_helper.rb +2 -1
- metadata +5 -3
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.4. | 
| 1 | 
            +
            0.4.14
         | 
    
        data/fossil.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{fossil}
         | 
| 8 | 
            -
              s.version = "0.4. | 
| 8 | 
            +
              s.version = "0.4.14"
         | 
| 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- | 
| 12 | 
            +
              s.date = %q{2010-08-02}
         | 
| 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 = [
         | 
| @@ -132,6 +132,7 @@ Gem::Specification.new do |s| | |
| 132 132 | 
             
                 "spec/hash_extentions_spec.rb",
         | 
| 133 133 | 
             
                 "spec/helper_classes.rb",
         | 
| 134 134 | 
             
                 "spec/helper_methods.rb",
         | 
| 135 | 
            +
                 "spec/models/airport_fbo_spec.rb",
         | 
| 135 136 | 
             
                 "spec/models/code_spec.rb",
         | 
| 136 137 | 
             
                 "spec/models/quote_spec.rb",
         | 
| 137 138 | 
             
                 "spec/models/trip_leg_spec.rb",
         | 
| @@ -168,6 +169,7 @@ Gem::Specification.new do |s| | |
| 168 169 | 
             
                 "spec/models/quote_spec.rb",
         | 
| 169 170 | 
             
                 "spec/models/vendor_document_spec.rb",
         | 
| 170 171 | 
             
                 "spec/models/trip_spec.rb",
         | 
| 172 | 
            +
                 "spec/models/airport_fbo_spec.rb",
         | 
| 171 173 | 
             
                 "spec/be_model_with_values_matcher.rb"
         | 
| 172 174 | 
             
              ]
         | 
| 173 175 |  | 
    
        data/lib/models/airport.rb
    CHANGED
    
    | @@ -5,16 +5,19 @@ class Airport < Sequel::Model(:'airport') | |
| 5 5 | 
             
              # Associations
         | 
| 6 6 | 
             
              #~ one_to_many :trip_leg_arrivals, :class=>:TripLeg, :key=>nil, :dataset=>proc{TripLeg.filter(:'arrival-icao/iata/id'=>1, :'arrival icao'=>self[:'icao']).union(TripLeg.filter(:'arrival-icao/iata/id'=>2, :'arrival iata'=>self[:'iata'])).union(TripLeg.filter(:'arrival-icao/iata/id'=>3, :'arrival a/p prefix'.like("%#{self[:'airport id prefix']}"), :'arrival airport id'.like("%#{self[:'airport id']}")))}
         | 
| 7 7 | 
             
              one_to_many :trip_leg_arrivals, :class=>:TripLeg, :key=>self.primary_key,  :dataset=>proc{TripLeg.filter(:'arrival-icao/iata/id'=>1, :'arrival icao'=>self[:'icao']).union(TripLeg.filter(:'arrival-icao/iata/id'=>2, :'arrival iata'=>self[:'iata'])).union(TripLeg.filter(:'arrival a/p prefix'.like("%#{self[:'airport id prefix']}"), :'arrival airport id'.like("%#{self[:'airport id']}"), :'arrival-icao/iata/id'=>3))}
         | 
| 8 | 
            -
            #  one_to_many :trip_leg_arrivals, :class=>:TripLeg, :key=>nil, :dataset=>proc{TripLeg.filter(:'arrival-icao/iata/id'=>1, :'arrival icao'=>self[:'icao']).union(TripLeg.filter(:'arrival-icao/iata/id'=>2, :'arrival iata'=>self[:'iata'])).union(TripLeg.filter(:'arrival a/p prefix'.like("%#{self[:'airport id prefix']}"), :'arrival airport id'.like("%#{self[:'airport id']}"), :'arrival-icao/iata/id'=>3))}
         | 
| 9 | 
            -
               | 
| 8 | 
            +
              #  one_to_many :trip_leg_arrivals, :class=>:TripLeg, :key=>nil, :dataset=>proc{TripLeg.filter(:'arrival-icao/iata/id'=>1, :'arrival icao'=>self[:'icao']).union(TripLeg.filter(:'arrival-icao/iata/id'=>2, :'arrival iata'=>self[:'iata'])).union(TripLeg.filter(:'arrival a/p prefix'.like("%#{self[:'airport id prefix']}"), :'arrival airport id'.like("%#{self[:'airport id']}"), :'arrival-icao/iata/id'=>3))}
         | 
| 9 | 
            +
              #  one_to_many :trip_leg_departures, :class=>:TripLeg, :key=>nil, :dataset=>proc{TripLeg.filter(:'depart-icao/iata/id'=>1, :'departure icao'=>self[:'icao']).union(TripLeg.filter(:'depart-icao/iata/id'=>2, :'departure iata'=>self[:'iata'])).union(TripLeg.filter(:'depart-icao/iata/id'=>3, :'depart a/p prefix'.like("%#{self[:'airport id prefix']}"), :'depart airport id'.like("%#{self[:'airport id']}")))}
         | 
| 10 10 |  | 
| 11 | 
            -
               | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
                 result;
         | 
| 16 | 
            -
             | 
| 11 | 
            +
              ###### this method works sometimes but only when there is an iata. and there are 17K airports with no iata
         | 
| 12 | 
            +
              # so its better not to use fossil for this relationship.
         | 
| 13 | 
            +
            #  one_to_many :airport_fbos, :class=>:AirportFbo, :key=>self.primary_key, :dataset=>proc{
         | 
| 14 | 
            +
            #    map = Airport.filter(:iata=>iata).graph( AirportFbo, {:'airport kid - date'=>:kid_date, :'airport kid - time'=>:kid_time,:'airport kid - user'=>:kid_user,:'airport kid - mult'=>:kid_mult,:'airport kid - comm'=>:kid_comm}, :table_alias=>:fbo);
         | 
| 15 | 
            +
            #     result = map.inject([]){|array, hash| array<<hash[:fbo];array};
         | 
| 16 | 
            +
            #     def result.all; self; end;
         | 
| 17 | 
            +
            #     result;
         | 
| 18 | 
            +
            #  }
         | 
| 17 19 |  | 
| 20 | 
            +
              o_to_n :airport_fbos, :class=>:AirportFbo, :prefix=>'airport'
         | 
| 18 21 | 
             
              #### BEGIN GENERATED SECTION ####
         | 
| 19 22 |  | 
| 20 23 | 
             
            	column_alias :acn_pcn, :'acn pcn'
         | 
    
        data/lib/models/airport_fbo.rb
    CHANGED
    
    | @@ -5,6 +5,7 @@ class AirportFbo < Sequel::Model(:"airport fbos") | |
| 5 5 | 
             
              o_to_n :trip_legs, :class=>:TripLeg, :prefix=>'fbo'
         | 
| 6 6 | 
             
              o_to_n :fueled_trip_legs, :class=>:TripLeg, :prefix=>'fueler'
         | 
| 7 7 | 
             
              o_to_n :airport_fuels, :class=>:AirportFuel, :prefix=>'fbo'
         | 
| 8 | 
            +
              n_to_o :airport, :class=>:Airport, :prefix=>'airport'
         | 
| 8 9 |  | 
| 9 10 | 
             
            #### BEGIN GENERATED SECTION ####
         | 
| 10 11 |  | 
    
        data/lib/models/trip_leg.rb
    CHANGED
    
    | @@ -42,10 +42,15 @@ class TripLeg < Sequel::Model(:'trip legs') | |
| 42 42 | 
             
              many_to_one :departure_airport, :class=>:Airport, :key=>:departure_icao, :primary_key=>:icao #:key=>nil, :dataset=>proc{ ref_method = self[:'depart-icao/iata/id']; case ref_method; when 1 then Airport.filter(:'icao'=>self[:'departure icao']); when 2 then Airport.filter(:'iata'=>self[:'departure iata']); else Airport.filter(:'airport id prefix'.like("%#{self[:'depart a/p prefix']}"), :'airport id'.like("%#{self[:'depart airport id']}")); end }
         | 
| 43 43 | 
             
              many_to_one :alternate_arrival_airport, :class=>:Airport, :key=>nil, :dataset=>proc{ Airport.filter(:'airport id prefix'.like("%#{self[:'arr alt prefix']}"), :'airport id'.like( "%#{self[:'arr alt id']}"))}
         | 
| 44 44 | 
             
              many_to_one :alternate_departure_airport, :class=>:Airport, :key=>nil, :dataset=>proc{ Airport.filter(:'airport id prefix'.like("%#{self[:'dep alt prefix']}"), :'airport id'.like( "%#{self[:'dep alt id']}"))}
         | 
| 45 | 
            -
              many_to_one : | 
| 46 | 
            -
              many_to_one : | 
| 47 | 
            -
              many_to_one : | 
| 48 | 
            -
              many_to_one : | 
| 45 | 
            +
              many_to_one :departure_fbo_comment_value, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>43) }
         | 
| 46 | 
            +
              many_to_one :arrival_fbo_comment_value, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>34) }
         | 
| 47 | 
            +
              many_to_one :departure_catering_comment, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>37) }
         | 
| 48 | 
            +
              many_to_one :departure_transport_comment, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>41) }
         | 
| 49 | 
            +
              many_to_one :departure_general_comment, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>183) }
         | 
| 50 | 
            +
              many_to_one :arrival_catering_comment, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>1) }
         | 
| 51 | 
            +
              many_to_one :arrival_transport_comment, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>36) }
         | 
| 52 | 
            +
              many_to_one :arrival_general_comment, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>185) }
         | 
| 53 | 
            +
             | 
| 49 54 | 
             
              many_to_one :limo_comment_value, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>self[:"limo comment"]) }
         | 
| 50 55 | 
             
              many_to_one :crew_fbo_comment_value, :class=>:Comment, :key=>nil, :dataset=>proc { Comment.filter( :"kid - date"=>self[:"kid - date"], :"kid - time"=>self[:"kid - time"], :"kid - user"=>self[:"kid - user"], :"kid - mult"=>self[:"kid - mult"], :"kid - comm"=>self[:"mics serv 2 comment"]) }
         | 
| 51 56 |  | 
| @@ -757,7 +762,7 @@ class TripLeg < Sequel::Model(:'trip legs') | |
| 757 762 | 
             
              def passenger_list
         | 
| 758 763 | 
             
                return '' if trip__passengers.blank? or is_deadhead?
         | 
| 759 764 | 
             
                trip__passengers.sort_by{|tp| -tp.lead_pax}.collect do |tp|
         | 
| 760 | 
            -
                  if (leg_number >= tp.departure_leg_number and leg_number <= tp.arrival_leg_number)
         | 
| 765 | 
            +
                  if (leg_number >= tp.departure_leg_number and leg_number <= tp.arrival_leg_number) or tp.all_legs == 1
         | 
| 761 766 | 
             
                    tp.name + (tp.lead_pax==1 ? " (lead pax)" : '' )
         | 
| 762 767 | 
             
                  end
         | 
| 763 768 | 
             
                end.compact.uniq.join(' : ')
         | 
| @@ -808,4 +813,71 @@ class TripLeg < Sequel::Model(:'trip legs') | |
| 808 813 | 
             
                return 0 unless nautical_miles
         | 
| 809 814 | 
             
                ((nautical_miles*1.150777*10).to_i)/10.0
         | 
| 810 815 | 
             
              end
         | 
| 816 | 
            +
             | 
| 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
         | 
| 825 | 
            +
              end
         | 
| 826 | 
            +
             | 
| 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]
         | 
| 831 | 
            +
              end
         | 
| 832 | 
            +
             | 
| 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]
         | 
| 839 | 
            +
              end
         | 
| 840 | 
            +
             | 
| 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])
         | 
| 844 | 
            +
              end
         | 
| 845 | 
            +
             | 
| 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
         | 
| 865 | 
            +
              end
         | 
| 866 | 
            +
             | 
| 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
         | 
| 873 | 
            +
              end
         | 
| 874 | 
            +
             | 
| 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
         | 
| 880 | 
            +
                end
         | 
| 881 | 
            +
                0
         | 
| 882 | 
            +
              end
         | 
| 811 883 | 
             
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "airport_fbo associations" do
         | 
| 4 | 
            +
              it "finds airport" do
         | 
| 5 | 
            +
                set_fos_db([Airport, AirportFbo])
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            #    fbo = AirportFbo["CTAI", 183, 3, 38174, 38] #ODYSSEY AVIATION
         | 
| 8 | 
            +
            #    fbo.name.should == 'ODYSSEY AVIATION'
         | 
| 9 | 
            +
            #    p fbo.values.select{|k,v| k.match(/airport/) }
         | 
| 10 | 
            +
            #    p fbo.airport
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                a = Airport.filter(:icao=>'AGGA').eager_graph(:airport_fbos).limit(1).all.first
         | 
| 13 | 
            +
                a.airport_fbos.first.name.should == "SOLOMON AIRLINES"
         | 
| 14 | 
            +
            #    a.airport_fbos.first.values
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| @@ -114,10 +114,6 @@ describe TripLeg do | |
| 114 114 | 
             
            #      @trip_leg = TripLeg.first(~:fueler_comment=>0,~:catering_comment=>0,~:limo_comment=>0)
         | 
| 115 115 | 
             
                end
         | 
| 116 116 |  | 
| 117 | 
            -
                it "comment field" do
         | 
| 118 | 
            -
                  @trip_leg.comment_value.comment.should =="Contact: Chris Kelley 415-927-2123"
         | 
| 119 | 
            -
                end
         | 
| 120 | 
            -
             | 
| 121 117 | 
             
                it "catering departure value" do
         | 
| 122 118 | 
             
                  @trip_leg.catering_departure.should == 1
         | 
| 123 119 | 
             
                end
         | 
| @@ -131,11 +127,11 @@ describe TripLeg do | |
| 131 127 | 
             
                end
         | 
| 132 128 |  | 
| 133 129 | 
             
                it "catering comment value" do
         | 
| 134 | 
            -
                  @trip_leg. | 
| 130 | 
            +
                  @trip_leg.departure_catering_comment__comment.should == "Catering: Standard drinks and snacks for all live legs"
         | 
| 135 131 | 
             
                end
         | 
| 136 132 |  | 
| 137 133 | 
             
                it "limo comment value" do
         | 
| 138 | 
            -
                  @trip_leg. | 
| 134 | 
            +
                  @trip_leg.arrival_transport_comment__comment.should == "Transportation: Passenger arranged for all live legs"
         | 
| 139 135 | 
             
                end
         | 
| 140 136 |  | 
| 141 137 | 
             
                it "crew fbo comment value" do
         | 
| @@ -143,5 +139,145 @@ describe TripLeg do | |
| 143 139 | 
             
                end
         | 
| 144 140 | 
             
              end
         | 
| 145 141 |  | 
| 142 | 
            +
              describe "fuel passdown data columns" do
         | 
| 143 | 
            +
                describe "with airport fuel data" do
         | 
| 144 | 
            +
                  before :each do
         | 
| 145 | 
            +
                    #expect the method airport_fuel_lookup to be called and return a prepopulated hash
         | 
| 146 | 
            +
                    hash_with_airport_fuel = {:"qty 1"=>1,    :"cost 1"=>393,
         | 
| 147 | 
            +
                                              :"qty 2"=>1000, :"cost 2"=>373,
         | 
| 148 | 
            +
                                              :"qty 3"=>2000, :"cost 3"=>362,
         | 
| 149 | 
            +
                                              :"qty 4"=>0,    :"cost 4"=>0,
         | 
| 150 | 
            +
                                              :"qty 5"=>0,    :"cost 5"=>0,
         | 
| 151 | 
            +
                                              :"qty 6"=>0,    :"cost 6"=>0,
         | 
| 152 | 
            +
                                              :"qty 7"=>0,    :"cost 7"=>0,
         | 
| 153 | 
            +
                                              :"qty 8"=>0,    :"cost 8"=>0,
         | 
| 154 | 
            +
                                              :"qty 9"=>0,    :"cost 9"=>0,
         | 
| 155 | 
            +
                                              :"qty 10"=>0,   :"cost 10"=>0,
         | 
| 156 | 
            +
                                              :quantity=>970}
         | 
| 157 | 
            +
                    @tl = TripLeg.new
         | 
| 158 | 
            +
                    mock(@tl).airport_fuel_lookup(is_a(String)).times(2) {hash_with_airport_fuel}
         | 
| 159 | 
            +
                  end
         | 
| 160 | 
            +
             | 
| 161 | 
            +
                  it "fuel quantity for leg with airport fuel" do
         | 
| 162 | 
            +
                    @tl.dept_fuel_quantity.should == 970
         | 
| 163 | 
            +
                    @tl.arr_fuel_quantity.should == 970
         | 
| 164 | 
            +
                  end
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                  it "fuel rate for leg with airport fuel" do
         | 
| 167 | 
            +
                    @tl.dept_fuel_rate.should == 3.93
         | 
| 168 | 
            +
                    @tl.arr_fuel_rate.should == 3.93
         | 
| 169 | 
            +
                  end
         | 
| 170 | 
            +
             | 
| 171 | 
            +
                  it "fuel cost for leg with airport fuel" do
         | 
| 172 | 
            +
                    @tl.dept_fuel_cost.to_s.should == "3812.1"
         | 
| 173 | 
            +
                    @tl.arr_fuel_cost.to_s.should == "3812.1"
         | 
| 174 | 
            +
                  end
         | 
| 175 | 
            +
                end
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                describe "without airport fuel data" do
         | 
| 178 | 
            +
                  before :each do
         | 
| 179 | 
            +
                    #expect the method airport_fuel_lookup to be called and return a prepopulated hash
         | 
| 180 | 
            +
                    hash_without_airport_fuel = {:quantity=>970}
         | 
| 181 | 
            +
                    @tl = TripLeg.new
         | 
| 182 | 
            +
                    mock(@tl).airport_fuel_lookup(is_a(String)).times(2) {hash_without_airport_fuel}
         | 
| 183 | 
            +
                  end
         | 
| 184 | 
            +
             | 
| 185 | 
            +
                  it "fuel quantity for leg without airport fuel" do
         | 
| 186 | 
            +
                    @tl.dept_fuel_quantity.should == 970
         | 
| 187 | 
            +
                    @tl.arr_fuel_quantity.should == 970
         | 
| 188 | 
            +
                  end
         | 
| 189 | 
            +
             | 
| 190 | 
            +
                  it "fuel rate for leg without airport fuel" do
         | 
| 191 | 
            +
                    @tl.dept_fuel_rate.should == 0
         | 
| 192 | 
            +
                    @tl.arr_fuel_rate.should == 0
         | 
| 193 | 
            +
                  end
         | 
| 194 | 
            +
             | 
| 195 | 
            +
                  it "fuel cost for leg without airport fuel" do
         | 
| 196 | 
            +
                    @tl.dept_fuel_cost.should == 0
         | 
| 197 | 
            +
                    @tl.arr_fuel_cost.should == 0
         | 
| 198 | 
            +
                  end
         | 
| 199 | 
            +
                end
         | 
| 200 | 
            +
              end
         | 
| 201 | 
            +
             | 
| 202 | 
            +
              describe "without any data at all" do
         | 
| 203 | 
            +
                before :each do
         | 
| 204 | 
            +
                  hash_without_any_data = nil
         | 
| 205 | 
            +
                  @tl = TripLeg.new
         | 
| 206 | 
            +
                  mock(@tl).airport_fuel_lookup(is_a(String)).times(2) {hash_without_any_data}
         | 
| 207 | 
            +
                end
         | 
| 208 | 
            +
             | 
| 209 | 
            +
                it "fuel quantity for leg without any data" do
         | 
| 210 | 
            +
                  @tl.dept_fuel_quantity.should == 0
         | 
| 211 | 
            +
                  @tl.arr_fuel_quantity.should == 0
         | 
| 212 | 
            +
                end
         | 
| 213 | 
            +
             | 
| 214 | 
            +
                it "fuel rate for leg without any data" do
         | 
| 215 | 
            +
                  @tl.dept_fuel_rate.should == 0
         | 
| 216 | 
            +
                  @tl.arr_fuel_rate.should == 0
         | 
| 217 | 
            +
                end
         | 
| 218 | 
            +
             | 
| 219 | 
            +
                it "fuel cost for leg without any data" do
         | 
| 220 | 
            +
                  @tl.dept_fuel_cost.should == 0
         | 
| 221 | 
            +
                  @tl.arr_fuel_cost.should == 0
         | 
| 222 | 
            +
                end
         | 
| 223 | 
            +
              end
         | 
| 224 | 
            +
             | 
| 225 | 
            +
              # FUEL PASSDOWN SPECS
         | 
| 226 | 
            +
              describe "different tier pricing selection" do
         | 
| 227 | 
            +
                it "has fuel qty <= second lowest tier" do
         | 
| 228 | 
            +
                  fuel_data_hash = {  :"qty 1"=>1,    :"cost 1"=>393,
         | 
| 229 | 
            +
                                      :"qty 2"=>1000, :"cost 2"=>373,
         | 
| 230 | 
            +
                                      :"qty 3"=>2000, :"cost 3"=>362,
         | 
| 231 | 
            +
                                      :"qty 4"=>0,    :"cost 4"=>0,
         | 
| 232 | 
            +
                                      :"qty 5"=>0,    :"cost 5"=>0,
         | 
| 233 | 
            +
                                      :"qty 6"=>0,    :"cost 6"=>0,
         | 
| 234 | 
            +
                                      :"qty 7"=>0,    :"cost 7"=>0,
         | 
| 235 | 
            +
                                      :"qty 8"=>0,    :"cost 8"=>0,
         | 
| 236 | 
            +
                                      :"qty 9"=>0,    :"cost 9"=>0,
         | 
| 237 | 
            +
                                      :"qty 10"=>0,   :"cost 10"=>0,
         | 
| 238 | 
            +
                                      :quantity=>970}
         | 
| 239 | 
            +
                  tl = TripLeg.new
         | 
| 240 | 
            +
                  mock(tl).airport_fuel_lookup(is_a(String)).times(2) {fuel_data_hash}
         | 
| 241 | 
            +
                  tl.dept_fuel_cost.to_s.should == "3812.1"
         | 
| 242 | 
            +
                  tl.arr_fuel_cost.to_s.should == "3812.1"
         | 
| 243 | 
            +
                end
         | 
| 244 | 
            +
             | 
| 245 | 
            +
                it "has fuel qty >= highest tier" do
         | 
| 246 | 
            +
                  fuel_data_hash = {  :"qty 1"=>1,    :"cost 1"=>393,
         | 
| 247 | 
            +
                                      :"qty 2"=>1000, :"cost 2"=>373,
         | 
| 248 | 
            +
                                      :"qty 3"=>2000, :"cost 3"=>362,
         | 
| 249 | 
            +
                                      :"qty 4"=>3000,    :"cost 4"=>352,
         | 
| 250 | 
            +
                                      :"qty 5"=>4000,    :"cost 5"=>342,
         | 
| 251 | 
            +
                                      :"qty 6"=>5000,    :"cost 6"=>332,
         | 
| 252 | 
            +
                                      :"qty 7"=>6000,    :"cost 7"=>322,
         | 
| 253 | 
            +
                                      :"qty 8"=>7000,    :"cost 8"=>312,
         | 
| 254 | 
            +
                                      :"qty 9"=>8000,    :"cost 9"=>302,
         | 
| 255 | 
            +
                                      :"qty 10"=>9000,   :"cost 10"=>292,
         | 
| 256 | 
            +
                                      :quantity=>10000}
         | 
| 257 | 
            +
                  tl = TripLeg.new
         | 
| 258 | 
            +
                  mock(tl).airport_fuel_lookup(is_a(String)).times(2) {fuel_data_hash}
         | 
| 259 | 
            +
                  tl.dept_fuel_cost.should == 29200
         | 
| 260 | 
            +
                  tl.arr_fuel_cost.should == 29200
         | 
| 261 | 
            +
                end
         | 
| 262 | 
            +
             | 
| 263 | 
            +
                it "has fuel qty in the middle of fuel tiers" do
         | 
| 264 | 
            +
                  fuel_data_hash = {  :"qty 1"=>1,    :"cost 1"=>393,
         | 
| 265 | 
            +
                                      :"qty 2"=>1000, :"cost 2"=>373,
         | 
| 266 | 
            +
                                      :"qty 3"=>2000, :"cost 3"=>362,
         | 
| 267 | 
            +
                                      :"qty 4"=>0,    :"cost 4"=>0,
         | 
| 268 | 
            +
                                      :"qty 5"=>0,    :"cost 5"=>0,
         | 
| 269 | 
            +
                                      :"qty 6"=>0,    :"cost 6"=>0,
         | 
| 270 | 
            +
                                      :"qty 7"=>0,    :"cost 7"=>0,
         | 
| 271 | 
            +
                                      :"qty 8"=>0,    :"cost 8"=>0,
         | 
| 272 | 
            +
                                      :"qty 9"=>0,    :"cost 9"=>0,
         | 
| 273 | 
            +
                                      :"qty 10"=>0,   :"cost 10"=>0,
         | 
| 274 | 
            +
                                      :quantity=>1100}
         | 
| 275 | 
            +
                  tl = TripLeg.new
         | 
| 276 | 
            +
                  mock(tl).airport_fuel_lookup(is_a(String)).times(2) {fuel_data_hash}
         | 
| 277 | 
            +
                  tl.dept_fuel_cost.should == 4103
         | 
| 278 | 
            +
                  tl.arr_fuel_cost.should == 4103
         | 
| 279 | 
            +
                end
         | 
| 280 | 
            +
              end
         | 
| 281 | 
            +
             | 
| 146 282 | 
             
            end
         | 
| 147 283 |  | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'lib/fossil'
         | 
| 2 | 
            +
            gem "rspec", '1.3.0'
         | 
| 2 3 | 
             
            require 'spec'
         | 
| 3 4 | 
             
            require 'rr'
         | 
| 4 5 | 
             
            require 'pp'
         | 
| @@ -9,7 +10,7 @@ unless defined?(DB_DEMO) | |
| 9 10 | 
             
              DB_DEMO = Sequel.odbc('demodata')#, :loggers=>[Logger.new($stdout)])
         | 
| 10 11 | 
             
              DB_DEMO.extend(Sequel::Pervasive::DatabaseMethods)
         | 
| 11 12 |  | 
| 12 | 
            -
              DB_FOS = Sequel.odbc('fos' | 
| 13 | 
            +
              DB_FOS = Sequel.odbc('fos', :loggers=>[Logger.new($stdout)])
         | 
| 13 14 | 
             
              DB_FOS.extend(Sequel::Pervasive::DatabaseMethods)
         | 
| 14 15 | 
             
            end
         | 
| 15 16 |  | 
    
        metadata
    CHANGED
    
    | @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version | |
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 0
         | 
| 7 7 | 
             
              - 4
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 0.4. | 
| 8 | 
            +
              - 14
         | 
| 9 | 
            +
              version: 0.4.14
         | 
| 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- | 
| 17 | 
            +
            date: 2010-08-02 00:00:00 -07:00
         | 
| 18 18 | 
             
            default_executable: 
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -185,6 +185,7 @@ files: | |
| 185 185 | 
             
            - spec/hash_extentions_spec.rb
         | 
| 186 186 | 
             
            - spec/helper_classes.rb
         | 
| 187 187 | 
             
            - spec/helper_methods.rb
         | 
| 188 | 
            +
            - spec/models/airport_fbo_spec.rb
         | 
| 188 189 | 
             
            - spec/models/code_spec.rb
         | 
| 189 190 | 
             
            - spec/models/quote_spec.rb
         | 
| 190 191 | 
             
            - spec/models/trip_leg_spec.rb
         | 
| @@ -245,4 +246,5 @@ test_files: | |
| 245 246 | 
             
            - spec/models/quote_spec.rb
         | 
| 246 247 | 
             
            - spec/models/vendor_document_spec.rb
         | 
| 247 248 | 
             
            - spec/models/trip_spec.rb
         | 
| 249 | 
            +
            - spec/models/airport_fbo_spec.rb
         | 
| 248 250 | 
             
            - spec/be_model_with_values_matcher.rb
         |