4cod
...@gmail.com> wrote:
> Hello,
> I'm having problems testing prawn/prawnto inside my rails application.
> I added a simple test to check if the controller is generating a pdf
> file, but I'm having a weird error, it is complaining about a
> nil.downcase exception, even with an empty template. BUT it is working
> in the web browser, so the problem must be in the test code, can you
> help me?
> Versions:
> prawn (0.4.1)
> prawn-format (0.1.1)
> rails (2.3.2)
> prawnto plugin latest version from github
> I made a new rails project with the following code:
> 1) Error:
> test_should_show_book_pdf(BooksControllerTest):
> ActionView::TemplateError: You have a nil object when you didn't
> expect it!
> The error occurred while evaluating nil.downcase
> On line #1 of app/views/books/show.pdf.prawn
> 1: pdf.text "Book"
> app/views/books/show.pdf.prawn:1:in
> `_run_prawn_app47views47books47show46pdf46prawn'
> app/controllers/books_controller.rb:21:in `show'
> app/controllers/books_controller.rb:18:in `show'
> /test/functional/books_controller_test.rb:29:in
> `test_should_show_book_pdf'
> /usr/lib/ruby/1.8/test/unit/testsuite.rb:34:in `run'
> /usr/lib/ruby/1.8/test/unit/testsuite.rb:33:in `each'
> /usr/lib/ruby/1.8/test/unit/testsuite.rb:33:in `run'
> /usr/lib/ruby/1.8/test/unit/testsuite.rb:34:in `run'
> /usr/lib/ruby/1.8/test/unit/testsuite.rb:33:in `each'
> /usr/lib/ruby/1.8/test/unit/testsuite.rb:33:in `run'
> /usr/lib/ruby/1.8/test/unit/ui/testrunnermediator.rb:46:in
> `run_suite'
> /usr/lib/ruby/1.8/test/unit/ui/console/testrunner.rb:67:in
> `start_mediator'
> /usr/lib/ruby/1.8/test/unit/ui/console/testrunner.rb:41:in
> `start'
> /usr/lib/ruby/1.8/test/unit/ui/testrunnerutilities.rb:29:in
> `run'
> /usr/lib/ruby/1.8/test/unit/autorunner.rb:216:in `run'
> /usr/lib/ruby/1.8/test/unit/autorunner.rb:12:in `run'
> /usr/lib/ruby/1.8/test/unit.rb:278
> rake (0.8.7) lib/rake/rake_test_loader.rb:5
> In environment.rb I have:
> config.gem "prawn"
> config.gem "prawn-format", :lib => 'prawn/format'
> application/views/books/show.pdf.prawn:
> pdf.text "Book"
> application/controllers/books_controller.rb:
> # GET /books/1
> # GET /books/1.xml
> def show
> @book = Book.find(params[:id])
> respond_to do |format|
> format.html # show.html.erb
> format.xml { render :xml => @book }
> format.pdf { render :layout => false }
> end
> end
> test/functionals/books_controller_test.rb:
> test "should show book pdf" do
> get :show, {:id => books(:one).to_param, :format => 'pdf'}
> assert_response :success
> end
> I tried with:
> test "should show book pdf" do
> get :show, {:id => books(:one).to_param, :format => :pdf}
> assert_response :success
> end
> And it was replying with a 406 response code.
> I don't know what else I could try. Can you give me some advice?