spec/lib/param_refs_spec.rb (35 lines of code) (raw):

require 'spec_helper' describe PgQuery, '#param_refs' do subject { described_class.parse(query).param_refs } context 'simple query' do let(:query) { 'SELECT * FROM x WHERE y = ? AND z = ?' } it { is_expected.to eq [{"location"=>26, "length"=>1}, {"location"=>36, "length"=>1}] } end context 'queries with typecasts' do let(:query) { 'SELECT * FROM x WHERE y = $1::text AND z < now() - INTERVAL $2' } it do is_expected.to eq( [ { "location"=>26, "length"=>2, "typename"=>['text'] }, { "location"=>51, "length"=>11, "typename"=>['pg_catalog', 'interval'] } ] ) end end context 'actual param refs' do let(:query) { 'SELECT * FROM a WHERE x = $1 AND y = $12 AND z = $255' } it do is_expected.to eq [{"location"=>26, "length"=>2}, {"location"=>37, "length"=>3}, {"location"=>49, "length"=>4}] end end end