-require 'test_helper'
-
-class UserDiariesTest < ActionController::IntegrationTest
- fixtures :users, :diary_entries
+require "test_helper"
+class UserDiariesTest < ActionDispatch::IntegrationTest
+ # Test the creation of a diary entry, making sure that you are redirected to
+ # login page when not logged in
def test_showing_create_diary_entry
- get '/user/test/diary/new'
- assert_response 302
- assert_redirected_to :controller => :user, :action => "login", :referer => "/user/test/diary/new"
- #follow_redirect
- # Now login
- #post :login, :user_email => "test@openstreetmap.org", :user_password => "test"
- #
- #get :controller => :users, :action => :new
- #assert_response :success
- #print @response.to_yaml
- #assert_select "html" do
- # assert_select "body" do
- # assert_select "div#content" do
- # assert_select "form" do
- # assert_select "input[id=diary_entry_title]"
- # end
- # end
- # end
- #end
-
+ user = create(:user)
+
+ get "/diary/new"
+ follow_redirect!
+ follow_redirect!
+ # We should now be at the login page
+ assert_response :success
+ assert_template "sessions/new"
+ # We can now login
+ post "/login", :params => { "username" => user.email, "password" => "test", :referer => "/diary/new" }
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "diary_entries/new"
+
+ # We will make sure that the form exists here, full
+ # assert testing of the full form should be done in the
+ # functional tests rather than this integration test
+ # There are some things that are specific to the integratio
+ # that need to be tested, which can't be tested in the functional tests
+ assert_select "div.content-heading", :count => 1 do
+ assert_select "h1", "New Diary Entry"
+ end
+ assert_select "div#content" do
+ assert_select "form[action='/diary']" do
+ assert_select "input[id=diary_entry_title]"
+ end
+ end
end
end