spec/extensions/prepared_statements_spec.rb in sequel-3.35.0 vs spec/extensions/prepared_statements_spec.rb in sequel-3.36.0
- old
+ new
@@ -52,6 +52,36 @@
specify "should work correctly when subclassing" do
c = Class.new(@c)
c[1].should == c.load(:id=>1, :name=>'foo', :i=>2)
@db.sqls.should == ["SELECT * FROM people WHERE (id = 1) LIMIT 1 -- read_only"]
end
+
+ describe " with placeholder type specifiers" do
+ before do
+ @ds.meta_def(:requires_placeholder_type_specifiers?){true}
+ end
+
+ specify "should correctly handle without schema type" do
+ @c[1].should == @p
+ @db.sqls.should == ["SELECT * FROM people WHERE (id = 1) LIMIT 1 -- read_only"]
+ end
+
+ specify "should correctly handle with schema type" do
+ @c.db_schema[:id][:type] = :integer
+ ds = @c.send(:prepared_lookup)
+ def ds.literal_symbol_append(sql, v)
+ if @opts[:bind_vars] and match = /\A\$(.*)\z/.match(v.to_s)
+ s = match[1].split('__')[0].to_sym
+ if prepared_arg?(s)
+ literal_append(sql, prepared_arg(s))
+ else
+ sql << v.to_s
+ end
+ else
+ super
+ end
+ end
+ @c[1].should == @p
+ @db.sqls.should == ["SELECT * FROM people WHERE (id = 1) LIMIT 1 -- read_only"]
+ end
+ end
end