diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-08-19 10:38:07 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-08-19 10:38:07 -0700 |
commit | 3283adc6d0edcc873256c78842f8ddd233577d08 (patch) | |
tree | a92d64c67ea987f65a465dbac97195cde4fbc820 /spec/arel | |
parent | 6451188abf647d6aa855d22db8d2d62a2b2c4542 (diff) | |
parent | 06c92a8557f5171704a121d0f4412e4c1e9a9c2b (diff) | |
download | rails-3283adc6d0edcc873256c78842f8ddd233577d08.tar.gz rails-3283adc6d0edcc873256c78842f8ddd233577d08.tar.bz2 rails-3283adc6d0edcc873256c78842f8ddd233577d08.zip |
Merge branch 'v1' of github.com:flavorjones/arel into v1
* 'v1' of github.com:flavorjones/arel:
DeleteStatement deep copy
cleaning up describe/it block names
SelectCore deep copies attributes
Statement nodes deep-copy AST nodes
TreeManager classes deep-copy their statements.
Diffstat (limited to 'spec/arel')
-rw-r--r-- | spec/arel/insert_manager_spec.rb | 11 | ||||
-rw-r--r-- | spec/arel/nodes/delete_statement_spec.rb | 17 | ||||
-rw-r--r-- | spec/arel/nodes/insert_statement_spec.rb | 22 | ||||
-rw-r--r-- | spec/arel/nodes/select_core_spec.rb | 23 | ||||
-rw-r--r-- | spec/arel/nodes/select_statement_spec.rb | 16 | ||||
-rw-r--r-- | spec/arel/nodes/update_statement_spec.rb | 22 | ||||
-rw-r--r-- | spec/arel/select_manager_spec.rb | 11 | ||||
-rw-r--r-- | spec/arel/update_manager_spec.rb | 12 |
8 files changed, 134 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/nodes/delete_statement_spec.rb b/spec/arel/nodes/delete_statement_spec.rb new file mode 100644 index 0000000000..dd43b70d35 --- /dev/null +++ b/spec/arel/nodes/delete_statement_spec.rb @@ -0,0 +1,17 @@ +require 'spec_helper' + +describe Arel::Nodes::SelectStatement do + describe "#clone" do + it "clones where" do + statement = Arel::Nodes::DeleteStatement.new + statement.wheres = %w[a b c] + + statement.wheres.each_with_index do |o, j| + o.should_receive(:clone).and_return("#{o}#{j}") + end + + dolly = statement.clone + dolly.wheres.should == %w[a0 b1 c2] + end + end +end diff --git a/spec/arel/nodes/insert_statement_spec.rb b/spec/arel/nodes/insert_statement_spec.rb new file mode 100644 index 0000000000..644e3fb192 --- /dev/null +++ b/spec/arel/nodes/insert_statement_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +describe Arel::Nodes::InsertStatement do + describe "#clone" do + it "clones columns and values" do + statement = Arel::Nodes::InsertStatement.new + statement.columns = %w[a b c] + statement.values = %w[x y z] + + statement.columns.each_with_index do |o, j| + o.should_receive(:clone).and_return("#{o}#{j}") + end + statement.values.each_with_index do |o, j| + o.should_receive(:clone).and_return("#{o}#{j}") + end + + dolly = statement.clone + dolly.columns.should == %w[a0 b1 c2] + dolly.values.should == %w[x0 y1 z2] + end + end +end diff --git a/spec/arel/nodes/select_core_spec.rb b/spec/arel/nodes/select_core_spec.rb new file mode 100644 index 0000000000..cf717a3904 --- /dev/null +++ b/spec/arel/nodes/select_core_spec.rb @@ -0,0 +1,23 @@ +require 'spec_helper' + +describe Arel::Nodes::SelectCore do + describe "#clone" do + it "clones froms, projections and wheres" do + core = Arel::Nodes::SelectCore.new + core.instance_variable_set "@froms", %w[a b c] + core.instance_variable_set "@projections", %w[d e f] + core.instance_variable_set "@wheres", %w[g h i] + + [:froms, :projections, :wheres].each do |array_attr| + core.send(array_attr).each_with_index do |o, j| + o.should_receive(:clone).and_return("#{o}#{j}") + end + end + + dolly = core.clone + dolly.froms.should == %w[a0 b1 c2] + dolly.projections.should == %w[d0 e1 f2] + dolly.wheres.should == %w[g0 h1 i2] + end + end +end diff --git a/spec/arel/nodes/select_statement_spec.rb b/spec/arel/nodes/select_statement_spec.rb new file mode 100644 index 0000000000..a024710c78 --- /dev/null +++ b/spec/arel/nodes/select_statement_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe Arel::Nodes::SelectStatement do + describe "#clone" do + it "clones cores" do + statement = Arel::Nodes::SelectStatement.new %w[a b c] + + statement.cores.each_with_index do |o, j| + o.should_receive(:clone).and_return("#{o}#{j}") + end + + dolly = statement.clone + dolly.cores.should == %w[a0 b1 c2] + end + end +end diff --git a/spec/arel/nodes/update_statement_spec.rb b/spec/arel/nodes/update_statement_spec.rb new file mode 100644 index 0000000000..8cbca1fd73 --- /dev/null +++ b/spec/arel/nodes/update_statement_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +describe Arel::Nodes::UpdateStatement do + describe "#clone" do + it "clones wheres and values" do + statement = Arel::Nodes::UpdateStatement.new + statement.wheres = %w[a b c] + statement.values = %w[x y z] + + statement.wheres.each_with_index do |o, j| + o.should_receive(:clone).and_return("#{o}#{j}") + end + statement.values.each_with_index do |o, j| + o.should_receive(:clone).and_return("#{o}#{j}") + end + + dolly = statement.clone + dolly.wheres.should == %w[a0 b1 c2] + dolly.values.should == %w[x0 y1 z2] + end + end +end diff --git a/spec/arel/select_manager_spec.rb b/spec/arel/select_manager_spec.rb index 331d9714a7..bf4ce2e13f 100644 --- a/spec/arel/select_manager_spec.rb +++ b/spec/arel/select_manager_spec.rb @@ -208,5 +208,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 e70ae2cef3..016b6f69b1 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 |