Im wondering what is the best way of specing action with send file
such as:
def download
log = ActivityLog.find(params[:id])
if log
send_file log.path
else
flash[:notice] = _(“Log file “#{params[:id]}” was not found.”)
redirect_to :action => ‘index’
end
end
You can see that the ActivityLog class is not inherited from AR and
the path dependes on specified ID.
Im wondering what is the best way of specing action with send file
such as:
I’d probably do it on two fronts. On the unit test level, you can
stub it in your setup so that it won’t try to send that file every
time you run tests, then mock it in one particular spec with
“[yourcontroller].should_receive(:send_file).with([your params])” to
make sure it’s getting called with the right values.
In your integration tests (with RSpec or Cucumber or Selenium or
trained gerbils or whatever), have it actually send the file. Then,
if you’re using RSpec or Cucumber with Webrat, you can check the
response object to make sure it has the right length, the right
content-type, and if you want to be thorough, do a checksum on the
body to make sure the right stuff was sent.
If you’re using Selenium, life’s even better: you can look to make
sure that the file showed up in your Downloads directory (set your
browser to not prompt you on that file type first) and checksum the
actual file as it was actually saved.
make sure it’s getting called with the right values.
browser to not prompt you on that file type first) and checksum the
rspec-users mailing list [email protected]://rubyforge.org/mailman/listinfo/rspec-users
Aha, it seems that there is difference between behavior of Rails 2.1
and 2.3. In Rails 2.1 stubbing works like a charm but it fails with
Rails 2.3
Aha, it seems that there is difference between behavior of Rails 2.1
and 2.3. In Rails 2.1 stubbing works like a charm but it fails with
Rails 2.3
That’s a very general statement. Can you be more specific? What
version of rspec are you using? Are you using rspec’s mock/stub
framework? What sort of failure messages do you get?
I’m using rspec-rails 1.1.12, I’m using just rspec’s mock/stub
framework.
With Rails 2.3 RC1 I experienced errors such as:
ActionView::MissingTemplate in ‘LogsController handling GET /logs/
test.log/download should find the log requested’
Missing template logs/download.erb in view path app/views
Of course this template was not found since it is not necessary for
normal app run. With Rails 2.1 the same spec passes.