blob: e173720e86f192a1c161f38173c6970e493951dd (
plain) (
tree)
|
|
# frozen_string_literal: true
require_relative "../helper"
module Arel
module Nodes
describe "equality" do
# FIXME: backwards compat
describe "backwards compat" do
describe "operator" do
it "returns :==" do
attr = Table.new(:users)[:id]
left = attr.eq(10)
left.operator.must_equal :==
end
end
describe "operand1" do
it "should equal left" do
attr = Table.new(:users)[:id]
left = attr.eq(10)
left.left.must_equal left.operand1
end
end
describe "operand2" do
it "should equal right" do
attr = Table.new(:users)[:id]
left = attr.eq(10)
left.right.must_equal left.operand2
end
end
describe "to_sql" do
it "takes an engine" do
engine = FakeRecord::Base.new
engine.connection.extend Module.new {
attr_accessor :quote_count
def quote(*args) @quote_count += 1; super; end
def quote_column_name(*args) @quote_count += 1; super; end
def quote_table_name(*args) @quote_count += 1; super; end
}
engine.connection.quote_count = 0
attr = Table.new(:users)[:id]
test = attr.eq(10)
test.to_sql engine
engine.connection.quote_count.must_equal 3
end
end
end
describe "or" do
it "makes an OR node" do
attr = Table.new(:users)[:id]
left = attr.eq(10)
right = attr.eq(11)
node = left.or right
node.expr.left.must_equal left
node.expr.right.must_equal right
end
end
describe "and" do
it "makes and AND node" do
attr = Table.new(:users)[:id]
left = attr.eq(10)
right = attr.eq(11)
node = left.and right
node.left.must_equal left
node.right.must_equal right
end
end
it "is equal with equal ivars" do
array = [Equality.new("foo", "bar"), Equality.new("foo", "bar")]
assert_equal 1, array.uniq.size
end
it "is not equal with different ivars" do
array = [Equality.new("foo", "bar"), Equality.new("foo", "baz")]
assert_equal 2, array.uniq.size
end
end
end
end
|