У меня есть ограниченный маршрут, который соответствует именам пользователей, например:
controller :users, :path => '/:username', :as => :user, :constrain => { :username => /^_?[a-z]_?(?:[a-z0-9]_?)*$/i } do
# lots of nested routes go here
end
Когда я собираюсь написать для этого тесты RSpec (вместо использования user_id
, как обычно), все тесты терпят неудачу, потому что этоне удается найти маршрут ", хотя он отлично работает на сервере.
describe "for an invalid request" do
it "should render a 404 if an associated photo is not found" do
# give it a bad photo id
xhr :post, :destroy, :id => "999999", :photo_id => "999999", :username => @photo_owner.username
# not found
response.status.should == not_found
end
end
Этот тест работал нормально, когда я использовал user_id
в своих маршрутах до перехода на имена пользователей:
resources :users do
# nested routes
end
и
xhr :post, :destroy, :id => "999999", :photo_id => "999999", :user_id => @photo_owner.id
Так что я делаю не так и что изменилось?
Моя консоль сервера показывает это, что означает, что все параметры должны быть переданы правильно:
Processing by TagsController#destroy as JS
Parameters: {"constrain"=>{"username"=>/^_?[a-z]_?(?:[a-z0-9]_?)*$/i}, "username"=>"rubynewb", "photo_id"=>"2004-the-title-of-the-photo-here", "id"=>"1797"}