diff options
author | Kir Shatrov <shatrov@me.com> | 2017-05-21 13:12:08 +0100 |
---|---|---|
committer | Kir Shatrov <shatrov@me.com> | 2017-05-22 15:03:36 +0100 |
commit | 5e6312e1745dc278ba0a99bf2bc7b78977785d35 (patch) | |
tree | 88a91eaf40b79c1c06e211b59a7e28daeba852e7 /test/test_insert_manager.rb | |
parent | 03a2de4d063f52250105c08c0c05d64c5d42561d (diff) | |
download | rails-5e6312e1745dc278ba0a99bf2bc7b78977785d35.tar.gz rails-5e6312e1745dc278ba0a99bf2bc7b78977785d35.tar.bz2 rails-5e6312e1745dc278ba0a99bf2bc7b78977785d35.zip |
Support INSERT with multiple values
Diffstat (limited to 'test/test_insert_manager.rb')
-rw-r--r-- | test/test_insert_manager.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/test/test_insert_manager.rb b/test/test_insert_manager.rb index 97317791fe..8b61a2791e 100644 --- a/test/test_insert_manager.rb +++ b/test/test_insert_manager.rb @@ -28,6 +28,60 @@ module Arel } end + it 'works with multiple values' do + table = Table.new(:users) + manager = Arel::InsertManager.new + manager.into table + + manager.columns << table[:id] + manager.columns << table[:name] + + manager.values = manager.create_values_list([ + %w{1 david}, + %w{2 kir}, + ["3", Arel.sql('DEFAULT')], + ]) + + manager.to_sql.must_be_like %{ + INSERT INTO \"users\" (\"id\", \"name\") VALUES ('1', 'david'), ('2', 'kir'), ('3', DEFAULT) + } + end + + it 'literals in multiple values are not escaped' do + table = Table.new(:users) + manager = Arel::InsertManager.new + manager.into table + + manager.columns << table[:name] + + manager.values = manager.create_values_list([ + [Arel.sql('*')], + [Arel.sql('DEFAULT')], + ]) + + manager.to_sql.must_be_like %{ + INSERT INTO \"users\" (\"name\") VALUES (*), (DEFAULT) + } + end + + it 'works with multiple single values' do + table = Table.new(:users) + manager = Arel::InsertManager.new + manager.into table + + manager.columns << table[:name] + + manager.values = manager.create_values_list([ + %w{david}, + %w{kir}, + [Arel.sql('DEFAULT')], + ]) + + manager.to_sql.must_be_like %{ + INSERT INTO \"users\" (\"name\") VALUES ('david'), ('kir'), (DEFAULT) + } + end + it "inserts false" do table = Table.new(:users) manager = Arel::InsertManager.new |