Sha256: 4c7ed3ee00600b973c875711dcfc3c8062fe771a991b54c8f3b96e58c6fdd690

Contents?: true

Size: 1.94 KB

Versions: 9

Compression:

Stored size: 1.94 KB

Contents

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

describe "pg_inet extension" do
  ipv6_broken = (IPAddr.new('::1'); false) rescue true
  before do
    @db = Sequel.connect('mock://postgres', :quote_identifiers=>false)
    @db.extension(:pg_array, :pg_inet)
  end

  it "should literalize IPAddr v4 instances to strings correctly" do
    @db.literal(IPAddr.new('127.0.0.1')).should == "'127.0.0.1/32'"
    @db.literal(IPAddr.new('127.0.0.0/8')).should == "'127.0.0.0/8'"
  end

  it "should literalize IPAddr v6 instances to strings correctly" do
    @db.literal(IPAddr.new('2001:4f8:3:ba::/64')).should == "'2001:4f8:3:ba::/64'"
    @db.literal(IPAddr.new('2001:4f8:3:ba:2e0:81ff:fe22:d1f1')).should == "'2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128'"
  end unless ipv6_broken

  it "should not affect literalization of custom objects" do
    o = Object.new
    def o.sql_literal(ds) 'v' end
    @db.literal(o).should == 'v'
  end

  it "should support using IPAddr as bound variables" do
    @db.bound_variable_arg(1, nil).should == 1
    @db.bound_variable_arg(IPAddr.new('127.0.0.1'), nil).should == '127.0.0.1/32'
  end

  it "should support using IPAddr instances in array types in bound variables" do
    @db.bound_variable_arg(Sequel.pg_array([IPAddr.new('127.0.0.1')]), nil).should == '{"127.0.0.1/32"}'
  end

  it "should parse inet/cidr type from the schema correctly" do
    @db.fetch = [{:name=>'id', :db_type=>'integer'}, {:name=>'i', :db_type=>'inet'}, {:name=>'c', :db_type=>'cidr'}]
    @db.schema(:items).map{|e| e[1][:type]}.should == [:integer, :ipaddr, :ipaddr]
  end

  it "should support typecasting for the ipaddr type" do
    ip = IPAddr.new('127.0.0.1')
    @db.typecast_value(:ipaddr, ip).should equal(ip)
    @db.typecast_value(:ipaddr, ip.to_s).should == ip
    proc{@db.typecast_value(:ipaddr, '')}.should raise_error(Sequel::InvalidValue)
    proc{@db.typecast_value(:ipaddr, 1)}.should raise_error(Sequel::InvalidValue)
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
sequel-3.46.0 spec/extensions/pg_inet_spec.rb
sequel-3.45.0 spec/extensions/pg_inet_spec.rb
sequel-3.44.0 spec/extensions/pg_inet_spec.rb
sequel-3.43.0 spec/extensions/pg_inet_spec.rb
sequel-3.42.0 spec/extensions/pg_inet_spec.rb
sequel-3.41.0 spec/extensions/pg_inet_spec.rb
sequel-3.40.0 spec/extensions/pg_inet_spec.rb
sequel-3.39.0 spec/extensions/pg_inet_spec.rb
sequel-3.38.0 spec/extensions/pg_inet_spec.rb