aboutsummaryrefslogtreecommitdiffstats
path: root/spec/arel/insert_manager_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/arel/insert_manager_spec.rb')
-rw-r--r--spec/arel/insert_manager_spec.rb94
1 files changed, 94 insertions, 0 deletions
diff --git a/spec/arel/insert_manager_spec.rb b/spec/arel/insert_manager_spec.rb
new file mode 100644
index 0000000000..073c9c30cb
--- /dev/null
+++ b/spec/arel/insert_manager_spec.rb
@@ -0,0 +1,94 @@
+require 'spec_helper'
+
+module Arel
+ describe 'insert manager' do
+ describe 'new' do
+ it 'takes an engine' do
+ Arel::InsertManager.new Table.engine
+ end
+ end
+
+ describe 'insert' do
+ it 'takes a list of lists' do
+ table = Table.new(:users)
+ manager = Arel::InsertManager.new Table.engine
+ manager.into table
+ manager.insert [[table[:id], 1], [table[:name], 'aaron']]
+ manager.to_sql.should be_like %{
+ INSERT INTO "users" ("users"."id", "users"."name") VALUES (1, 'aaron')
+ }
+ end
+
+ it 'defaults the table' do
+ table = Table.new(:users)
+ manager = Arel::InsertManager.new Table.engine
+ manager.insert [[table[:id], 1], [table[:name], 'aaron']]
+ manager.to_sql.should be_like %{
+ INSERT INTO "users" ("users"."id", "users"."name") VALUES (1, 'aaron')
+ }
+ end
+
+ it 'takes an empty list' do
+ manager = Arel::InsertManager.new Table.engine
+ manager.insert []
+ end
+ end
+
+ describe 'into' do
+ it 'takes an engine' do
+ manager = Arel::InsertManager.new Table.engine
+ manager.into(Table.new(:users)).should == manager
+ end
+
+ it 'converts to sql' do
+ table = Table.new :users
+ manager = Arel::InsertManager.new Table.engine
+ manager.into table
+ manager.to_sql.should be_like %{
+ INSERT INTO "users"
+ }
+ end
+ end
+
+ describe 'columns' do
+ it "converts to sql" do
+ table = Table.new :users
+ manager = Arel::InsertManager.new Table.engine
+ manager.into table
+ manager.columns << table[:id]
+ manager.to_sql.should be_like %{
+ INSERT INTO "users" ("users"."id")
+ }
+ end
+ end
+
+ describe "values" do
+ it "converts to sql" do
+ table = Table.new :users
+ manager = Arel::InsertManager.new Table.engine
+ manager.into table
+
+ manager.values << 1
+ manager.to_sql.should be_like %{
+ INSERT INTO "users" VALUES (1)
+ }
+ end
+ end
+
+ describe "combo" do
+ it "puts shit together" do
+ table = Table.new :users
+ manager = Arel::InsertManager.new Table.engine
+ manager.into table
+
+ manager.values << 1
+ manager.values << "aaron"
+ manager.columns << table[:id]
+ manager.columns << table[:name]
+ manager.to_sql.should be_like %{
+ INSERT INTO "users" ("users"."id", "users"."name") VALUES (1, 'aaron')
+ }
+ end
+ end
+ end
+end