Удобные хелперы для мок-объектов RSpec

Posted by Dmytro Shteflyuk on under Ruby & Rails · English (25,697 views)

В RSpec есть такая замечательная штука, как мок-объекты (mocks). В двух словах: мок-объект имитирует поведение объекта, который используется тестируемыми методами. Сразу простой пример:

1
2
3
4
5
6
7
8
9
10
describe UserHelper
  it 'should generate correct link to user profile in user_link' do
    @user = mock('User')
    @user.stub!(:id, 10)
    @user.stub!(:new_record?, false)
    @user.stub!(:preferred_name, 'Dmytro S.')
    @user.stub!(:full_name, 'Dmytro Shteflyuk')
    user_link(@user).should == link_to('Dmytro S.', user_url(:id => 10), :title => 'Dmytro Shteflyuk')
  end
end

Read the rest of entry »

Использование подзапросов во избежание лишних обращений к БД в Rails

Posted by Dmytro Shteflyuk on under Ruby & Rails · English (13,036 views)

Во время работы над Best Tech Videos с Alexey Kovyrin, мы столкнулись с проблемой фильтрации видео по категории, с выбором категорий видео в том же запросе. Решилось быстро, но в коде появилась маленькая хитрость с запросом.

Read the rest of entry »

validates_uniqueness_of and MySQL unique index

Posted by Dmytro Shteflyuk on under Ruby & Rails · English (17,775 views)

Вчера в русскоязычной рассылке по RoR обсуждалась следующая проблема. MySQL поддерживает уникальные индексы, а модели – ограничение validates_uniqueness_of. Нужно ли нам обрабатывать исключения MySQL, или валидации RoR достаточно?

Read the rest of entry »