title: How to test send_data in RSpec? Or...what should I be testing for in this case?
body: <p>What's the best way to test the following code using RSpec? And what should I be testing for? The show action opens a file and streams it. Also, if the action relies on a file existing somewhere, can I test that? </p>
  
  <pre><code>def show
    image_option = params[:image_option]
    respond_to do |format|
      format.js
      format.pdf {open_bmap_file("#{@bmap.bmap_pdf_file}", 'application/pdf', "#{@bmap.bmap_name}.pdf", "pdf", "pdf")}
      format.png {open_bmap_file("#{@bmap.bmap_png_file}", 'image/png', "#{@bmap.bmap_name}.png", "png", image_option)}
    end
  end
  
  private
  
  def open_bmap_file(filename, application_type, send_filename, format, image_option = nil)
    filename = "app/assets/images/image_not_available_small.png" unless File.exist? filename
    path = Bmap.bmaps_pngs_path
  
  case image_option
    when "image"
      filename = "#{@bmap.bmap_name}.png"
    when "large_thumbnail"
      filename = "#{@bmap.bmap_name}_large_thumb.png"
    when "thumbnail"
      filename = "#{@bmap.bmap_name}_thumb.png"
    when "pdf"
      filename = "#{@bmap.bmap_name}.pdf"
      path = Bmap.bmaps_pdfs_path
    else
      filename = "#{@bmap.bmap_name}.pdf"
      path = Bmap.bmaps_pdfs_path
  end
  
  begin
    File.open(path + filename, 'rb') do |f|
      send_data f.read, :disposition =&gt; image_option == "pdf" ? 'attachment' : 'inline', :type =&gt; application_type, :filename =&gt; send_filename
    end
  rescue
    flash[:error] = 'File not found.'
    redirect_to root_url
  end
  </code></pre>