diff options
author | Mike Dalessio <mike@csa.net> | 2010-08-16 23:33:41 -0400 |
---|---|---|
committer | Mike Dalessio <mike@csa.net> | 2010-08-19 01:37:18 -0400 |
commit | 788f33fb59af40e8cb29a233a8d6be9941b52ea7 (patch) | |
tree | c01ff24842c2194a4b51ef9fce0cec3ba68401da /spec | |
parent | 0403efa4c6ad926a61dd0d134d63d962238e2c4f (diff) | |
download | rails-788f33fb59af40e8cb29a233a8d6be9941b52ea7.tar.gz rails-788f33fb59af40e8cb29a233a8d6be9941b52ea7.tar.bz2 rails-788f33fb59af40e8cb29a233a8d6be9941b52ea7.zip |
TreeManager classes deep-copy their statements.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/arel/insert_manager_spec.rb | 11 | ||||
-rw-r--r-- | spec/arel/select_manager_spec.rb | 11 | ||||
-rw-r--r-- | spec/arel/update_manager_spec.rb | 12 | ||||
-rw-r--r-- | spec/spec_helper.rb | 1 | ||||
-rw-r--r-- | spec/support/shared/tree_manager_shared.rb | 9 |
5 files changed, 44 insertions, 0 deletions
diff --git a/spec/arel/insert_manager_spec.rb b/spec/arel/insert_manager_spec.rb index 14cb749b25..ed0725e79d 100644 --- a/spec/arel/insert_manager_spec.rb +++ b/spec/arel/insert_manager_spec.rb @@ -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 diff --git a/spec/arel/select_manager_spec.rb b/spec/arel/select_manager_spec.rb index 01d1b35004..3984bec3fd 100644 --- a/spec/arel/select_manager_spec.rb +++ b/spec/arel/select_manager_spec.rb @@ -166,5 +166,16 @@ module Arel 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 diff --git a/spec/arel/update_manager_spec.rb b/spec/arel/update_manager_spec.rb index 8c4c4f93b8..4aeb15bb14 100644 --- a/spec/arel/update_manager_spec.rb +++ b/spec/arel/update_manager_spec.rb @@ -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 diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 12cbe0170e..4ea3071515 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -5,6 +5,7 @@ require 'arel' 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" diff --git a/spec/support/shared/tree_manager_shared.rb b/spec/support/shared/tree_manager_shared.rb new file mode 100644 index 0000000000..48b561e1fb --- /dev/null +++ b/spec/support/shared/tree_manager_shared.rb @@ -0,0 +1,9 @@ +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 |