diff options
author | Bryan Helmkamp <bryan@brynary.com> | 2009-05-16 21:13:32 -0400 |
---|---|---|
committer | Bryan Helmkamp <bryan@brynary.com> | 2009-05-17 13:17:07 -0400 |
commit | 49d119ae84bbb7cd180ca855cf48997dc731554c (patch) | |
tree | 3bae397d3e2b5ee76bd89a87ccbf421d814fec74 /spec/arel/unit/predicates/binary_spec.rb | |
parent | 4096d192a1e7cdf0115f5a4cf33d102b176cb8cd (diff) | |
download | rails-49d119ae84bbb7cd180ca855cf48997dc731554c.tar.gz rails-49d119ae84bbb7cd180ca855cf48997dc731554c.tar.bz2 rails-49d119ae84bbb7cd180ca855cf48997dc731554c.zip |
Adding spec:mysql and spec:sqlite3 tasks
Diffstat (limited to 'spec/arel/unit/predicates/binary_spec.rb')
-rw-r--r-- | spec/arel/unit/predicates/binary_spec.rb | 76 |
1 files changed, 53 insertions, 23 deletions
diff --git a/spec/arel/unit/predicates/binary_spec.rb b/spec/arel/unit/predicates/binary_spec.rb index 56fcf2d8ad..2d0c67e006 100644 --- a/spec/arel/unit/predicates/binary_spec.rb +++ b/spec/arel/unit/predicates/binary_spec.rb @@ -18,13 +18,19 @@ module Arel @operand1 = ConcreteBinary.new(@attribute1, 1) @operand2 = ConcreteBinary.new(@attribute2, "name") end - + describe Or do describe "#to_sql" do it "manufactures sql with an OR operation" do - Or.new(@operand1, @operand2).to_sql.should be_like(" - (`users`.`id` <=> 1 OR `users`.`name` <=> 'name') - ") + sql = Or.new(@operand1, @operand2).to_sql + + adapter_is :mysql do + sql.should be_like(%Q{(`users`.`id` <=> 1 OR `users`.`name` <=> 'name')}) + end + + adapter_is_not :mysql do + sql.should be_like(%Q{("users"."id" <=> 1 OR "users"."name" <=> 'name')}) + end end end end @@ -32,58 +38,82 @@ module Arel describe And do describe "#to_sql" do it "manufactures sql with an AND operation" do - And.new(@operand1, @operand2).to_sql.should be_like(" - (`users`.`id` <=> 1 AND `users`.`name` <=> 'name') - ") + sql = And.new(@operand1, @operand2).to_sql + + adapter_is :mysql do + sql.should be_like(%Q{(`users`.`id` <=> 1 AND `users`.`name` <=> 'name')}) + end + + adapter_is_not :mysql do + sql.should be_like(%Q{("users"."id" <=> 1 AND "users"."name" <=> 'name')}) + end end end end end - + describe '#to_sql' do describe 'when relating two attributes' do it 'manufactures sql with a binary operation' do - ConcreteBinary.new(@attribute1, @attribute2).to_sql.should be_like(" - `users`.`id` <=> `users`.`name` - ") + sql = ConcreteBinary.new(@attribute1, @attribute2).to_sql + + adapter_is :mysql do + sql.should be_like(%Q{`users`.`id` <=> `users`.`name`}) + end + + adapter_is_not :mysql do + sql.should be_like(%Q{"users"."id" <=> "users"."name"}) + end end end - + describe 'when relating an attribute and a value' do before do @value = "1-asdf" end - + describe 'when relating to an integer attribute' do it 'formats values as integers' do - ConcreteBinary.new(@attribute1, @value).to_sql.should be_like(" - `users`.`id` <=> 1 - ") + sql = ConcreteBinary.new(@attribute1, @value).to_sql + + adapter_is :mysql do + sql.should be_like(%Q{`users`.`id` <=> 1}) + end + + adapter_is_not :mysql do + sql.should be_like(%Q{"users"."id" <=> 1}) + end end end - + describe 'when relating to a string attribute' do it 'formats values as strings' do - ConcreteBinary.new(@attribute2, @value).to_sql.should be_like(" - `users`.`name` <=> '1-asdf' - ") + sql = ConcreteBinary.new(@attribute2, @value).to_sql + + adapter_is :mysql do + sql.should be_like(%Q{`users`.`name` <=> '1-asdf'}) + end + + adapter_is_not :mysql do + sql.should be_like(%Q{"users"."name" <=> '1-asdf'}) + end end end end end - + describe '#bind' do before do @another_relation = @relation.alias end - + describe 'when both operands are attributes' do it "manufactures an expression with the attributes bound to the relation" do ConcreteBinary.new(@attribute1, @attribute2).bind(@another_relation). \ should == ConcreteBinary.new(@another_relation[@attribute1], @another_relation[@attribute2]) end end - + describe 'when an operand is a value' do it "manufactures an expression with unmodified values" do ConcreteBinary.new(@attribute1, "asdf").bind(@another_relation). \ |