require 'test_helper' class HydrantsControllerTest < ActionController::TestCase include Devise::TestHelpers setup do @hydrant = hydrants(:hydrant_1) @user = users(:erik) end test 'should thank the user if the user the hydrant is adopted by the user' do sign_in @user @hydrant.user_id = @user.id @hydrant.save! get :show, :hydrant_id => @hydrant.id assert_not_nil assigns :hydrant assert_response :success assert_template 'users/thank_you' assert_select 'h2', 'Thank you for adopting this hydrant!' assert_select 'form#edit_profile_form' do assert_select '[action=?]', '/users/edit' assert_select '[method=?]', 'get' end assert_select 'input[name="commit"]' do assert_select '[type=?]', 'submit' assert_select '[value=?]', 'Edit profile' end assert_select 'form#abandon_form' do assert_select '[action=?]', "/hydrant.#{@hydrant.id}" assert_select '[method=?]', 'post' end assert_select 'input[name="_method"]' do assert_select '[type=?]', 'hidden' assert_select '[value=?]', 'put' end assert_select 'input[name="commit"]' do assert_select '[type=?]', 'submit' assert_select '[value=?]', 'Abandon this hydrant' end assert_select 'form#sign_out_form' do assert_select '[action=?]', '/hydrant' assert_select '[method=?]', 'post' end assert_select 'input[name="commit"]' do assert_select '[type=?]', 'submit' assert_select '[value=?]', 'Sign out' end end test 'should show the profile if the hydrant is adopted' do @hydrant.user_id = @user.id @hydrant.save! get :show, :hydrant_id => @hydrant.id assert_not_nil assigns :hydrant assert_response :success assert_template 'users/profile' assert_select 'h2', "This hydrant has been adopted by #{@user.name}" assert_select 'h3', "of #{@user.organization}" end test 'should show adoption form if hydrant is not adopted' do sign_in @user get :show, :hydrant_id => @hydrant.id assert_not_nil assigns :hydrant assert_response :success assert_template :adopt assert_select 'h2', 'Adopt this Hydrant' assert_select 'form#adoption_form' do assert_select '[action=?]', "/hydrant.#{@hydrant.id}" assert_select '[method=?]', 'post' end assert_select 'input[name="_method"]' do assert_select '[type=?]', 'hidden' assert_select '[value=?]', 'put' end assert_select 'input[name="commit"]' do assert_select '[type=?]', 'submit' assert_select '[value=?]', 'Adopt!' end assert_select 'form#edit_profile_form' do assert_select '[action=?]', '/users/edit' assert_select '[method=?]', 'get' end assert_select 'input[name="commit"]' do assert_select '[type=?]', 'submit' assert_select '[value=?]', 'Edit profile' end assert_select 'form#sign_out_form' do assert_select '[action=?]', '/hydrant' assert_select '[method=?]', 'post' end assert_select 'input[name="commit"]' do assert_select '[type=?]', 'submit' assert_select '[value=?]', 'Sign out' end end test 'should show sign-in form if signed out' do get :show, :hydrant_id => @hydrant.id assert_not_nil assigns :hydrant assert_response :success assert_template 'sessions/new' assert_select 'form#combo_form' do assert_select '[action=?]', '/hydrant' assert_select '[method=?]', 'post' end assert_select 'h2', 'Adopt this Hydrant' assert_select 'input', :count => 15 assert_select 'label', :count => 10 assert_select 'input[name="commit"]', :count => 3 end # test 'should list hydrants' do # skip 'Cannot test query on sqlite3 test database' # get :list, :format => 'json', :lat => 42.358431, :lng => -71.059773 # assert_not_nil assigns :hydrants # assert_response :success # end test 'should update hydrant' do assert_not_equal 'Birdsill', @hydrant.name put :update, :format => 'json', :id => @hydrant.id, :hydrant => {:name => 'Birdsill'} @hydrant.reload assert_equal 'Birdsill', @hydrant.name assert_not_nil assigns :hydrant assert_response :success end end