# frozen_string_literal: true

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
    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" => "s3cr3t", :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
