Sha256: 3a71d29ee790608d4168b5201d09ab1ea20e6c30fe77beaa0aef44d974837461

Contents?: true

Size: 1.02 KB

Versions: 19

Compression:

Stored size: 1.02 KB

Contents

require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")

describe "LooserTypecasting Extension" do
  before do
    @db = Sequel::Database.new({})
    def @db.schema(*args)
      [[:id, {}], [:y, {:type=>:float}], [:b, {:type=>:integer}]]
    end 
    @c = Class.new(Sequel::Model(@db[:items]))
    @c.instance_eval do
      @columns = [:id, :b, :y] 
      def columns; @columns; end 
    end
  end

  specify "Should use to_i instead of Integer() for typecasting integers" do
    proc{@c.new(:b=>'a')}.should raise_error(Sequel::InvalidValue)
    @db.extend(Sequel::LooserTypecasting)
    @c.new(:b=>'a').b.should == 0

    o = Object.new
    def o.to_i
      1
    end
    @c.new(:b=>o).b.should == 1
  end

  specify "Should use to_f instead of Float() for typecasting floats" do
    proc{@c.new(:y=>'a')}.should raise_error(Sequel::InvalidValue)
    @db.extend(Sequel::LooserTypecasting)
    @c.new(:y=>'a').y.should == 0.0

    o = Object.new
    def o.to_f
      1.0
    end
    @c.new(:y=>o).y.should == 1.0
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
sequel-3.36.1 spec/extensions/looser_typecasting_spec.rb
sequel-3.36.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.35.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.34.1 spec/extensions/looser_typecasting_spec.rb
sequel-3.34.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.33.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.32.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.31.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.30.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.29.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.28.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.27.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.26.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.25.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.24.1 spec/extensions/looser_typecasting_spec.rb
sequel-3.24.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.23.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.22.0 spec/extensions/looser_typecasting_spec.rb
sequel-3.21.0 spec/extensions/looser_typecasting_spec.rb