У меня есть форма, которая использует плагин jquery-file-upload.Он отправляет сообщения в контроллер, и оба возвращаемых объекта имеют тип json.
Controller
def create
@upload = Upload.new(params[:upload])
if @upload.save
render :json => [ @upload.to_jq_upload ].to_json
else
render :json => [ @upload.to_jq_upload.merge({ :error => "custom_failure" }) ].to_json
end
end
У меня есть следующий тест rspec:
describe "post 'create' " do
before(:each) do
@upload = Factory(:upload)
@attr_upload = {:photo => sample_file}
end
describe "success" do
it "should create a new upload object" do
lambda do
post :create, :upload => @attr_upload, :format => :json
end.should change(Upload, :count).by(1)
end
end
end
, который работает.Я хотел бы проверить оба на наличие ошибок, так как в форме была опубликована без файла или файл был слишком большой или неправильного формата.
Вот мой тест.
describe "failure" do
before(:each) do
@upload = Factory(:upload)
@attr_upload = {:photo => sample_file("too_big.jpg")}
end
it "should not create a new upload object" do
lambda do
post :create, :upload => @attr_upload, :format => :json
end.should_not change(Upload, :count).by(1)
end
end
Это не работает.Вот ошибка:
ActionController::RoutingError:
No route matches {:action=>"show", :controller=>"uploads", :id=>#<Upload id: nil, created_at: nil, updated_at: nil, photo_file_name: "too_big.jpg", photo_content_type: "image/jpeg", photo_file_size: 7483326, photo_updated_at: "2011-07-19 02:24:06">}
Вот мой файл маршрутов:
Hbg::Application.routes.draw do
resources :uploads
end
Почему я получаю эту ошибку, когда отправляю форму в действие 'create'?Ответ должен быть объектом json.