blob: 9053f292d654d620473c119818233be1f5475d65 (
plain) (
tree)
|
|
require File.join(File.dirname(__FILE__), '..', '..', '..', 'spec_helper')
module ActiveRelation
describe Update do
before do
@relation = Table.new(:users)
end
describe '#to_sql' do
describe 'when given values whose types correspond to the types of the attributes' do
before do
@update = Update.new(@relation, @relation[:name] => "nick".bind(@relation))
end
it 'manufactures sql updating attributes' do
@update.to_sql.should be_like("
UPDATE `users`
SET `users`.`name` = 'nick'
")
end
end
describe 'when given values whose types differ from from the types of the attributes' do
before do
@update = Update.new(@relation, @relation[:id] => '1-asdf'.bind(@relation))
end
it 'manufactures sql updating attributes' do
@update.to_sql.should be_like("
UPDATE `users`
SET `users`.`id` = 1
")
end
end
describe 'when the relation is a selection' do
before do
@update = Update.new(
@relation.select(@relation[:id].eq(1)),
@relation[:name] => "nick".bind(@relation)
)
end
it 'manufactures sql updating a selection relation' do
@update.to_sql.should be_like("
UPDATE `users`
SET `users`.`name` = 'nick'
WHERE `users`.`id` = 1
")
end
end
end
describe '#call' do
before do
@update = Update.new(@relation, @relation[:name] => "nick".bind(@relation))
end
it 'executes an update on the connection' do
mock(connection = Object.new).update(@update.to_sql)
@update.call(connection)
end
end
end
end
|