The problem is don't know the basics of testing. Learn the basics first, here is a free coupon to learn TDD in Ruby : https://www.udemy.com/learn-test-driven-development-in-ruby/?couponCode=railsfree On Thursday, December 25, 2014 at 10:45:57 AM UTC-8, Bazley wrote: > > I have the following test: test/integration/authentication_test.rb: > > require 'test_helper' > class AuthenticationTest < ActionDispatch::IntegrationTest > > def setup > @admin = users(:barry) # grab user from fixtures > end > > test "trying to view a user before logging in" do > get user_path(@admin) > assert_template 'sessions/new' > assert_not flash.empty? > assert_select "div#error_explanation" > assert_select "div.field_with_errors" > assert_select "a[href=?]", logout_path, count: 0 > assert_not is_logged_in? > endend > > The test fails with the following error: > > FAIL["test_trying_to_view_a_user_before_logging_in", AuthenticationTest, > 2.206536] test_trying_to_view_a_user_before_logging_in#AuthenticationTest > (2.21s) > expecting <"sessions/new"> but rendering with <[]> > test/integration/authentication_test.rb:11:in `block in > <class:AuthenticationTest>' > > Relevant bits of the users_controller.rb: > > class UsersController < ApplicationController > > before_action :logged_in_user, only: [:index, :show, :edit, :update, > :destroy] > > def show > @user = User.find_by_callsign(params[:callsign]) > @page_name = "user_page" > redirect_to root_url and return unless @user.activated > end > . > .end > > sessions_helper.rb: > > def logged_in_user > unless logged_in? > store_location > flash[:danger] = "Please log in." > redirect_to login_url > endend > def logged_in? > !current_user.nil?end > > In routes.rb: > > get 'login', to: 'sessions#new' > > I don't understand why the test is failing. When I perform the steps > manually it all works. Is there a known issue with assert_template? When I > comment out assert_template 'sessions/new' in the test, it passes. > > In log/test.log: it is indeed redirecting to the correct template > (Redirected tohttp://www.example.com/dominos/newname). But it doesn't > have any 'rendered' lines. The last few lines of the failed test are: > > Redirected to http://www.example.com/dominos/newnameCompleted 302 Found in > 21ms (ActiveRecord: 2.5ms) > [1m[35m (0.4ms)[0m SELECT COUNT(*) FROM "personas" > [1m[36m (0.2ms)[0m [1mROLLBACK[0m > > In the test.log file for successful tests involving assert_template, there > are various 'Rendered' lines following a redirect, for example: > > Rendered personas/new.html.erb within layouts/application (2.0ms) > > Is this perhaps part of why the test is failing? Why does the page not > render? >
-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/2831a22c-4d15-4bd3-835f-52223af05c2f%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.