Simplified example of a controller which takes a POST with a non-xml
and non-form-urlencoded content type:
class PhotosController < ApplicationController
def create
Photo.create :binary_data => request.body.read, :content_type =>
'image/jpg'
head :ok
end
end
How can I spec this? The way that I'd like to do it would be something
like:
it "creates a new photo from a posted image file" do
Photo.should_receive(:create).with(:binary_data => 'the data',
:content_type => 'image/jpg')
post :create, :body => 'the data'
end
Adam
on 26.04.2008 05:35
on 26.04.2008 10:34
On Apr 25, 2008, at 11:34 PM, "Adam Wiggins" <adam@heroku.com> wrote: > > How can I spec this? The way that I'd like to do it would be > something like: > > it "creates a new photo from a posted image file" do > Photo.should_receive(:create).with(:binary_data => 'the data', > :content_type => 'image/jpg') > post :create, :body => 'the data' > end What happens when you try this?
on 27.04.2008 00:38
On Sat, Apr 26, 2008 at 1:33 AM, David Chelimsky <dchelimsky@gmail.com> wrote: > On Apr 25, 2008, at 11:34 PM, "Adam Wiggins" <adam@heroku.com> wrote: > > it "creates a new photo from a posted image file" do > > Photo.should_receive(:create).with(:binary_data => 'the data', > > :content_type => 'image/jpg') > > post :create, :body => 'the data' > > end > > What happens when you try this? It treats :body as a regular urlencoded parameter. i.e., the body of the POST sent through to the controller is "body=the+data", when I want it to be "the data". There's the matter of content-type too; I left that out in hopes if simplifying the question. The more complete version might be: post :create, :content_type => 'image/jpg', :body => 'the data' But :content_type and :body are not treated as special parameters, so I was wondering if there is some other mechanism for doing this. Adam