Forum: RSpec specing send_file

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
0930ba88f6a56b4fb041590a4e83e845?d=identicon&s=25 vo.x (Guest)
on 2009-02-23 17:15
(Received via mailing list)
Hello everybody!

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.

Thank you in advance.

Vit
994e42bda994be2cd1d791f18ee6d561?d=identicon&s=25 Stephen Eley (Guest)
on 2009-02-23 18:25
(Received via mailing list)
On Fri, Feb 20, 2009 at 5:45 PM, vo.x <v.ondruch@gmail.com> wrote:
> Hello everybody!
>
> 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.

Does that make sense?



--
Have Fun,
   Steve Eley (sfeley@gmail.com)
   ESCAPE POD - The Science Fiction Podcast Magazine
   http://www.escapepod.org
0930ba88f6a56b4fb041590a4e83e845?d=identicon&s=25 vo.x (Guest)
on 2009-02-25 15:33
(Received via mailing list)
On 23 Ún, 17:30, Stephen Eley <sfe...@gmail.com> wrote:
> 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
> rspec-us...@rubyforge.orghttp://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 :/

Vit
5d38ab152e1e3e219512a9859fcd93af?d=identicon&s=25 David Chelimsky (Guest)
on 2009-02-25 16:27
(Received via mailing list)
On Wed, Feb 25, 2009 at 8:20 AM, vo.x <v.ondruch@gmail.com> wrote:
> 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?
0930ba88f6a56b4fb041590a4e83e845?d=identicon&s=25 vo.x (Guest)
on 2009-02-26 15:21
(Received via mailing list)
On 25 Ún, 16:18, David Chelimsky <dchelim...@gmail.com> wrote:
> rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
Hello David,

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.

Vit
5d38ab152e1e3e219512a9859fcd93af?d=identicon&s=25 David Chelimsky (Guest)
on 2009-02-26 15:40
(Received via mailing list)
On Thu, Feb 26, 2009 at 7:13 AM, vo.x <v.ondruch@gmail.com> wrote:
>> rspec-users mailing list
>> rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
>
> Hello David,
>
> 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:

rspec-rails 1.1.12 does not support rails 2.3

Please use the latest source from github

http://wiki.github.com/dchelimsky/rspec/rails-230
0930ba88f6a56b4fb041590a4e83e845?d=identicon&s=25 vo.x (Guest)
on 2009-02-28 19:31
(Received via mailing list)
Uhh, sorry ... I will give it a try! Thank you for your help.

Vit
This topic is locked and can not be replied to.