diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/active_relation/unit/relations/deletion_spec.rb | 10 | ||||
-rw-r--r-- | spec/active_relation/unit/relations/insertion_spec.rb | 32 | ||||
-rw-r--r-- | spec/active_relation/unit/relations/update_spec.rb | 19 | ||||
-rw-r--r-- | spec/spec_helper.rb | 12 |
4 files changed, 53 insertions, 20 deletions
diff --git a/spec/active_relation/unit/relations/deletion_spec.rb b/spec/active_relation/unit/relations/deletion_spec.rb index 71ddd8d820..72f3f81b2a 100644 --- a/spec/active_relation/unit/relations/deletion_spec.rb +++ b/spec/active_relation/unit/relations/deletion_spec.rb @@ -21,6 +21,16 @@ module ActiveRelation WHERE `users`.`id` = 1 ") end + + it "manufactures sql deleting a ranged relation" do + pending do + Deletion.new(@relation[0..0]).to_sql.should be_like(" + DELETE + FROM `users` + LIMIT 1 + ") + end + end end describe '#call' do diff --git a/spec/active_relation/unit/relations/insertion_spec.rb b/spec/active_relation/unit/relations/insertion_spec.rb index e01e7792e2..e1718e3b25 100644 --- a/spec/active_relation/unit/relations/insertion_spec.rb +++ b/spec/active_relation/unit/relations/insertion_spec.rb @@ -7,44 +7,54 @@ module ActiveRelation end describe '#to_sql' do - describe 'when given values whose types correspond to the types of the attributes' do - before do - @insertion = Insertion.new(@relation, @relation[:name] => "nick") + it 'manufactures sql inserting data when given multiple rows' do + pending do + @insertion = Insertion.new(@relation, [@relation[:name] => "nick", @relation[:name] => "bryan"]) + + @insertion.to_sql.should be_like(" + INSERT + INTO `users` + (`users`.`name`) VALUES ('nick'), ('bryan') + ") end + end + + it 'manufactures sql inserting data when given multiple values' do + pending do + @insertion = Insertion.new(@relation, @relation[:id] => "1", @relation[:name] => "nick") - it 'manufactures sql inserting data' do @insertion.to_sql.should be_like(" INSERT INTO `users` - (`users`.`name`) VALUES ('nick') + (`users`.`name`, `users`.`id`) VALUES ('nick', 1) ") end end - describe 'when given values whose types differ from from the types of the attributes' do + describe 'when given values whose types correspond to the types of the attributes' do before do - @insertion = Insertion.new(@relation, @relation[:id] => '1-asdf') + @insertion = Insertion.new(@relation, @relation[:name] => "nick") end it 'manufactures sql inserting data' do @insertion.to_sql.should be_like(" INSERT INTO `users` - (`users`.`id`) VALUES (1) + (`users`.`name`) VALUES ('nick') ") end end - describe 'when given values whose types correspond to the type of the attribtues' do + describe 'when given values whose types differ from from the types of the attributes' do before do - @insertion = Insertion.new(@relation, @relation[:name] => "nick") + @insertion = Insertion.new(@relation, @relation[:id] => '1-asdf') end it 'manufactures sql inserting data' do @insertion.to_sql.should be_like(" INSERT INTO `users` - (`users`.`name`) VALUES ('nick') + (`users`.`id`) VALUES (1) ") end end diff --git a/spec/active_relation/unit/relations/update_spec.rb b/spec/active_relation/unit/relations/update_spec.rb index 5c234fe759..6634dc67d1 100644 --- a/spec/active_relation/unit/relations/update_spec.rb +++ b/spec/active_relation/unit/relations/update_spec.rb @@ -7,6 +7,25 @@ module ActiveRelation end describe '#to_sql' do + it "manufactures sql updating attributes when given multiple attributes" do + pending do + Update.new(@relation, @relation[:id] => 1, @relation[:name] => "nick").to_sql.should be_like(" + UPDATE `users` + SET `users`.`name` = 'nick', `users`.`id` = 1 + ") + end + end + + it "manufactures sql updating attributes when given a ranged relation" do + pending do + Update.new(@relation[0..0], @relation[:name] => "nick").to_sql.should be_like(" + UPDATE `users` + SET `users`.`name` = 'nick' + LIMIT 1 + ") + end + end + describe 'when given values whose types correspond to the types of the attributes' do before do @update = Update.new(@relation, @relation[:name] => "nick") diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 4b61ae8ca8..b633d17257 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -6,15 +6,9 @@ $LOAD_PATH.unshift "#{dir}/../lib" Dir["#{dir}/matchers/*"].each { |m| require "#{dir}/matchers/#{File.basename(m)}" } require 'active_relation' -ActiveRecord::Base.configurations = { - 'test' => { - :adapter => 'mysql', - :username => 'root', - :password => 'password', - :encoding => 'utf8', - :database => 'sql_algebra_test', - }, -} +FileUtils.cp("#{dir}/../config/database.yml.example", "#{dir}/../config/database.yml") unless File.exist?("#{dir}/../config/database.yml") + +ActiveRecord::Base.configurations = YAML::load(IO.read("#{dir}/../config/database.yml")) ActiveRecord::Base.establish_connection 'test' class Hash |