Я бы предпочел проверить это с помощью запроса и проверки результатов, но если вам действительно нужно это сделать, одним из возможных решений было бы что-то вроде этого для Rails 3:
CatMembership.scoped.to_sql.should == CatMembership.order(:created_at).to_sql
И на Rails 2:
CatMembership.default_scoping.should == [{:create=>{}, :find=>{:order=>"created_at"}}]
Но я бы не сказал, что эти решения идеальны, так как они показывают много знаний о реализации (и вы можете видеть, что реализация зависит от версии Rails).
Созданиедемонстрационные данные, выполняющие обычный запрос all и проверяющие правильность упорядоченного результата, могли бы быть проще, приблизиться к реальному модульному тестированию и работать даже при обновлении версии rails.
В этом случае это может быть:
before do
@memberships = []
@memberships << CatMembership.create!
@memberships << CatMembership.create!
@memberships << CatMembership.create!
[ 1.hour.ago, 5.minutes.ago, 1.minute.ago ].each_with_index do |time, index|
membership = @memberships[index]
membership.created_at = time
membership.save
end
end
it 'should be correctly ordered' do
@sorted_memberships = CatMembership.all
@memberships.first.should == @sorted_memberships.last
@memberships.second.should == @sorted_memberships.second
@memberships.third.should == @sorted_memberships.first
end
Это гораздо более многословно, но оно будет работать, даже если вы двигаетесь вперед по рельсам.
И теперь я только что заметил, кто спросилвопрос: D