Skip to content

Commit

Permalink
Merge pull request #56 from dcadenas/master
Browse files Browse the repository at this point in the history
Add nodes that represent boolean constants
  • Loading branch information
tenderlove committed Aug 4, 2011
2 parents c9517c1 + 3712071 commit ac4fe77
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 1 deletion.
8 changes: 8 additions & 0 deletions lib/arel/factory_methods.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@ module Arel
###
# Methods for creating various nodes
module FactoryMethods
def create_true
Arel::Nodes::True.new
end

def create_false
Arel::Nodes::False.new
end

def create_table_alias relation, name
Nodes::TableAlias.new(relation, name)
end
Expand Down
2 changes: 2 additions & 0 deletions lib/arel/nodes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
# terminal

require 'arel/nodes/terminal'
require 'arel/nodes/true'
require 'arel/nodes/false'

# unary
require 'arel/nodes/unary'
Expand Down
6 changes: 6 additions & 0 deletions lib/arel/nodes/false.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module Arel
module Nodes
class False < Arel::Nodes::Node
end
end
end
6 changes: 6 additions & 0 deletions lib/arel/nodes/true.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module Arel
module Nodes
class True < Arel::Nodes::Node
end
end
end
1 change: 0 additions & 1 deletion lib/arel/predications.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
module Arel
module Predications

def not_eq other
Nodes::NotEqual.new self, other
end
Expand Down
8 changes: 8 additions & 0 deletions lib/arel/visitors/to_sql.rb
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,14 @@ def visit_Arel_Nodes_Exists o
o.alias ? " AS #{visit o.alias}" : ''}"
end

def visit_Arel_Nodes_True o
"TRUE"
end

def visit_Arel_Nodes_False o
"FALSE"
end

def table_exists? name
@pool.table_exists? name
end
Expand Down
10 changes: 10 additions & 0 deletions test/test_factory_methods.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ def test_create_on
assert_equal :one, on.expr
end

def test_create_true
true_node = @factory.create_true
assert_instance_of Nodes::True, true_node
end

def test_create_false
false_node = @factory.create_false
assert_instance_of Nodes::False, false_node
end

def test_lower
lower = @factory.lower :one
assert_instance_of Nodes::NamedFunction, lower
Expand Down
16 changes: 16 additions & 0 deletions test/visitors/test_to_sql.rb
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,22 @@ def quote value, column = nil
end
end

describe 'Constants' do
it "should handle true" do
test = Table.new(:users).create_true
@visitor.accept(test).must_be_like %{
TRUE
}
end

it "should handle false" do
test = Table.new(:users).create_false
@visitor.accept(test).must_be_like %{
FALSE
}
end
end

describe 'TableAlias' do
it "should use the underlying table for checking columns" do
test = Table.new(:users).alias('zomgusers')[:id].eq '3'
Expand Down

0 comments on commit ac4fe77

Please sign in to comment.