提交 788f33fb 编写于 作者: M Mike Dalessio

TreeManager classes deep-copy their statements.

上级 0403efa4
......@@ -15,5 +15,10 @@ def to_sql
viz = Visitors::ToSql.new @engine
viz.accept @head
end
def initialize_copy other
super
@head = @head.clone
end
end
end
......@@ -110,5 +110,16 @@ module Arel
}
end
end
describe "TreeManager" do
subject do
table = Table.new(:users)
Arel::InsertManager.new(Table.engine).tap do |manager|
manager.insert [[table[:id], nil]]
end
end
it_should_behave_like "TreeManager"
end
end
end
......@@ -166,5 +166,16 @@ def execute sql
manager.to_sql.should be_like 'SELECT "users"."id" FROM "users"'
end
end
describe "TreeManager" do
subject do
table = Table.new :users
Arel::SelectManager.new(Table.engine).tap do |manager|
manager.from(table).project(table['id'])
end
end
it_should_behave_like "TreeManager"
end
end
end
......@@ -73,5 +73,17 @@ module Arel
um.where(table[:id].eq(1)).should == um
end
end
describe "TreeManager" do
subject do
table = Table.new :users
Arel::UpdateManager.new(Table.engine).tap do |manager|
manager.table table
manager.where table[:id].eq(1)
end
end
it_should_behave_like "TreeManager"
end
end
end
......@@ -5,6 +5,7 @@
require 'support/matchers/be_like'
require 'support/check'
Dir[File.join(File.dirname(__FILE__),'support/shared/*')].each { |f| require f }
if adapter = ENV['ADAPTER']
require "support/connections/#{adapter}_connection.rb"
......
shared_examples_for "TreeManager" do
describe "clone" do
it "clones the insert statement" do
subject.instance_variable_get("@head").should_receive(:clone).and_return(:foo) # TODO: ick.
dolly = subject.clone
dolly.instance_variable_get("@head").should == :foo
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册