I've now located where this is going wrong, though I am not yet sure how to fix it.

In rails' integration.rb, there is a method called 'process'. around line 226. It mangles the parameters by calling:
          data = requestify(parameters)

doing:
          puts "\n1----===#{parameters.inspect}"
          puts "\n2----===#{data.inspect}"

a bit later reveals the problem:
1----==={:quick_file=>{:filename=>"file- TFile.txt", :uploaded_data=>#<ActionController::TestUploadedFile: 0x3434150 @content_type="text/plain", @tempfile=#<File:/tmp/ test_upload29259-0.txt>, @original_filename="test_upload.txt">}, :quick_folder=> {:id=>1330}, :request_type=>"xml"}

2----==="quick_file%5Bfilename%5D=file-TFile.txt&quick_file% 5Buploaded_data%5D=%23%3CActionController%3A%3ATestUploadedFile% 3A0x3434150%3E&quick_folder%5Bid%5D=1330&request_type=xml"

Obviously that's not going to work. I wonder how Test::Unit does it, then, though...

Daniel

On 11 Dec 2007, at 14:54 11 Dec 2007, Daniel Tenner wrote:

Hi Luis,

I read through that thread, but unfortunately it wasn't much help.

fixture_file_upload also creates an ActionController::TestUploadedFile. It's is just a shortcut to ActionController::TestUploadedFile.new.

There's no problem with the path - it creates the fixture and loads the file, and has the right values inside if I inspect the params directly before posting them:

{:filename=>"file- TFile.txt", :uploaded_data=>#<ActionController::TestUploadedFile: 0x33f83bc @content_type=#<Mime::Type:0x10e2490 @symbol=:text, @synonyms=[], @string="text/plain">, @tempfile=#<File:/tmp/ test_upload29049-0.txt>, @original_filename="test_upload.txt">}

It's only once this is passed into the controller that it all gets to_s'ed.

I like the idea of 'providing a real file upload', but I'm not sure how to do that in a Story... if anyone has any suggestions or pointers, they would be welcome!

Thanks,

Daniel

On 11 Dec 2007, at 14:39 11 Dec 2007, Luis Lavena wrote:

On Dec 11, 2007 10:57 AM, Daniel Tenner <[EMAIL PROTECTED]> wrote:

I've pasted up the code at:

http://pastie.caboo.se/126925

Since there are quite a few files involved.

Thanks for your time,


A similar discussion was raised back in november (about fixture_file_upload):

http://rubyforge.org/pipermail/rspec-users/2007-November/004378.html

Instead of mocking the FileUpload, why not provide a real one?

After all, the StoryRunner is aimed to fully exercise your code :-D

Also, adjust the path of your TestFileUpload file location, instead of
a relative one (../spec/fixtures) provide one related to RAILS_ROOT,
which will work no matter where you put your helper or what is your
current directory (Dir.chdir).

HTH,

--
Luis Lavena
Multimedia systems
-
A common mistake that people make when trying to design
something completely foolproof is to underestimate
the ingenuity of complete fools.
Douglas Adams
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to